ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° цСлостности Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ вопрос ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ANSI, Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½: любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ссылаСмого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ значСния внСшнСго ΠΊΠ»ΡŽΡ‡Π°, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠΊΠ° ΠΎΠ½ Π΅Ρ‰Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ порядки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ²… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° цСлостности Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π Π°Π½Π΅Π΅ Π² ΡΡ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ связи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ полями Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. ПолС snum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, соотвСтствуСт полю snum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ². ПолС cnum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ соотвСтствуСт полю cnum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ². ΠœΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ этот Ρ‚ΠΈΠΏ связи — справочной Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ; ΠΈ Π² Ρ…ΠΎΠ΄Π΅ обсуТдСния, Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ ΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π΅, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ Π²Ρ‹ΡΡΠ½ΠΈΠΌ всС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ прСдписываСтс это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ DML. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ справочна Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ связь ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»Π΅ΠΉ, часто Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, это дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько слоТнСС Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния. По ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ с Π½Π΅ΠΉ ΠΏΠΎΠ»Π½ΠΎΠ΅ знакомство, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°ΡˆΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ эффСктивнСС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ограничСния справочной цСлостности (ΠΊΠ°ΠΊ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ справочной цСлостности ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ), Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ запроса, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ объСдинСния, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ структурированы Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… связСй справочной цСлостности (ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π»ΠΎΡΡŒ Π² Π“Π»Π°Π²Π΅ 8).

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Когда всС значСния Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ прСдставлСны Π² ΠΏΠΎΠ»Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ссылаСтся Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΡΠΌΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями Π΄Π²ΡƒΡ… ΠΏΠΎΠ»Π΅ΠΉ. НапримСр, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ snum ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ². Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ порядка Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ², имССтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΈ ΠΎΠ΄ΠΈΠ½, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ. Π­Ρ‚ΠΎ отобраТаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»Π΅ΠΉ snum ΠΈ cnum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ².

Когда ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ссылаСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΎΠ½ΠΎ называСтся — внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ; Π° ΠΏΠΎΠ»Π΅ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΎ ссылаСтся, называСтся — Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ snum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² — это внСшний ΠΊΠ»ΡŽΡ‡, Π° ΠΏΠΎΠ»Π΅ snum Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΎ ссылаСтся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² — это Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡.

Аналогично, ΠΏΠΎΠ» cnum ΠΈ snum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ² — это внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΊ ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ². ИмСна внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, это — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соглашСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ соСдинСниС Π±ΠΎΠ»Π΅Π΅ понятным.

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ²Ρ‹Π΅ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, внСшний ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ». Подобно ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, внСшний ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС число ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡΡΡ‹Π»Π°Π΅Ρ‚ся, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈ Ρ‚ΠΈΠΏ ΠΏΠΎΠ», ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ порядкС. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ, состоящиС ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ» — Ρ‚Π΅ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π½Π°ΡˆΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ простоту нашСго обсуТдСния, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ часто Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΌ столбцС. Π­Ρ‚ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎ. Если это Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, любой скаТСт ΠΎ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΈ ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΏΠΎΠ»Π΅ΠΉ, которая являСтся внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

Бмысл внСшнСго ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Когда ΠΏΠΎΠ»Π΅ — являСтся внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΎΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ связано с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΡΡΡ‹Π»Π°Π΅Ρ‚ся. Π’Ρ‹, фактичСски, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ — «ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΡ‚ΠΎΠΌ ΠΏΠΎΠ»Π΅ (внСшнСм ΠΊΠ»ΡŽΡ‡Π΅) нСпосрСдствСнно привязано ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΠ»Π΅ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅).» КаТдоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (каТдая строка) внСшнСго ΠΊΠ»ΡŽΡ‡Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ нСдвусмыслСнно ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (строкС) Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ Ρ„актичСски ваша систСма, ΠΊΠ°ΠΊ говорится, Π±ΡƒΠ΄Π΅Ρ‚ Π² ΡΠΎΡΡ‚оянии справочной цСлостности. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ snum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1001 для строк Hoffman ΠΈ Clemens. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π²Π΅ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΠΎΠ»Π΅ snum = 1001. Как ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² Π±Ρ‹Π»ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ Hoffman ΠΈ Clemens? Аналогично, Ссли Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚Π°ΠΊΠΈΡ… строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Hoffman ΠΈ Clemens Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚!

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдставлСно ΠΎΠ΄ΠΈΠ½, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅.

