Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

BestProg

РСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°. Π’ΠΈΠ΄Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Главная ΠΈ подчинСнная Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ основныС понятия рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

ΠŸΡƒΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² прСдприятия, которая состоит ΠΈΠ· Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ΅. Вторая Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит свСдСния ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру.

Π’Π°Π±Π»ΠΈΡ†Π° Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ». Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Π’Π°Π±Π»ΠΈΡ†Π° Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β». Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ свСдСния ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Вопрос/ΠΎΡ‚Π²Π΅Ρ‚

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…? Для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ?

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π»Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ – это ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обСспСчСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (информация) Π² ΠΏΠΎΠ»Π΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС (записи) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ нСоднозначности, ΠΊΠΎΠ³Π΄Π° нСизвСстно ΠΊ ΠΊΠ°ΠΊΠΎΠΉ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ, Ссли Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ записи (Π΄Π²Π΅ записи ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния Π²ΠΎ всСх полях Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΌΠΎΠΆΠ½ΠΎ ввСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Однако, ΠΏΠΎΠ»Π΅ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ, тСорСтичСски, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΡƒΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ случаи, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ ΠΏΠΎ ошибкС ΠΈ совпадут значСния всСх ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ошибки, Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅-счСтчик, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчит ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» ΠΌΠΎΠΆΠ½ΠΎ ввСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ (связь) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (relationship)? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π² рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Π’Π°ΠΊΠΈΠ΅ связи Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Для Ρ‚Π°Π±Π»ΠΈΡ† Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΈ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь ΠΏΠΎ полю Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΈ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β». Π’ этих Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π½Π° основС поля Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β». Π’ΠΎ Π΅ΡΡ‚ΡŒ, связь ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ происходит Π½Π° основС поля (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ) Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β».

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. Если Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π°Ρ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» для Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° Иванов И.И., Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Рис. 1. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ 2145 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» отобраТаСтся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β»

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡Π ΠΈΡ. 2. Бвязь (ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅) ΠΌΠ΅ΠΆΠ΄Ρƒ полями Ρ‚Π°Π±Π»ΠΈΡ†

3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡ (foreign key)? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ «внСшний ΠΊΠ»ΡŽΡ‡Β» Π΅ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ рассмотрСнии связанных Ρ‚Π°Π±Π»ΠΈΡ†.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ – это ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΏΠΎΠ»Π΅ΠΉ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… замСняСтся значСниями ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΈ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» сущСствуСт взаимосвязь ΠΏΠΎ полю Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β». Π’ этом случаС, ΠΏΠΎΠ»Π΅ Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π° ΠΏΠΎΠ»Π΅ Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ значСния поля Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ значСниями поля Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ».

4. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивный внСшний ΠΊΠ»ΡŽΡ‡?

РСкурсивный внСшний ΠΊΠ»ΡŽΡ‡ – это внСшний ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚. Π’ этом случаС ΠΏΠΎΠ»Π΅ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ (связи).

5. ΠœΠΎΠ³ΡƒΡ‚ Π»ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ΠΈ Π±Ρ‹Ρ‚ΡŒ простыми ΠΈΠ»ΠΈ составными (слоТными)?

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ простыми Ρ‚Π°ΠΊ ΠΈ составными (слоТными). ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ – это ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ (ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚). БоставныС (слоТныС) ΠΊΠ»ΡŽΡ‡ΠΈ – это ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат нСсколько ΠΏΠΎΠ»Π΅ΠΉ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²).

6. КакоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ искусствСнным ΠΈ СстСствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ЕстСствСнной ΠΊΠ»ΡŽΡ‡ обСспСчиваСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· самой сущности ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области. Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° значСния записСй Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ поля (ΠΏΠΎΠ»Π΅ΠΉ) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ СстСствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» СстСствСнном ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β». ПолС Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β» Π΅ΡΡ‚ΡŒ само ΠΏΠΎ сСбС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΡƒΡ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Π³Π΄Π΅ ΠΏΠΎΠ»Π΅ «НомСр» Π΅ΡΡ‚ΡŒ искусствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

7. КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°?

БущСствуСт 3 способа Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°:

8. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ «главная Ρ‚Π°Π±Π»ΠΈΡ†Π°Β» (master) ΠΈ «подчинСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°Β» (detail)?

Если ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π΅ΡΡ‚ΡŒ связь, Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ (master), Π° другая ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΉ (detail). Главная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всС записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΉ. ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° Π³Π»Π°Π²Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ (Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ). Если измСняСтся тСкущая запись Π³Π»Π°Π²Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚ΠΎ измСняСтся мноТСство доступных записСй ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Если Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΈ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β», Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» Π΅ΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ, Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΉ.

9. КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (связСй) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ?

БущСствуСт 4 основных Ρ‚ΠΈΠΏΠ° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Если Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΈ Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β», Ρ‚ΠΎ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ». Π’Π°Π±Π»ΠΈΡ†Π° Β«Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» Π΅ΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ. Π’Π°Π±Π»ΠΈΡ†Π° Β«Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½ΠΎΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ Ρ‚Π°Π±Π»ΠΈΡ† рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

