πŸ”‘ΠšΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ зависимости Π² SQL: простая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Для создания зависимостСй Π² SQL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ - это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связываСт Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ внСшнСго ΠΊΠ»ΡŽΡ‡Π° Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² SQL:


CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(50)
);

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° "Orders" ΠΈΠΌΠ΅Π΅Ρ‚ внСшний ΠΊΠ»ΡŽΡ‡ "CustomerID", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ "CustomerID" Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "Customers". Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "Orders" Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "Customers".

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ зависимости Π² SQL

SQL (Structured Query Language) - это язык программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для управлСния ΠΈ манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ИспользованиС зависимостСй Π² SQL позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ связи ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ структурированиС Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ зависимости Π² SQL ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ΠΈΠΏΡ‹ зависимостСй

Π’ SQL сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² зависимостСй:

  • Primary Key (ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡) - это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Он обСспСчиваСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Foreign Key (Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡) - это ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связываСт Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Оно устанавливаСт связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»Π΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Check Constraint (ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅) - это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опрСдСляСт допустимыС значСния для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ столбца Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Он позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ограничСния Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.
  • Unique Constraint (УникальноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅) - это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ значСния Π² столбцС ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅ столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ создания зависимостСй

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ создания зависимостСй Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΡ‡Π΅Ρ‚Π° студСнтов ΠΈ ΠΈΡ… ΠΎΡ†Π΅Π½ΠΎΠΊ:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE grades (
    id INT PRIMARY KEY,
    student_id INT,
    FOREIGN KEY (student_id) REFERENCES students(id),
    grade INT
);

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: "students" ΠΈ "grades". Π’Π°Π±Π»ΠΈΡ†Π° "students" содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ студСнтах, Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° "grades" содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΡ… ΠΎΡ†Π΅Π½ΠΊΠ°Ρ…. ΠœΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ сущСствуСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, основанная Π½Π° внСшнСм ΠΊΠ»ΡŽΡ‡Π΅ "student_id" Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "grades", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ "id" Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "students".

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ установили Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти зависимости. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ значСния ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ запросы SQL.

ИспользованиС зависимостСй Π² SQL

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с использованиСм зависимостСй Π² SQL, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Вставка Π΄Π°Π½Π½Ρ‹Ρ…: Если Ρƒ вас Π΅ΡΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° для создания зависимой записи Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • ОбновлСниС Π΄Π°Π½Π½Ρ‹Ρ…: Если Ρƒ вас Π΅ΡΡ‚ΡŒ обновлСния Π² основной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, связтаныС записи Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: Когда Π²Ρ‹ удаляСтС запись ΠΈΠ· основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, всС зависимыС записи Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² соотвСтствии с настройками.
  • Поиск Π΄Π°Π½Π½Ρ‹Ρ…: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ зависимости ΠΈ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ получСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π½ΠΈΡ….

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ зависимостСй Π² SQL - это Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Зависимости ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ структурированиС Π΄Π°Π½Π½Ρ‹Ρ…. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ зависимости, позволяСт Π±ΠΎΠ»Π΅Π΅ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

SQL Π£Ρ€ΠΎΠΊ 7 | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (связСй) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ | Для ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π£Ρ€ΠΎΠΊ 10. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ зависимости. ДСкомпозиция

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. 1,2,3 Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL Inner Join?

πŸ”‘ΠšΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ зависимости Π² SQL: простая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

КомплСксноС руководство: ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ SQL с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· SQL Server Management

Как ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ SQL с сСрвСром: Руководство для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²