ЀактичСски, Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ возмоТности: Ρ‚. Π΅. любоС число Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒ ΠΊ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². И Hoffman ΠΈ Clemens Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΊ Peel, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Π·Π°Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого количСства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ внСшнСго ΠΊΠ»ΡŽΡ‡Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ, значСния внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², совпавшиС с ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π ΠΈΡΡƒΠ½ΠΊΠ΅ 19.1. Для удобства ΠΌΡ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΈ ΠΏΠΎΠ» Π½Π΅ ΠΎΡ‚носящиСся ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ foreign key. SQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ FOREIGN KEY. Π₯отя ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ FOREIGN KEY — это Π½ΠΎΠ²Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² SQL, ΠΎΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±ΠΎΠ»Π΅Π΅ слоТны Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π­Ρ‚Π° функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти Π² Π²Π°ΡˆΡƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ справочной цСлостности. Одно ΠΈΠ· Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠΉ ограничСния Π’Π½Π΅ΡˆΠ½Π΅Π³ΠΎ ΠšΠ»ΡŽΡ‡Π° — это отбрасываниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΏΠΎΠ»Π΅ΠΉ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ воздСйствуСт Π½Π° Π²Π°ΡˆΡƒ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ значСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ это ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π΅).

Как ΠΌΠΎΠΆΠ½ΠΎ поля ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ? Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ FOREIGN KEY Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ CREATE TABLE (ΠΈΠ»ΠΈ ALTER TABLE), которая содСрТит ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π’Ρ‹ Π΄Π°Π΅Ρ‚Π΅ ΠΈΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ограничСния FOREIGN KEY. ΠŸΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ этого ограничСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ — Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, обсуТдСнных Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅. Рисунок 19.1: Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠšΠ»ΡŽΡ‡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

Подобно Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ столбца, Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многочислСнныС ΠΏΠΎΠ» ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ внСшний ΠΊΠ»ΡŽΡ‡.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Бинтаксис ограничСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ FOREIGN KEY:

FOREIGN KEY REFERENCES.

[].

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ список столбцов — это список ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ запятыми ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Pktable — это Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТащая Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, которая создаСтся ΠΈΠ»ΠΈ измСняСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ список столбцов — это список столбцов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Бписки Π΄Π²ΡƒΡ… столбцов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимы, Ρ‚. Π΅.:

  • * Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ число столбцов.
  • * Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ, ΠΈ Ρ‚. Π΄., столбцы списка столбцов внСшнСго ΠΊΠ»ΡŽΡ‡Π°, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ, ΠΈ Ρ‚. Π΄., столбцы списка столбцов Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹ Π² ΡΠΏΠΈΡΠΊΠ°Ρ… ΠΎΠ±ΠΎΠΈΡ… столбцов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½, хотя ΠΌΡ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ способ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ связь Π±ΠΎΠ»Π΅Π΅ понятной.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² с ΠΏΠΎΠ»Π΅ΠΌ snum ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π°, ΡΡΡ‹Π»Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ²:

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY.

cname char (10),.

city char (10),.

snum integer,.

FOREIGN KEY (snum) REFERENCES Salespeople.