ВступлСниС

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ (устройство рСляционной Π‘Π”) ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π»ΠΈ, ΠΊΠ°ΠΊ устроСна рСляционная (табличная) Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ выяснили, Ρ‡Ρ‚ΠΎ основными элСмСнтами рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ: Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, столбцы ΠΈ строки, Π° Π² матСматичСских понятиях: ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. Π’Π°ΠΊΠΆΠ΅ часто, строки Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ записями, столбцы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, Π° пСрСсСчСниС записи ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ячСйкой.

Π’Π°ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ содСрТаниС строки ΠΈ названия столбцов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π°Ρ…

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±Π°Π·Ρ‹ для Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: тСкстов, Π΄Π°Ρ‚, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, событий, Ρ†ΠΈΡ„Ρ€. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… дСлят Π½Π° Ρ‚ΠΈΠΏΡ‹. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) ΠΈΠΌΠ΅Π΅Ρ‚ своС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Π­Ρ‚ΠΎ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° самом Π΄Π΅Π»Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ язык программирования ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ систСмных Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ Ρ‚Π°Π±Π»ΠΈΡ† рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ вспоминали: каТдая строка (запись) Π‘Π” Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°. ИмСнно ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, максимально ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись. МоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡: Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠ°ΠΊ primary key.

Primary key (PK) ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ΅Π½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Поясню ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

На логичСской связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, стоит ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

ΠšΠ»ΡŽΡ‡ внСшний

Foreign key, ΠΊΡ€Π°Ρ‚ΠΊΠΎ FK. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ связь, ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π‘Π”.

НапримСр, Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ А ΠΈ Π’. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ А (ΠΎΠ±ΡƒΠ²ΡŒ), Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡: Ρ€Π°Π·ΠΌΠ΅Ρ€, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π’ (Ρ†Π²Π΅Ρ‚) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π’ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Ρ€Π°Π·ΠΌΠ΅Ρ€Β» это ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ внСшний ΠΊΠ»ΡŽΡ‡ для логичСской связи Ρ‚Π°Π±Π»ΠΈΡ† Π’ ΠΈ А.

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π”Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: Π›ΡŽΠ΄ΠΈ ΠΈ НомСра Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ².

Π’Π°Π±Π»ΠΈΡ†Π°: Π›ΡŽΠ΄ΠΈ

primary keyИмя
1Π—Π°ΠΉΡ†Π΅Π²
2Π‘Π΅Π»ΠΊΠΈΠ½
3Π’ΠΎΠ»ΠΊΠΎΠ²

Π’Π°Π±Π»ΠΈΡ†Π°: НомСра Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²

primary keyΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½foreign key
1123451
2543211
36789102
41098763
5135793

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ НомСра Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² PK ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½. FK этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ являСтся PK Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π›ΡŽΠ΄ΠΈ. Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈ людьми обСспСчиваСт FK Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ:

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ добавлю, Ρ‡Ρ‚ΠΎ любая Π‘Π£Π‘Π”, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅Π΅Ρ‚ тСхничСскиС возмоТности ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Sysadminium

Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ систСмного администратора

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ SQL

Из ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ Π² SQL. Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π― ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² PostgreSQL.

ВСория

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ это ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΏΠΎΠ»Π΅ΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Он Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ любой строки. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния:

К ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅:

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

Π― сам Π½Π΅ имСю большого ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SQL, Π½ΠΎ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΏΠΈΡˆΡƒΡ‚ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ СстСствСнный ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, я ΠΏΠΎΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ смогу.

Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

ΠŸΠ΅Ρ€Π²ΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° – это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ идСнтификация ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. Но ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связывания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. Для Ρ‚Π°ΠΊΠΎΠΉ связи ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ sql. Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† ΡΠΎΠ·Π΄Π°ΡŽΡ‚ внСшний ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° поля Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Но внСшний ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π»ΡŽΠ±Ρ‹Π΅ поля Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅:

НапримСр, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° β€œΠ£Ρ‡Π΅Π½ΠΈΠΊΠΈβ€ (pupils) ΠΈ выглядит ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ЀИО
full_name
Возраст
age
Класс
class
Иванов Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡159А
Π‘ΡƒΠΌΠΊΠΈΠ½ Π€Ρ‘Π΄ΠΎΡ€ АндрССвич159А
ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² АлСксСй НиколаСвич148Π‘
Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ² АлСксандр Π“Π΅Π½Π½Π°Π΄ΡŒΠ΅Π²ΠΈΡ‡148Π‘

Π’Π°Π±Π»ΠΈΡ†Π° pupils

И Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° β€œΠ£ΡΠΏΠ΅Π²Π°Π΅ΠΌΠΎΡΡ‚ΡŒβ€ (evaluations):

ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚
item
ЀИО
full_name
ΠžΡ†Π΅Π½ΠΊΠ°
evaluation
Русский ΡΠ·Ρ‹ΠΊΠ˜Π²Π°Π½ΠΎΠ² Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡4
Русский ΡΠ·Ρ‹ΠΊΠŸΠ΅Ρ‚Ρ€ΠΎΠ² АлСксСй НиколаСвич5
ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ² АлСксандр Π“Π΅Π½Π½Π°Π΄ΡŒΠ΅Π²ΠΈΡ‡3
Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°Π‘ΡƒΠΌΠΊΠΈΠ½ Π€Ρ‘Π΄ΠΎΡ€ АндрССвич5

Π’Π°Π±Π»ΠΈΡ†Π° evaluations

Π’ ΠΎΠ±ΠΎΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅: ЀИО. ΠŸΡ€ΠΈ этом Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ β€œΠ£ΡΠΏΠ΅Π²Π°Π΅ΠΌΠΎΡΡ‚ΡŒβ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ЀИО, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ β€œ Π£Ρ‡Π΅Π½ΠΈΠΊΠΈβ€œ. Π’Π΅Π΄ΡŒ нСльзя ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ ΠΎΡ†Π΅Π½ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ сущСствуСт.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² нашСм случаС ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ β€œΠ€Π˜Πžβ€ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ β€œ Π£Ρ‡Π΅Π½ΠΈΠΊΠΈβ€œ. А внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ β€œΠ€Π˜Πžβ€ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ β€œΠ£ΡΠΏΠ΅Π²Π°Π΅ΠΌΠΎΡΡ‚ΡŒβ€œ. ΠŸΡ€ΠΈ этом, Ссли ΠΌΡ‹ удаляСм запись ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€œΠ£Ρ‡Π΅Π½ΠΈΠΊΠΈβ€œ, Ρ‚ΠΎ всС Π΅Π³ΠΎ ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€œΠ£ΡΠΏΠ΅Π²Π°Π΅ΠΌΠΎΡΡ‚ΡŒβ€œ.

Π•Ρ‰Ρ‘ стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² PostgreSQL автоматичСски создаСт индСкс. ИндСкс ускоряСт доступ ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²ΡƒΡ… Π˜Π²Π°Π½ΠΎΠ²Ρ‹Ρ… Иванов Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡Π΅ΠΉ Ρƒ нас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ эти Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠΈ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ с Π½ΠΈΠΌΠΈ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… school ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ ΠΊ Π½Π΅ΠΉ. Π—Π°Ρ‚Π΅ΠΌ создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ pupils. ΠŸΡ€ΠΎ созданиС Ρ‚Π°Π±Π»ΠΈΡ† я ΡƒΠΆΠ΅ писал Ρ‚ΡƒΡ‚, Π° ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΡƒΡ‚. Π—Π°Ρ‚Π΅ΠΌ посмотрим Π½Π° Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ \d:

Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ создаётся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции PRIMARY KEY (имя_поля) Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ \d Π½Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Ρƒ нас Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ сдСлал Π΄Π²Π° ограничСния:

ИндСкс Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π°Π»ΠΎΠΆΠΈΠ» Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ – записи Π² ΠΏΠΎΠ»Π΅ full_name Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ evaluations:

Π’ этом случаС ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ \d Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ создался внСшний ΠΊΠ»ΡŽΡ‡ (Foreign-key), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ полю full_name ΠΈ ссылаСтся Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ pupils.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции FOREIGN KEY (имя_поля) REFERENCES Ρ‚Π°Π±Π»ΠΈΡ†Π°_Π½Π°_ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ_ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ.

Боздавая внСшний ΠΊΠ»ΡŽΡ‡ ΠΌΡ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠΏΡ†ΠΈΡŽ ON DELETE CASCADE. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строки с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pupils, всС строки связанныС с этим ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠΌ удалятся ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations автоматичСски.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌΠΈ

Π—Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ β€œpupilsβ€œ:

Π—Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ β€œevaluationsβ€œ:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ (insert) ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ (update) Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations, Π² ΠΏΠΎΠ»Π΅ full_name ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² этом ΠΆΠ΅ ΠΏΠΎΠ»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pupils.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ pupils:

И посмотрим Π½Π° строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations:

Как Π²ΠΈΠ΄Π½ΠΎ, строка с full_name равная β€˜Π˜Π²Π°Π½ΠΎΠ² Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡β€™ Ρ‚ΠΎΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΠ»Π°ΡΡŒ. Если Π±Ρ‹ Ρƒ Иванова Π±Ρ‹Π»ΠΎ Π±Ρ‹ большС ΠΎΡ†Π΅Π½ΠΎΠΊ, ΠΎΠ½ΠΈ всё Ρ€Π°Π²Π½ΠΎ Π±Ρ‹ всС ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈΡΡŒ. Π—Π° это, Ссли ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ опция ON DELETE CASCADE.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° с Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ-ΠΆΠ΅ ЀИО, ΠΊΠ°ΠΊ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…:

НичСго Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ такая запись ΡƒΠΆΠ΅ сущСствуСт Π² ΠΏΠΎΠ»Π΅ full_name, Π° это ΠΏΠΎΠ»Π΅ Ρƒ нас ΠΈΠΌΠ΅Π΅Ρ‚ индСкс. Π—Π½Π°Ρ‡ΠΈΡ‚ значСния Π² Π½Ρ‘ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅.