(snum);

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ALTER TABLE вмСсто CREATE TABLE, для примСнСния ограничСния FOREIGN KEY, значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΡΠΎΡΡ‚оянии справочной цСлостности. Π˜Π½Π°Ρ‡Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Π°. Π₯отя ALTER TABLE ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ·-Π·Π° Π΅Π΅ ΡƒΠ΄ΠΎΠ±ΡΡ‚Π²Π°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π² Π²Π°ΡˆΠ΅ΠΉ систСмС, ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, сначала Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структурныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, Ρ‚ΠΈΠΏΠ° справочной цСлостности.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ столбцов. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ограничСния столбца ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ FOREIGN KEY — ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ называСтся — ссылочноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ (REFERENCES), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ„актичСски Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² ΡΠ΅Π±Π΅ слов FOREIGN KEY, Π° ΠΏΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слово REFERENCES, ΠΈ Π΄Π°Π»Π΅Π΅ ΠΈΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ этому:

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY,.

cname char (10),.

city char (10),.

snum integer REFERENCES Salespeople (snum));

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ΅ опрСдСляСт Customers. snum ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ — это Salespeople.snum. Π­Ρ‚ΠΎ эквивалСнтно Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: FOREIGN KEY (snum) REGERENCES Salespeople (snum).

НС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ список столбцов ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ FOREIGN KEY Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ столбца, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ список столбцов Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Ссли Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ PRIMARY KEY. ЕстСствСнно, Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ полями, порядок столбцов Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ, ΠΈ, Π² Π»ΡŽΠ±ΠΎΠΌ случаС, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ совмСстимости ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΡƒΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ всС Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ. НапримСр, Ссли ΠΌΡ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ PRIMARY KEY Π² ΠΏΠΎΠ»Π΅ snum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ) Π² ΡΡ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY,.

cname char (10),.

city char (10),.

snum integer REFERENCES Salespeople);

Π­Ρ‚ΠΎ срСдство Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π»ΠΎΡΡŒ Π² ΡΠ·Ρ‹ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΎΡ‰Ρ€ΡΡ‚ΡŒ вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

Как справочная Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ значСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ справочной цСлостности Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² ΠΏΠΎΠ»ΡΡ…, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ структурСн, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ строкС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ (ΠΊΠ»ΡŽΡ‡) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (NULL). Π­Ρ‚ΠΎΠ³ΠΎ нСдостаточно для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² ΡΠ»ΡƒΡ‡Π°Π΅ выполнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ трСбования ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ объявлСнии внСшнСго ΠΊΠ»ΡŽΡ‡Π°. SQL Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ значСния ΠΈΠ»ΠΈ пустыС значСния (NULL) Π½Π΅ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ PRIMARY KEY ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ UNIQUE, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ограничСния NOT NULL.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ внСшний ΠΊΠ»ΡŽΡ‡. Бсылка Π²Π°ΡˆΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡΡ‚ΠΎ Π΄Π΅Π»Π°Π»ΠΈ Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, — Ρ…ΠΎΡ€ΠΎΡˆΠ° стратСги. Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, Π²Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈΡ… Π½Π΅ ΠΏΡ€ΠΎΡΡ‚ΠΎ с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ; Π²Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈΡ… Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строкой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π³Π΄Π΅ этот Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½. Π‘Π°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»Π° ΡƒΠΆΠ΅ прСдставлСна Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅. Бмысл, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ» snum ΠΊΠ°ΠΊ внСшнСго ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² — это связь ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚, Π½Π΅ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΠ» snum Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡΡΡ‹Π»Π°Π΅Ρ‚ся, Π° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², Ρ‚Π°ΠΊΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ, ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², ΠΈΡ… ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ — это Π½Π΅ ΠΏΡ€ΠΎΡΡ‚ΠΎ связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΡƒΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями; это — связь, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΡƒΠΌ строками Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π·Π°ΠΏΡ€ΠΎΡΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ snum ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² со ΡΡΡ‹Π»ΠΎΡ‡Π½ΠΎΠΉ строкой ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ — ΠΆΠΈΠ²ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ самом Π³ΠΎΡ€ΠΎΠ΄Π΅, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ имя, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΊΡ€ΠΎΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ строки, это Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для внСшнСго ΠΊΠ»ΡŽΡ‡Π°. Для любого внСшнСго ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ»ΡŽΡ‡, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ использовал ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‚ΠΎΠΉ ΠΆΠ΅ самой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого дСйствия. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»ΠΈ ΠΊΡ€ΠΎΠΌΠ΅ связывания строк, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ строк, ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ срСдством ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ структуру вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ясной ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ, ΠΈ — ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅ΠΉ мСньшС трудностСй.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ внСшнСго ΠΊΠ»ΡŽΡ‡Π°. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡, Π² Ρ‡Π°ΡΡ‚ности, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски прСдставлСны Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ ΠΈΠ»ΠΈ пустыС (NULL). ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ввСсти Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния Π² ΡΡ‚ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ NOT NULL, Π½ΠΎ ΡΡ‚ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° Π½Π΅ Π·Π½Π°Ρ Π·Π°Ρ€Π°Π½Π΅Π΅, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρƒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½. Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ Π² ΡΡ‚ΠΎΠΉ ситуации, Π±ΡƒΠ΄Π΅Ρ‚ Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NOT NULL, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ случится, Ссли Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ? Π”Π°Π²Π°ΠΉΡ‚Π΅ условимся, Ρ‡Ρ‚ΠΎ всС внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, созданныС Π² Π½Π°ΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΈΡΠ°Π½Ρ‹ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΠΌΠΈ внСшнСго ΠΊΠ»ΡŽΡ‡Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