Боставной ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡

Π•ΡΡ‚ΡŒ большая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ школС Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Π²Π° ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ЀИО. Но мСньшС вСроятности Ρ‡Ρ‚ΠΎ эти Π΄Π²Π° ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ классС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ Π΄Π²Π° поля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ full_name ΠΈ class.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ наши Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠΈ ΠΈ создадим ΠΈΡ… Π·Π°Π½ΠΎΠ²ΠΎ, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ составной ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡:

Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅ большая. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² PRIMARY KEY ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π²Π° поля вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ. И Π² FOREIGN KEY Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π²Π° поля вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Ну ΠΈ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations ΠΏΡ€ΠΈ создании Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ class, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ‚Π°ΠΌ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° структуры этих Ρ‚Π°Π±Π»ΠΈΡ†:

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pupils ΡƒΠΆΠ΅ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΠ»Π΅ΠΉ, поэтому внСшний ΠΊΠ»ΡŽΡ‡ ссылаСтся Π½Π° эти Π΄Π²Π° поля.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ЀИО Π²Π±ΠΈΡ‚ΡŒ Π² Π½Π°ΡˆΡƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах:

И Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся другая Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹ Π½Π΅ смоТСтС:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»ΠΈΠΌ наши Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

Π›ΠΈΠ±ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ каскадно Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ pupils вмСстС с внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ evaluations:

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, послС каскадного удалСния Ρƒ нас вмСстС с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ pupils удался внСшний ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ связи Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…

Π’Ρ‹ΡˆΠ΅ я постоянно создавал ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Но ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

Π’Π½Π°Ρ‡Π°Π»Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

И сдСлаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pupils:

И создадим внСшний ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ evaluations:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я рассказал ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ sql. А Ρ‚Π°ΠΊΠΆΠ΅ продСмонстрировал, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ связанныС ΠΌΠ΅ΠΆΠ΄Ρƒ собой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ограничСния Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π΅Ρ‚. И Π²Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ трСбования ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊ Π½Π΅ΠΌΡƒ. ВмСстС с Ρ‚Π΅ΠΌ я ΠΏΠΎΠΊΠ°Π·Π°Π» Π²Π°ΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с составным ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ внСшний ΠΊΠ»ΡŽΡ‡ sql ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

SQL ΠΊΠ»ΡŽΡ‡ΠΈ Π²ΠΎ всСх подробностях

Π’ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎ догматичСских Π·Π°ΠΏΠΎΠ²Π΅Π΄Π΅ΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ Π² рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Иногда споры Π΄Π°ΠΆΠ΅ пСрСходят Π² Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€Ρ‹: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ СстСствСнныС ΠΈΠ»ΠΈ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ? АвтоинкрСмСнтныС Ρ†Π΅Π»Ρ‹Π΅ ΠΈΠ»ΠΈ UUID?

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΡˆΠ΅ΡΡ‚ΡŒΠ΄Π΅ΡΡΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, пролистав Ρ€Π°Π·Π΄Π΅Π»Ρ‹ пяти ΠΊΠ½ΠΈΠ³ ΠΈ Π·Π°Π΄Π°Π² ΠΊΡƒΡ‡Ρƒ вопросов Π² IRC ΠΈ StackOverflow, я (Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Joe Β«begriffsΒ» Nelson), ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся, собрал куски ΠΏΠ°Π·Π·Π»Π° Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ смогу ΠΏΡ€ΠΈΠΌΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠ². МногиС споры ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Π½Π° самом Π΄Π΅Π»Π΅, ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ понимания Ρ‡ΡƒΠΆΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Β«ΠΊΠ»ΡŽΡ‡ΠΈΒ»?

Π—Π°Π±ΡƒΠ΄Π΅ΠΌ Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°Ρ…, нас интСрСсуСт Π±ΠΎΠ»Π΅Π΅ общая идСя. ΠšΠ»ΡŽΡ‡ β€” это ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° (column) ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π² строках Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ подмноТСство ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для подсчёта ΠΊΠ°Ρ€Ρ‚ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅:

Если ΠΌΡ‹ отслСТиваСм ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ»ΠΎΠ΄Ρƒ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠ°Ρ€Ρ‚), Ρ‚ΠΎ сочСтаниС Ρ€ΡƒΠ±Π°ΡˆΠΊΠΈ ΠΈ Π»ΠΈΡ†Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π°ΠΌ Π±Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€ΡƒΠ±Π°ΡˆΠΊΡƒ ΠΈ Π»ΠΈΡ†ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ. Если ΠΊΠ°Ρ€Ρ‚Π° Π΅ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΅Ρ‘, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС Π½ΠΈ suit (Ρ€ΡƒΠ±Π°ΡˆΠΊΠ°), Π½ΠΈ face (Π»ΠΈΡ†ΠΎ) Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ€ΡƒΠ±Π°ΡˆΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π»ΠΈΡ†ΠΎΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ (suit, face) ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π½Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… сочСтаниС Π½Π΅ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎ, Π° (suit, face) являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