CREATE TABLE Salespeople.

(snum integer NOT NULL PRIMARY KEY,.

sname char (10) NOT NULL,.

city char (10),.

comm decimal);

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY,.

cname char (10) NOT NULL,.

city char (10),.

rating integer,.

snum integer,.

FOREIGN KEY (snum) REFERENCES Salespeople,.

UNIQUE (cnum, snum);

CREATE TABLE Orders.

(cnum integer NOT NULL PRIMARY KEY,.

amt decimal,.

odate date NOT NULL,.

cnum integer NOT NULL.

snum integer NOT NULL.

FOREIGN KEY (cnum, snum) REFERENCES.

CUSTOMERS (cnum, snum);

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ описаний Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ нСсколько Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ» cnum ΠΈ snum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ², Π΅Π΄ΠΈΠ½Ρ‹ΠΌ внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ — это гарантия Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°, содСрТащСгося Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ°Ρ…, ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΊΡ€Π΅Π΄ΠΈΡ‚ΡƒΡŽΡ‰ΠΈΠΉ этот порядок — Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ внСшний ΠΊΠ»ΡŽΡ‡, ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ UNIQUE Π² Π΄Π²Π° ΠΏΠΎΠ» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для самой этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Пока ΠΏΠΎΠ»Π΅ cnum Π² ΡΡ‚ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ PRIMARY KEY, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π² Π»ΡŽΠ±ΠΎΠΌ случаС, ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ» cnum с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»Π΅ΠΌ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° Ρ‚Π°ΠΊΠΈΠΌ способом ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄Π°ΠΆΠ΅ Ссли ΠΏΡ€ΠΈ этом Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΡˆΠΈΠ±ΠΊΠ΅ ΠΈ ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²Π°Ρ‚ΡŒ любого ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, ΠΈΠ½ΠΎΠ³ΠΎ Ρ‡Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ этому Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния поддСрТания цСлостности Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ прСрывания (ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ) ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. Если Π²Ρ‹ ΠΈΡ… Π΄ΠΎΠΏΡƒΡΠΊΠ°Π΅Ρ‚Π΅ ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ» snum ΠΈ cnum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ² нСзависимыми внСшними ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ этих ΠΏΠΎΠ»Π΅ΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², соотвСтствСнно. ЀактичСски, использованиС ΠΏΠΎΠ» snum Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΌΡ‹ ΡΡ‚ΠΎ Π΄Π΅Π»Π°Π»ΠΈ, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, хотя это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для разнообразия. ПолС cnum связывая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ порядок Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ² ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Π΄ΠΎΠ»ΠΆΠ½ΠΎ всСгда Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ snum для Π΄Π°Π½Π½ΠΎΠ³ΠΎ порядка (Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ — ΠΊΠ°ΠΊΠΎΠΉ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρƒ — Π΄Π²Π°ΠΆΠ΄Ρ‹, ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ вСрсии ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ. Если ΠΌΡ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅ΠΌ ограничСния внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΊΠ°ΠΊ сказано Π²Ρ‹ΡˆΠ΅, эта ситуация Π±ΡƒΠ΄Π΅Ρ‚ особСнно ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ порядок Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (вмСстС с Π·Π°ΠΏΡ€ΠΎΡΠΎΠΌ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²Π°Π» ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ. НаличиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ избыточности Π² Π²Π°ΡˆΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, называСтся дСморализация (denormalization), Ρ‡Ρ‚ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΠΎΠΉ рСляционной Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, хотя практичСски ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°. ДСморализация ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ быстрСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ запрос Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ выполняСтся всСгда Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС Ρ‡Π΅ΠΌ Π² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ.

ДСйствиС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Как Ρ‚Π°ΠΊΠΈΠ΅ ограничСния Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π’Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ DML? Для ΠΏΠΎΠ»Π΅ΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΎΡ‚Π²Π΅Ρ‚ довольно простой: Π»ΡŽΠ±Ρ‹Π΅ значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Π² ΡΡ‚ΠΈ ΠΏΠΎΠ» с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ INSERT ΠΈΠ»ΠΈ UPDATE Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ»ΡŽΡ‡Π°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ пустыС (NULL) значСния Π² ΡΡ‚ΠΈ ΠΏΠΎΠ», нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ значСния NULL Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ»ΡŽΡ‡Π°Ρ…, Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ NOT NULL. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ (DELETE) Π»ΡŽΠ±Ρ‹Π΅ строки с Π²Π½Π΅ΡˆΠ½ΠΈΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ вопрос ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ANSI, Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½: любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ссылаСмого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ значСния внСшнСго ΠΊΠ»ΡŽΡ‡Π°, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠΊΠ° ΠΎΠ½ Π΅Ρ‰Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ порядки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ². Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Ρ…Π»ΠΎΠΏΠΎΡ‚Π½ΠΎ. Однако — это ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ систСму, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ порядками ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ² ΡΡΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ². Бмысл этой систСмы ограничСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ограничСния Π½Π° Π΄Π΅ΠΉΡΡ‚вия Π² ΡΡ‚ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. По ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Π²Ρ‹ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π΅ Ρ€Π°ΡΠΏΠΎΡ€ΡΠΆΠ°Π΅Ρ‚Π΅ΡΡŒ (Ρ‚.Π΅. Π½Π΅ Π²Ρ‹ Π΅Π΅ создавали ΠΈ Π½Π΅ Π²Ρ‹ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π΅Π΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ), ΠΏΠΎΠΊΠ° Π²Π»Π°Π΄Π΅Π»Π΅Ρ† (ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ) этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡΡ‚ Π²Π°ΠΌ Π½Π° ΡΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΎ (Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² Π“Π»Π°Π²Π΅ 22). Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ дСйствия измСнСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ ANSI, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… коммСрчСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ссылочноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, имССтся ΠΏΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²Ρƒ Ρ‚Ρ€ΠΈ возмоТности:

  • ? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ, ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (способом ANSI), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ², Ρ‡Ρ‚ΠΎ измСнСния Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ — ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.
  • ? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ ΠΈ Ρ‚Π΅ΠΌ самым ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ измСнСния Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ автоматичСским, Ρ‡Ρ‚ΠΎ называСтся — каскадным ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.
  • ? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡ Π² NULL, автоматичСски (полагая, Ρ‡Ρ‚ΠΎ NULLS Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅), Ρ‡Ρ‚ΠΎ называСтся — пустым ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ внСшнСго ΠΊΠ»ΡŽΡ‡Π°.

Π”Π°ΠΆΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этих Ρ‚Ρ€Π΅Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΠΌ способом. INSERT, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊ Π΄Π΅Π»Ρƒ Π½Π΅ ΠΎΡ‚носится. Он ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ значСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Однако, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ модификациям Π±Ρ‹Ρ‚ΡŒ каскадными, Π½ΠΎ Π±Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π›ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ситуация которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, нСзависимо ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ UPDATE ΠΈ DELETE. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (update effects) ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ удалСния (delete effects), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ случится Ссли Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ UPDATE ΠΈΠ»ΠΈ DELETE Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅. Π­Ρ‚ΠΈ эффСкты, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ: ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ (RESTRICTED) измСнСния, ΠšΠ°ΡΠΊΠ°Π΄ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ (CASCADES) измСнСния, ΠΈ ΠŸΡƒΡΡ‚Ρ‹Π΅ (NULL) измСнСния. ЀактичСскиС возмоТности вашСй систСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΡΡ‚Ρ€ΠΎΠ³ΠΎΠΌ стандартС ANSI — это эффСкты ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΎΠ±Π°, автоматичСски ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ — для Π±ΠΎΠ»Π΅Π΅ идСальной ситуации, описанной Π²Ρ‹ΡˆΠ΅. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ, ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ эффСктов ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, эффСкты ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ нСстандартными срСдствами, ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ нСдостаток Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΌ госинтаксисС. Бинтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ здСсь, прост Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ этих эффСктов.

Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ экспСримСнта, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ сСбС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ snum Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² Π² ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° наша Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² измСняСт Ρ€Π°Π·Π΄Π΅Π»Ρ‹. (ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ — это Π½Π΅ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ практичСски. ΠŸΡ€ΠΎΡΡ‚ΠΎ это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ² для ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ, Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ: ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.) Когда Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΈ сохранСны всС Π΅Π³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ. Однако, Ссли этот ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚ свою Ρ„ΠΈΡ€ΠΌΡƒ ΠΈΠ»ΠΈ компанию, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ самого ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π·Π°ΠΌΠ΅Π½, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ UPDATE с ΠšΠ°ΡΠΊΠ°Π΄ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ эффСктом, ΠΈ DELETE с ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ эффСктом.

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY,.

cname char (10) NOT NULL,.

city char (10),.

rating integer,.

snum integer REFERENCES Salespeople,.

UPDATE OF Salespeople CASCADES,.

DELETE OF Salespeople RESTRICTED);

Если Π²Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Peel ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠ°, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ» snum Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² Hoffman ΠΈ Clemens для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ» snum для Peel Π½Π° 1009, ΠΈ Hoffman ΠΈ Clemens Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ эффСкт — ΠŸΡƒΡΡ‚Ρ‹Π΅ (NULL) измСнСния. Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρ‹ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ компанию, ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ порядки Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ся Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρƒ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС порядки автоматичСски для Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Ρ‡ΡŒΠΈ счСта Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅. ИзмСнив Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π΅ΠΌΡƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ² с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ этих эффСктов.

CREATE TABLE Orders.

(onum integer NOT NULL PRIMARY KEY,.

amt decimal,.

odate date NOT NULL.

cnum integer NOT NULL REFERENCES Customers.

snum integer REFERENCES Salespeople,.

UPDATE OF Customers CASCADES,.

DELETE OF Customers CASCADES,.

UPDATE OF Salespeople CASCADES,.

DELETE OF Salespeople NULLS);

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ DELETE с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΎΠΌ ΠŸΡƒΡΡ‚ΠΎΠ³ΠΎ измСнСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ NOT NULL Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ» snum.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ ΠΈΡ… ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ. Как Π±Ρ‹Π»ΠΎ упомянуто Ρ€Π°Π½Π΅Π΅, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ FOREIGN KEY ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ ΡΡ‚ΠΎΠΉ частной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‡ΠΈ простой, эта ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employees с ΠΏΠΎΠ»Π΅ΠΌ manager (администратор). Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ содСрТит Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»ΡƒΠΆΠ°Ρ‰ΠΈΡ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ администратор — Π² Ρ‚ΠΎ ΠΆΠ΅ Π²Ρ€Π΅ΠΌ остаСтся слуТащим, Ρ‚ΠΎ ΠΎΠ½ Π΅ΡΡ‚СствСнно Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСн Π² ΡΡ‚ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π³Π΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ слуТащСго (столбСц с ΠΈΠΌΠ΅Π½Π΅ΠΌ empno), ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡, Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π΅:

CREATE TABLE Employees.

(empno integer NOT NULL PRIMARY KEY,.

name char (10) NOT NULL UNIOUE,.

manager integer REFERENCES Employees);

(Π’Π°ΠΊ ΠΊΠ°ΠΊ внСшний ΠΊΠ»ΡŽΡ‡ это ссылаСмый ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, список столбцов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½.) Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ содСрТаниС этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

EMPNO NAME MANAGER.

_____ ________ _______.

  • 1003 Terrence 2007
  • 2007 Atali NULL
  • 1688 McKenna 1003
  • 2002 Collier 2007

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… (Π½ΠΎ Π½Π΅ Atali), ссылаСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ слуТащСго Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠ°ΠΊ Π½Π° ΡΠ²ΠΎΠ΅Π³ΠΎ администратора. Atali, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, установлСнноС Π² NULL. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ справочной цСлостности. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ Ρ‡Π°ΡΡ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ значСния = NULL. Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку? Π”Π°ΠΆΠ΅ Ссли эта пСрвая строка ссылаСтся ΠΊ ΡΠ΅Π±Π΅ самой, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ установлСно, ΠΊΠΎΠ³Π΄Π° вводится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅Ρ€Π΅Π½, Π΄Π°ΠΆΠ΅ Ссли внСшний ΠΊΠ»ΡŽΡ‡ ссылаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ Ρ‡Π°ΡΡ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ссылки ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, которая Π·Π°Ρ‚Π΅ΠΌ ссылаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π°. НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ наша Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ каТдая Ρ‚Π°Π±Π»ΠΈΡ†Π° ссылаСтся Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ CREATE TABLE:

CREATE TABLE Salespeople.

(snum integer NOT NULL PRIMARY KEY,.

sname char (10) NOT NULL,.

city char (10),.

comm declmal,.

cnum integer REFERENCES Customers);

CREATE TABLE Customers.

(cnum integer NOT NULL PRIMARY KEY,.

cname char (10) NOT NULL,.

city char (10),.

rating integer,.

snum integer REFERENCES Salespeople);

Π­Ρ‚ΠΎ называСтся — пСрСкрСстной ссылкой. SQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это тСорСтичСски, Π½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ичСски это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π›ΡŽΠ±Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠ· ΡΡ‚ΠΈΡ… Π΄Π²ΡƒΡ…, созданная ΠΏΠ΅Ρ€Π²ΠΎΠΉ являСтся ссылочной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, которая Π΅Ρ‰Π΅ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π’ ΠΈΠ½Ρ‚СрСсах обСспСчСния пСрСкрСстной ссылки, SQL фактичСски позволяСт это, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠ°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° для использования ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΎΠ±Π΅ находятся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ создания. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли эти Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° становится Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΉ. ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Π° ссылка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ Π±Π΅Π· нСоднозначности ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚Π΅ΠΉ. ΠŸΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для использования: ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ, ΠΈ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ совсСм Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½ΡƒΡŽ ссылку Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π±Ρ‹Π»ΠΈ остороТны Π² Π΅Π³ΠΎ использовании ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, ΠΊΠ°ΠΊ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΏΡ€Π°Π²Π»ΡŽΡ‚ эффСктами ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ процСссами ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½ΡƒΡŽ систСму справочной цСлостности.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