Π’ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ ситуации, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠ»ΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сколько Ρ€Π°Π· ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠ°Ρ€Ρ‚Ρƒ:

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π’ PostgreSQL ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом добавлСния ограничСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся Π΅Π³ΠΎ прямоС объявлСниС, ΠΊΠ°ΠΊ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ИспользованиС индСксов для соблюдСния ограничСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ понадобится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, Π½ΠΎ Π½Π΅ стоит ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. НСт нСобходимости Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ создании индСксов для ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ; Ρ‚Π°ΠΊΠΈΠ΅ дСйствия Π±ΡƒΠ΄ΡƒΡ‚ просто Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ автоматичСскоС созданиС индСкса.

Π’Π°ΠΊΠΆΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈΡ… всС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΈΡ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ† с нСсколькими ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π Π°Π΄ΠΈ краткости Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. НапримСр, Ρƒ ΠΊΠ°Ρ€Ρ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число просмотров, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL нСдопустимо для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° рассмотрСнных ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ max_income для Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ NULL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ).

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ случай ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ просто Β«ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈΒ», ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся Β«ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈΒ» (candidate keys). Π’Π΅Ρ€ΠΌΠΈΠ½ Β«candidateΒ» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Π·Π° ΠΏΠΎΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Β«ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°Β» (primary key), Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Β«Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈΒ» (alternate keys).

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

Π’Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΊΠ»ΡŽΡ‡Β» ΠΎΠ·Π½Π°Ρ‡Π°Π» ΠΊΠ»ΡŽΡ‡ сортировки Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π½ΡƒΠΆΠ΅Π½ для выполнСния Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Набор ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚ считывался Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ порядкС; Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Β«Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄Β». ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Ρ… Π»Π΅Π½Ρ‚Π°Ρ… ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ позволяли Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ доступ. Π’.Π΅., ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Sybase SQL Server для чтСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ строки Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Β«ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈΒ» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ.

Π’ соврСмСнном SQL Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° физичСскоС прСдставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ связи ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ порядок строк Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²Π°ΠΆΠ΅Π½. Однако, ΠΈ сСйчас SQL-сСрвСр ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ создаёт кластСрный индСкс для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ, ΠΏΠΎ старой Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ, физичСски выстраиваСт порядок строк.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΎΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ, ΠΈ Π΅Π΄Π²Π° Π»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ отраТСния ΠΈΠ»ΠΈ опрСдСлСния физичСского располоТСния. НапримСр, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ PostgreSQL объявлСниС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° автоматичСски Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ NOT NULL ΠΈ опрСдСляСт внСшний ΠΊΠ»ΡŽΡ‡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ столбцами для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° JOIN.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π΅ отмСняСт возмоТности объявлСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ссли Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡ Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ, Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Молния, Π²ΠΎ всяком случаС, Π² вас Π½Π΅ ΡƒΠ΄Π°Ρ€ΠΈΡ‚.

НахоТдСниС СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

РассмотрСнныС Π²Ρ‹ΡˆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «СстСствСнными», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ свойствами ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° интСрСсными сами ΠΏΠΎ сСбС, Π΄Π°ΠΆΠ΅ Ссли Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ стрСмится ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΊΠ»ΡŽΡ‡.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ исслСдовании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ β€” Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΡƒΠ΄Ρ€ΠΈΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ sqlvogel Π½Π° StackExchange Π΄Π°Ρ‘Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ совСт:

Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… людСй Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ слоТности с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ «СстСствСнного» ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ гипотСтичСскиС ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Они Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ самого смысла Π·Π°Π΄Π°Ρ‡ΠΈ. Бмысл ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈ всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’Π°Π±Π»ΠΈΡ†Π° содСрТит Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΌ контСкстС (Π² Β«ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области» ΠΈΠ»ΠΈ Π² «области дискурса») ΠΈ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ограничСния Π² этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ области.

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

НапримСр, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ² Ρ…ΠΎΠ±Π±ΠΈ-ΠΊΠ»ΡƒΠ±Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π΄Π²ΡƒΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ… β€” first_name, last_name. ΠŸΡ€ΠΈ нСбольшом ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ маловСроятны, ΠΈ Π΄ΠΎ возникновСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»ΡŽΡ‡ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ.

Π‘ ростом Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²Ρ‹Π±ΠΎΡ€ СстСствСнного ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ слоТнСС. Π₯Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ внСшнСй Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈ Π½Π΅ содСрТат Π² сСбС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΌΠΈΡ€Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹. Если Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° отсутствуСт ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π±Π°Π½ΠΊΠΈ с Π½Π°ΠΏΠΈΡ‚ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π²Π΅ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ с овсянкой, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΈΡ… Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² пространствС ΠΈΠ»ΠΈ ΠΏΠΎ нСбольшим различиям Π² вСсС ΠΈΠ»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅?

ИмСнно поэтому ΠΎΡ€Π³Π°Π½Ρ‹ стандартизации ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ наносят Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ. На автомобилях ΡˆΡ‚Π°ΠΌΠΏΡƒΠ΅Ρ‚ΡΡ Vehicle Identification Number (VIN), Π² ΠΊΠ½ΠΈΠ³Π°Ρ… пСчатаСтся ISBN, Π½Π° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ ΠΏΠΈΡ‰Π΅Π²Ρ‹Ρ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π΅ΡΡ‚ΡŒ UPC. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти числа Π½Π΅ каТутся СстСствСнными. Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ я Π½Π°Π·Ρ‹Π²Π°ΡŽ ΠΈΡ… СстСствСнными ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ?

Π•ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΌΠΈΡ€Ρƒ. ΠšΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ своём создании Π² ΠΎΡ€Π³Π°Π½Π΅ стандартизации ΠΈΠ»ΠΈ государствСнном ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ Π±Ρ‹Π» искусствСнным, становится для нас СстСствСнным, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΌΠΈΡ€Π΅ ΠΎΠ½ становится стандартом ΠΈ/ΠΈΠ»ΠΈ пСчатаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….
БущСствуСт мноТСство отраслСвых, общСствСнных ΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… стандартов для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС для Π²Π°Π»ΡŽΡ‚, языков, финансовых инструмСнтов, химичСских вСщСств ΠΈ мСдицинских Π΄ΠΈΠ°Π³Π½ΠΎΠ·ΠΎΠ². Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Π‘ ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ – это ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· способов Π΅Π³ΠΎ создания являСтся ΠΆΡƒΠ»ΡŒΠ½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ – Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π΄ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ: ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ссылки Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ гСнСрируСтся ΠΈΠ· самой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ нСизвСстСн Π½ΠΈΠΊΠΎΠΌΡƒ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ИмСнно это ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΎΡ‚ стандартизированных СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ ΠΎΡ‚ дублирования ΠΈΠ»ΠΈ противорСчивости строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, искусствСнныС ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ людям ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ систСмам ΠΏΡ€ΠΎΡ‰Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° строку, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ поиска ΠΈ объСдинСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сравнСния строковых (ΠΈΠ»ΠΈ многостолбцовых) ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Ρ‹

Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС привязки – Π²Π½Π΅ зависимости ΠΎΡ‚ измСнСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΎΠ΄Π½Ρƒ строку всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ способом. Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для этой Ρ†Π΅Π»ΠΈ, называСтся «суррогатным ΠΊΠ»ΡŽΡ‡ΠΎΠΌΒ» ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особого внимания. Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Ρ‹ ΠΌΡ‹ рассмотрим Π½ΠΈΠΆΠ΅.

НС ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ суррогатами искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для ссылок Π½Π° строку снаруТи Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ URL, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½ ΠΊ счёту, ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² Π±Π°Π½ΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ Π·Π½Π°ΠΊΠ΅. (НомСрной Π·Π½Π°ΠΊ автомобиля для нас являСтся СстСствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ государством ΠΊΠ°ΠΊ искусствСнный ΠΊΠ»ΡŽΡ‡.)

Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, учитывая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈ ошибки. Надо ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π½ΠΎΡΠΈΡ‚ΡŒ, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΌ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎ SMS, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ написанным ΠΎΡ‚ Ρ€ΡƒΠΊΠΈ, Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² URL. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚, содСрТат ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ошибок ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ хотя Π±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ.

Π­Ρ‚Π° функция являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ самой сСбС (Ρ‚.Π΅. pseudo_encrypt(pseudo_encrypt(x)) = x ). Π’ΠΎΡ‡Π½ΠΎΠ΅ воспроизвСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся своСго Ρ€ΠΎΠ΄Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΡΡΠ½ΠΎΡΡ‚ΡŒ, ΠΈ Ссли ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ догадаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ использовали ΡΠ΅Ρ‚ΡŒ ЀСйстСля ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PostgreSQL, Ρ‚ΠΎ Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Однако вмСсто (((1366 * r1 + 150889) % 714025) / 714025.0) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 1, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, просто ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с числами Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Π’ΠΎΡ‚, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pseudo_encrypt:

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для short_id использовались Ρ†Π΅Π»Ρ‹Π΅ значСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, для bigint Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ЀСйстСля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XTEA.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Ρ‘ Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ строки. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ pg_hashids:

Π—Π΄Π΅ΡΡŒ снова Π±ΡƒΠ΄Π΅Ρ‚ быстрСС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сами Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ запросу, Π½ΠΎ Π·Π°ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ посмотритС, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ это смысл Π½Π° самом Π΄Π΅Π»Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‘Ρ‚ΠΊΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ² смысл искусствСнных ΠΈ СстСствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ споры «СстСствСнныС ΠΏΡ€ΠΎΡ‚ΠΈΠ² искусствСнных» ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΆΠ½ΠΎΠΉ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠ΅ΠΉ. Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ΠΈ СстСствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°! Π’ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Ρ‚Π΅, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. На самом Π΄Π΅Π»Π΅, Ρ‚Π°Π±Π»ΠΈΡ†Π° с искусствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ СстСствСнный ΠΊΠ»ΡŽΡ‡, Π·Π° Ρ€Π΅Π΄ΠΊΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ сущСствуСт СстСствСнного ΠΊΠ»ΡŽΡ‡Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΡƒΠΏΠΎΠ½ΠΎΠ²):

Если Ρƒ вас Π΅ΡΡ‚ΡŒ искусствСнный ΠΊΠ»ΡŽΡ‡ ΠΈ Π²Ρ‹ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ СстСствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚ΠΎ оставляСтС послСдниС Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ:

ЕдинствСнным Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ² объявлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ нСсёт Π·Π° собой Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Π²Π°ΠΌ Π²Π°ΠΆΠ½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ, скорСС всСго, ΠΊΠ»ΡŽΡ‡ΠΈ всС ΠΆΠ΅ стоит ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ нСсколько искусствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ. НапримСр, Ρƒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ (Applicants) ΠΈ сотрудники (Employees). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сотрудник ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π±Ρ‹Π» ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ, ΠΈ относится ΠΊ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌ ΠΏΠΎ своСму собствСнному ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ сотрудника. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сотрудника ΠΈ имя Π»ΠΎΠ³ΠΈΠ½Π° ΠΊΠ°ΠΊ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π° Π² Employees.

Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ искусствСнного ΠΊΠ»ΡŽΡ‡Π° называСтся «суррогатный ΠΊΠ»ΡŽΡ‡Β». Он Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ внутрСнняя ΠΌΠ΅Ρ‚ΠΊΠ°, всСгда ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ строку. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² SQL, Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ обращаСтся ΠΊ Π½Π΅ΠΌΡƒ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Если Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΡ‹ систСмныС ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (system columns) ΠΈΠ· PostgreSQL, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ суррогаты ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π²Ρ€ΠΎΠ΄Π΅ ctid), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ мСняСтся. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суррогата выбираСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ измСняСтся.

НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ суррогатныС ΠΊΠ»ΡŽΡ‡ΠΈ «СстСствСнными». Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суррогатного ΠΊΠ»ΡŽΡ‡Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ…ΡƒΠΆΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π² частности Ρ‡Π΅Ρ€Π΅Π· поиск), Ρ‚ΠΎ фактичСски ΠΏΡ€ΠΈΠ΄Π°Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Ρƒ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈΠ· вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ СстСствСнным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² Ρ‡ΡŒΠ΅ΠΉ-Ρ‚ΠΎ Ρ‡ΡƒΠΆΠΎΠΉ Π‘Π”.

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

АвтоинкрСмСнтныС bigint

Однако, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ для суррогатных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π’Π°ΠΊΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ нСпопулярно, поэтому ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒΡΡ.

НСдостатки ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: использованиС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (128-Π±ΠΈΡ‚Π½Ρ‹Ρ…), Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π² соотвСтствии со случайным шаблоном. Алгоритмы Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (universally unique identifier, UUID) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠ°Π»ΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π΄Π²Π°ΠΆΠ΄Ρ‹, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… процСссорах.

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, UUID каТутся СстСствСнным Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для использования Π² качСствС суррогатных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ строки ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ сравнится с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ!

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ всС Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠΌΠΈ Π² PostgreSQL? На это Π΅ΡΡ‚ΡŒ нСсколько Π½Π°Π΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈ ΠΎΠ΄Π½Π° логичная, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ, ΠΈ я ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡŽ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΌΠ½Π΅Π½ΠΈΠ΅.

Для Π½Π°Ρ‡Π°Π»Π°, расскаТу ΠΎ Π½Π°Π΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ…. НСкоторыС люди Π΄ΡƒΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ UUID β€” это строки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ с дСфисом: 5bd68e64-ff52-4f54-ace4-3cd9161c8b7f. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ³ΠΎ (128-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ) Ρ‚ΠΈΠΏΠ° uuid, Π½ΠΎ Π² PostgreSQL ΠΎΠ½ Π΅ΡΡ‚ΡŒ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… bigint, Ρ‚.Π΅., ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹.

Π•Ρ‰Ρ‘ UUID нСзаслуТСнно обвиняСтся Π² громоздкости, Π½ΠΎ ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π½ΠΎΡΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ? ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π΅Ρ‚ смысл для ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… искусствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ (ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ) Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ суррогатный UUID. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с UUID Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SQL Π² psql для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ систСмы, Π½ΠΎ Π½Π° этом всё. А Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° строки ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ссли ΠΎΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ‹.

РСальная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с UUID Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сильно Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния приводят ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΡ‘ΠΌΠ° записи (write amplification) ΠΈΠ·-Π·Π° записСй ΠΏΠΎΠ»Π½Ρ‹Ρ… страниц Π² ΠΆΡƒΡ€Π½Π°Π» с ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ записью (write-ahead log, WAL). Однако, Π½Π° самом Π΄Π΅Π»Π΅ сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ зависит ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ UUID.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌ write amplification. По ΠΏΡ€Π°Π²Π΄Π΅ говоря, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² старых Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСмах. Когда PostgreSQL выполняСт запись Π½Π° диск, ΠΎΠ½Π° измСняСт «страницу» Π½Π° дискС. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм всё Ρ€Π°Π²Π½ΠΎ сообщит ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ записи Π΅Ρ‰Ρ‘ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ бСзопасно ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π½Π° дискС. Если PostgreSQL Π½Π°ΠΈΠ²Π½ΠΎ воспримСт Ρ‚Π°ΠΊΠΎΠ΅ дСйствиС Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π°.

Π Π°Π· PostgreSQL Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ОБ/Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм/ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ дисков Π² вопросС обСспСчСния нСразрывности, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… сохраняСт ΠΏΠΎΠ»Π½ΠΎΠ΅ состояниС ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠΉ дисковой страницы Π² ΠΆΡƒΡ€Π½Π°Π» с ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ записью (write-ahead log), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для восстановлСния послС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ сбоя. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сильно Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ UUID ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΊΡƒΡ‡Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… страниц диска ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ записи ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° страницы (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4 ΠΈΠ»ΠΈ 8 ΠšΠ‘) Π² WAL для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ записи. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ называСмая полностраничная запись (full-page write, FPW).

НСкоторыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ UUID (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Β«snowflakeΒ» ΠΎΡ‚ Twitter ΠΈΠ»ΠΈ uuid_generate_v1() Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ uuid-ossp для PostgreSQL) ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ значСния. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ консолидируСт записи Π² мСньшСС количСство страниц диска ΠΈ сниТаСт FPW.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌ влияниС FPW для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ UUID, Π° Ρ‚Π°ΠΊΠΆΠ΅ исслСдуСм статистику WAL. Π― использовал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ для Π·Π°ΠΌΠ΅Ρ€Π°.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΊ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ UUID Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ write-ahead log.

Π― использовал Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ статистику ΠΎΠ± использовании WAL послС провСдСния Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°. Π’Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ статистику событий, выполняСмых ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ послС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:

Π― ΠΏΡ€ΠΎΠ²Ρ‘Π» тСсты Ρ‚Ρ€Ρ‘Ρ… сцСнариСв:

И Π²ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² скорости:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ внСшний ΠΊΠ»ΡŽΡ‡

Π“Ρ€Π°Ρ„ΠΈΠΊ скорости вставки UUID

Π’ΠΎΡ‚ статистика WAL для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· способов:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ gen_random_uuid создаёт ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² WAL ΠΈΠ·-Π·Π° полностраничных ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (full-page images, FPI), Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы этим Π½Π΅ ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ я просто Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ» Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅Π»Π°Ρ‚ΡŒ это. Однако Π·Π°ΠΏΡ€Π΅Ρ‚ FPW совсСм Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ стоило Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ дисков. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ утвСрТдаСтся, Ρ‡Ρ‚ΠΎ ZFS ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ бСзопасным для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ FPW, Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π―Π²Π½Ρ‹ΠΌ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΌ Π² ΠΌΠΎΡ‘ΠΌ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ΅ оказался uuid_generate_v1() – ΠΎΠ½ быстр ΠΈ Π½Π΅ замСдляСтся ΠΏΡ€ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠΈ строк. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ uuid-ossp ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСно Π² Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ RDS ΠΈ Citus Cloud, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступно Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий.

Π’ докумСнтация Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ uuid_generate_v1:

Π’ Π½Ρ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ MAC-адрСс ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ UUID Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создал ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈ врСмя Π΅Π³ΠΎ создания, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° трСбуСтся высокая Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π˜Ρ‚ΠΎΠ³ΠΈ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ познакомились с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΈΡ… использования, я Ρ…ΠΎΡ‡Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΌΠΎΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ΠΈΡ… Π² Π²Π°ΡˆΠΈΡ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя допуская ΠΈ Π΄Π°ΠΆΠ΅ защищая СстСствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ искусствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π΅ становятся ΠΊ Ρ‡Π΅ΠΌΡƒ-Π»ΠΈΠ±ΠΎ привязанными. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²ΠΎ всСм Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Β«ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°Ρ…Β» ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми возмоТностями примСнСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

ΠžΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ вопросы ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π½Π° Π½Π°ΡˆΠΈΡ… конфСрСнциях. Если Ρƒ вас Π·Π° ΠΏΠ»Π΅Ρ‡Π°ΠΌΠΈ большой ΠΎΠΏΡ‹Ρ‚ Π² ИВ-сфСрС, Π½Π°Π±ΠΎΠ»Π΅Π»ΠΎ, Π½Π°ΠΊΠΈΠΏΠ΅Π»ΠΎ ΠΈ хочСтся Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ совСта, Ρ‚ΠΎ Π½Π° майском фСстивалС ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ РИВ++ Π±ΡƒΠ΄ΡƒΡ‚ для этого всС условия, 8 тСматичСских Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ начиная ΠΎΡ‚ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΈ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ заканчивая DevOps ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΠ΄Π°Ρ‚ΡŒ заявку Π½Π° выступлСниС ΠΌΠΎΠΆΠ½ΠΎ здСсь.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *