Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ пояснитС Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ СстСствСнными ΠΈ суррогатными ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈ суррогатным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ?

Π― ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡƒΠ³Π», Π½ΠΎ я Π½Π΅ нашСл Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прямого ΠΎΡ‚Π²Π΅Ρ‚Π° с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

Π›ΡŽΠ±ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для этого Π±Ρ‹Π» Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ – это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² вашСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ВсС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Ссли Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ понадобится ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством суррогатного ΠΊΠ»ΡŽΡ‡Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅. Основной нСдостаток Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния. Π’Π°ΠΌ Π½Π΅Ρ‚ смысла, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€œ28” – это Висконсин, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ β€œWI” Π² столбцС β€œΠ‘ΠΎΡΡ‚ΠΎΡΠ½ΠΈΠ΅β€ вашСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€œΠΠ΄Ρ€Π΅Ρβ€, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ состоянии Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠ΅ состояниС находится Π² вашСм государствС Ρ‚Π°Π±Π»ΠΈΡ†Π°.

A суррогатный ΠΊΠ»ΡŽΡ‡ – это сдСланноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с СдинствСнной Ρ†Π΅Π»ΡŒΡŽ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ строки. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это обозначаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ автоматичСского увСличСния.

ВсС ΠΊΠ»ΡŽΡ‡ΠΈ – это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² качСствС суррогатов для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚. E.F.Codd объяснил ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ присваиваСмых систСмой суррогатов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ [1]:

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ систСму Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ суррогат, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ контроля Π½Π°Π΄ своСй Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Π΅Π΅ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° отобраТаСтся Π½Π° Π½ΠΈΡ….

Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ суррогатным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сразу ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Codd ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π», Ρ‡Ρ‚ΠΎ такая функция Π±ΡƒΠ΄Π΅Ρ‚ прСдоставлСна ​​БУБД. Π‘Π£Π‘Π” Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ возмоТности. Клавиши ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΈΠ΄Π½Ρ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π‘Π£Π‘Π”, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ понятиС суррогата слСгка измСнилось Π² использовании. Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² профСссии управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для обозначСния ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ отобраТаСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² бизнСс-Π΄ΠΎΠΌΠ΅Π½Π΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΏΠΎ сущСству Π½Π΅ связано с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ гСнСрируСтся ΠΊΠ»ΡŽΡ‡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ β€œΠΈΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎβ€ ΠΎΠ½ воспринимаСтся. ВсС ΠΊΠ»ΡŽΡ‡ΠΈ состоят ΠΈΠ· символов, ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π½Ρ‹Ρ… людьми ΠΈΠ»ΠΈ машинами. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, СдинствСнноС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° β€œΡΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚β€ относится ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΎΠ½ создан ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ²Ρ‹ Π΅Π³ΠΎ значСния.

[1] Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для большСй значимости, E.F.Codd, 1979

Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСт собой числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ SQL Server Microsoft позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ столбСц с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ свойством, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ суррогатныС значСния ΠΊΠ»ΡŽΡ‡Π°.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ PRIMARY KEY ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π£ΠΠ˜ΠšΠΠ›Π¬ΠΠ«Π• значСния.
Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ значСния NULL.
Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Π°Π±Π»ΠΈΡ† Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΈ каТдая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ МишСль ΠŸΡƒΠ»Π΅Ρ‚ описываСт это ΠΎΡ‡Π΅Π½ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ:

Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ – искусствСнно созданная Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‡Π°Ρ‰Π΅ всСго управляСмый систСмой, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ счСтчик, значСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 1 Π΄ΠΎ n, Π³Π΄Π΅ n прСдставляСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ максимального количСства строк. Π’ SQL Server, Π²Ρ‹ создаСтС суррогатный ΠΊΠ»ΡŽΡ‡, назначая свойство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ столбСц с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ суррогатный ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ составного ΠΊΠ»ΡŽΡ‡Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ столбца ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

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

ЕстСствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² искусствСнных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ·Π»Π°Π³Π°Π΅Ρ‚ взгляд Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, рСгулярно ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‰ΡƒΡŽΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… новостСй, посвящённых Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π Π‘Π£Π‘Π”.

О сущности ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

КаТдая запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, входящСй Π² Π Π‘Π£Π‘Π”, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (ПК) β€” Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΅Ρ‘ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π‘Π»ΡƒΡ‡Π°ΠΉ, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° сущСствованиС, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ рассматриваСтся.

Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ β€”
ЕстСствСнный ΠšΠ»ΡŽΡ‡ (Π•Πš) β€” Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² описываСмой записью сущности, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π΅Ρ‘ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€ паспорта для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°);
ΠΈΠ»ΠΈ
Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½Ρ‹ΠΉ ΠšΠ»ΡŽΡ‡ (БК) β€” автоматичСски сгСнСрированноС ΠΏΠΎΠ»Π΅, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связанноС с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ содСрТаниСм записи. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² Ρ€ΠΎΠ»ΠΈ БК выступаСт Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° INTEGER.

ЕстСствСнно, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС ΠΈ Π½Π΅ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Π½ΠΎ сСйчас дискуссия вСдётся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π²ΡƒΡ… Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ….

Когда ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ БК

Для понимания мСста ΠΈ значСния БК рассмотрим этап проСктирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ вводятся Π² структуру Π‘Π”, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΈΡ… ввСдСния.

Для ясности рассмотрим Π‘Π” ΠΈΠ· 2-Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ β€” Π“ΠΎΡ€ΠΎΠ΄Π° (City) ΠΈ Π›ΡŽΠ΄ΠΈ (People) ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΠΎΠ΄ характСризуСтся HΠ°Π·Π²Π°Π½ΠΈΠ΅ΠΌ (Name), всС Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ названия, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ характСризуСтся Π€Π°ΠΌΠΈΠ»ΠΈΠ΅ΠΉ (Family), Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ паспорта (Passport) ΠΈ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠΌ проТивания (City). Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ паспорта. HΠ° этапС составлСния инфологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ Π‘Π” Π΅Ρ‘ структура ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° ΠΈ для Π•Πš ΠΈ для БК.

Для Π•Πš всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ. Для БК Π΄Π΅Π»Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ этап ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ:

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ добавлСния БК выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚ΠΎ мСханичСская опСрация, которая Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ инфологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния инфологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ эти Π΄Π²Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… эквивалСнтны.

Π—Π°Ρ‡Π΅ΠΌ всё это Π½Π°Π΄ΠΎ

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос β€” Π° Π·Π°Ρ‡Π΅ΠΌ? Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ поля, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ? Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π² эту Β«ΠΌΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽΒ» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ сопровоТдСния

Π­Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ БК Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ наибольшиС прСимущСства. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ Β«Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Β» β€” ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ нСзависимо ΠΈ Π½Π΅ затрагивая ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ.

HΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ названия. РСшСно ввСсти Π² City Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ β€” Π Π΅Π³ΠΈΠΎΠ½ (Region) ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ПК (City, Region). Π’ случаС Π•Πš β€” измСняСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° City, измСняСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° People β€” добавляСтся ΠΏΠΎΠ»Π΅ Region (Π΄Π°, Π΄Π°, для всСх записСй, ΠΏΡ€ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ»Ρ‡Ρƒ), ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ всС запросы, Π² Ρ‚ΠΎΠΌ числС Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… участвуСт City, Π² Π½ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ строка AND XXX.Region = City.Region.

Π”Π°, Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π±Ρ‹Π», Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСров сильно Π½Π΅ Π»ΡŽΠ±ΡΡ‚ ALTER TABLE Π½Π° поля, входящиС Π² PRIMARY KEY ΠΈ FOREIGN KEY.

Π’ случаС БК β€” добавляСтся ΠΏΠΎΠ»Π΅ Π² City, измСняСтся UNIQUE CONSTRAINT. Всё.

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Π² случаС БК ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ списка ΠΏΠΎΠ»Π΅ΠΉ Π² SELECT Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ заставляСт ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ JOIN. Π’ случаС Π•Πš β€” добавилось ΠΏΠΎΠ»Π΅, Π½Π΅ входящСС Π² ПК связанной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€” пСрСписывайтС.

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” помСнялся Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… поля, входящСго Π² Π•Πš. И ΠΎΠΏΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠΈ ΠΊΡƒΡ‡ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, Π·Π°Π½ΠΎΠ²ΠΎ оптимизация индСксов…

Π’ условиях ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° это достоинство БК само ΠΏΠΎ сСбС достаточно для ΠΈΡ… использования.

УмСньшСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π‘Π”

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ срСдняя Π΄Π»ΠΈΠ½Π° названия Π³ΠΎΡ€ΠΎΠ΄Π° β€” 10 Π±Π°ΠΉΡ‚. Π’ΠΎΠ³Π΄Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² срСднСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ 10 Π±Π°ΠΉΡ‚ для хранСния ссылки Π½Π° Π³ΠΎΡ€ΠΎΠ΄ (Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ нСсколько большС Π·Π° счёт слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° VARCHAR ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π·Π° счёт индСкса ΠΏΠΎ People.City, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ придётся ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ REFERENCES Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эффСктивно). Π’ случаС БК β€” 4 Π±Π°ΠΉΡ‚Π°. Экономия β€” ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 6 Π±Π°ΠΉΡ‚ Π½Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 10 Мб для Π³. Hовосибирска. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π‘Π” β€” Π½Π΅ ΡΠ°ΠΌΠΎΡ†Π΅Π»ΡŒ, Π½ΠΎ это, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΈ ΠΊ росту быстродСйствия.

Π—Π²ΡƒΡ‡Π°Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π‘Π” ΠΌΠΎΠΆΠ΅Ρ‚ сама ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π•Πš, подставив вмСсто Π½Π΅Π³ΠΎ Π² People Π½Π΅ΠΊΡƒΡŽ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (фактичСски создав БК сама). HΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… коммСрчСских сСрвСров Π‘Π” Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, ΠΈ Π΅ΡΡ‚ΡŒ основания ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ обоснованиСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ мнСния являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ подстановкС Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ADD CONSTRAINT … FOREIGN KEY ΠΈΠ»ΠΈ DROP CONSTRAINT … FOREIGN KEY Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΡˆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ пСрСтряскС Ρ‚Π°Π±Π»ΠΈΡ†, с ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ всСй Π‘Π” (Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ физичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π½Π° Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ)) всС поля, входящиС Π² CONSTRAINT.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Вопрос достаточно спорный, ΠΎΠ΄Π½Π°ΠΊΠΎ, исходя ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ:

быстродСйствиС систСмы Π½Π° БК Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Π²Ρ‹ΡˆΠ΅. И Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ:

Π•Πš ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокоС быстродСйствиС, ΠΊΠΎΠ³Π΄Π°:

Π’.Π΅., Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это запрос Ρ‚ΠΈΠΏΠ°:

Π’ случаС БК этот запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ

Казалось Π±Ρ‹, Π•Πš Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ простой запрос с мСньшим количСством Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнится быстрСС. HΠΎ ΠΈ Ρ‚ΡƒΡ‚ Π½Π΅ всё Ρ‚Π°ΠΊ просто: Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ† для Π•Πš β€” большС (см. Π²Ρ‹ΡˆΠ΅) ΠΈ дисковая Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΡŠΠ΅ΡΡ‚ прСимущСство, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π° счёт отсутствия JOIN`Π°. Π•Ρ‰Ρ‘ сильнСС это скаТСтся, Ссли ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π° ΠΏΡ€ΠΈ сколько-Π»ΠΈΠ±ΠΎ сущСствСнном объСмС Ρ‚Π°Π±Π»ΠΈΡ† ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ). Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ поиск, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, осущСствляСтся ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ полям Ρ‚ΠΈΠΏΠ° CHAR, DATETIME ΠΈ Ρ‚.ΠΏ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ часто Π±Ρ‹Π²Π°Π΅Ρ‚ быстрСС Π½Π°ΠΉΡ‚ΠΈ Π² справочной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ запросом Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ JOIN`Π° ΠΏΠΎ быстрому INTEGER-индСксу ΠΎΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒ подходящиС записи ΠΈΠ· большой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НапримСр:

Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Ρ‹ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ

Π’ случаС Π•Πš β€” Π±ΡƒΠ΄Π΅Ρ‚ INDEX SCAN большой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ People ΠΏΠΎ CHARACTER-индСксу. Π’ случаС БК β€” INDEX SCAN мСньшСй CITY ΠΈ JOIN ΠΏΠΎ эффСктивному INTEGER индСксу.

А Π²ΠΎΡ‚ Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = β€˜Π˜Π²Π°Π½ΠΎΠ²ΠΎβ€™ Π½Π° LIKE β€˜%ваново’, Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠΈ Π•Πš ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ БК Π½Π° порядок ΠΈ Π±ΠΎΠ»Π΅Π΅.

Аналогично, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС с Π•Πš понадобится Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² запрос ΠΏΠΎΠ»Π΅ ΠΈΠ· City, Π½Π΅ входящСС Π² Π΅Ρ‘ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ β€” JOIN Π±ΡƒΠ΄Π΅Ρ‚ осущСствлятся ΠΏΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ индСксу ΠΈ быстродСйствиС ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Π½ΠΈΠΆΠ΅ уровня БК. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ сам, Π½ΠΎ ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ вспомнит, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа Π΅Π³ΠΎ запросов ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ SELECT * FROM ЕдинствСннаяВаблица. Π£ мСня β€” Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½ΠΎ ΠΌΠ°Π»Ρ‹ΠΉ.

Π”Π°, сторонники Π•Πš Π»ΡŽΠ±ΡΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² качСствС достоинства Β«ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Β», которая Π² случаС Π•Πš растСт. Π•Ρ‰Ρ‘ Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ максимальной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°, содСрТащая всю Π‘Π” Π² Π²ΠΈΠ΄Π΅ flat-file. Π›ΡŽΠ±ΠΎΠ΅ Β«ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ информативности Ρ‚Π°Π±Π»ΠΈΡ†Β» Π΅ΡΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ стСпСни дублирования Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости обновлСния Π΄Π°Π½Π½Ρ‹Ρ…

HΠ° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π•Πš быстрСС β€” Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈ INSERT Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ лишнСго поля ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ, хотя это Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ высокой интСнсивности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ ΠΈ это Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‚.ΠΊ. Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСрвСры ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ вставку записСй, Ссли ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ полю построСн ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ CLUSTERED индСкс. Π’ случаС БК это элСмСнтарно, Π² случаС Π•Πš β€” ΡƒΠ²Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСдостиТимо. ΠšΡ€ΠΎΠΌΠ΅ этого, INSERT Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° сторонС MANY (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ происходит Ρ‡Π°Ρ‰Π΅) ΠΏΠΎΠΉΠ΄Π΅Ρ‚ быстрСС, Ρ‚.ΠΊ. REFERENCES Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ быстрому индСксу.

ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ поля, входящСго Π² Π•Πš, придётся каскадно ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ всС связанныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°ΠΊ, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π›Π΅Π½ΠΈΠ½Π³Ρ€Π°Π΄Π° Π² Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ с нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° нСсколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй. ОбновлСниС любого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π² систСмС с БК ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ обновлСнию Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ записи. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² случаС распрСдСлСнной систСмы, наличия Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² ΠΈ Ρ‚.ΠΏ. ситуация Ρ‚ΠΎΠ»ΡŒΠΊΠΎ усугубится. Если ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ поля Π½Π΅ входящиС Π² Π•Πš – быстродСйствиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ.

Π•Ρ‰Π΅ ΠΎ CASCADE UPDATE

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС сСрвСры Π‘Π” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΡ… Π½Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. АргумСнты «это Ρƒ вас сСрвСр ΠΊΡ€ΠΈΠ²ΠΎΠΉΒ» Π² этом случаС вряд Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹. Π­Ρ‚ΠΎ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ для обновлСния, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда просто (приводился Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΏΡ€ΠΈ отсутствии CASCADE UPDATE ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΡΡ‚ΡŒ ссылки, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ REFERENCES ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ копию записи, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда допустимо (Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ UNIQUE)).

Π’ случаС БК Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ быстрСС, ΠΏΠΎ Ρ‚ΠΎΠΉ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° REFERENCES ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎ быстрому индСксу.

А Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π•Πš?

HΠΈΡ‡Ρ‚ΠΎ Π½Π΅ Π²Π΅Ρ‡Π½ΠΎ ΠΏΠΎΠ΄ Π›ΡƒΠ½ΠΎΠΉ. Π‘Π°ΠΌΡ‹ΠΉ, казалось Π±Ρ‹, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π²Π΄Ρ€ΡƒΠ³ отмСняСтся ΠΈ пСрСстаёт Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ (Π΄Π°Π»Π΅ΠΊΠΎ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ β€” Ρ€ΡƒΠ±Π»ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈ Ρ€ΡƒΠ±Π»ΡŒ Π΄Π΅Π½ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ Π½Π΅ΡΡ‚ΡŒ числа). АмСриканцы Ρ€ΡƒΠ³Π°ΡŽΡ‚ΡΡ Π½Π° Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ страхования, Microsoft β€” Π½Π° китайскиС сСрыС сСтСвыС ΠΏΠ»Π°Ρ‚Ρ‹ с Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈΡΡ MAC-адрСсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ GUID, Π²Ρ€Π°Ρ‡ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ смСнС ΠΏΠΎΠ»Π°, Π° Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…. Π’ этих условиях (ΠΈ учитывая Π·Π°ΠΊΠΎΠ½ нСубывания энтропии) Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² систСму тСзис ΠΎ нСизмСнности Π•Πš β€” Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ сСбя ΠΌΠΈΠ½Ρƒ. Π˜Ρ… Π½Π°Π΄ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ логичСский слой ΠΈ ΠΏΠΎ возмоТности ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’Π°ΠΊ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ пСрСТиваСтся ΠΊΡƒΠ΄Π° Π»Π΅Π³Ρ‡Π΅. Π”Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅: ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΈΠ· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² этой сущности β€” Π½Ρƒ, странно, Ρ‡Ρ‚ΠΎ-Π»ΠΈ. HΠΎΠΌΠ΅Ρ€ паспорта Π΅Ρ‰Ρ‘ Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. БК ΠΆΠ΅ β€” это нСкая субстанция, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. ИмСнно ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· Π΅Ρ‘ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сторонников Π•Πš

Π’ систСмС с БК Π½Π΅ осущСствляСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π΅ осущСствлялся Π±Ρ‹, Ссли Π±Ρ‹ Π½Π° поля, входящиС Π² Π•Πš Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ограничСния Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π•Πš, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² Π‘Π” Π² любом случаС.

Π’ систСмС с Π•Πš мСньшС JOIN`ΠΎΠ², ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, запросы ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅

Π”Π°, мСньшС. HΠΎ, Π² систСмС с БК Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ:

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ БК Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ

Вспомним ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: Π’Π°Π±Π»ΠΈΡ†Π° находится Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ (3НЀ), Ссли ΠΎΠ½Π° удовлСтворяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ 2НЀ, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΅Ρ‘ Π½Π΅ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ зависит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π΅ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ поля.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ€Π΅Ρ‡ΠΈ ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… полях Ρ‚Π°ΠΌ Π½Π΅ ΠΈΠ΄Ρ‘Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ 3НЀ. Π’ΠΎΠΎΠ±Ρ‰Π΅, для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с нСсколькими Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ ΠΎ 3 НЀ, Π° ΠΎ ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π€ΠΎΡ€ΠΌΠ΅ Бойса-Кодда, которая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π° для Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

Π˜Ρ‚Π°ΠΊ: Π’Π°Π±Π»ΠΈΡ†Π° находится Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Бойса-Кодда (ΠΠ€Π‘Πš), Ссли ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли любая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅Π³ΠΎ полями сводится ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ БК, Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ…ΠΎΡ‚ΡŒ Π΄ΠΎ 5НЀ. Π’ΠΎΡ‡Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ БК ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ БК ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ согласуСтся с ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ сущности, нормализация ΠΈ Π΅ΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ информативности ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. Волько БК ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Π½Π° ΠΌΠ΅ΠΆΡ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ (Ρ‚ΠΈΠΏΠ° устранСния каскадных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ). Π’Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, систСма с БК β€” святСС ΠŸΠ°ΠΏΡ‹ Римского :-). Π’ самом Π΄Π΅Π»Π΅ – ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ приходится ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС этого ΠΆΠ΅ поля Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… записях Π­Π’ΠžΠ™ Π–Π• Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, рассматриваСтся ΠΊΠ°ΠΊ аномалия обновлСния. Но Π² систСмС с Π•Πš придСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π’ Π‘Π’Π―Π—ΠΠΠΠžΠ™ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π° сторонС 1 ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ 1:N. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эта ситуация с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния физичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π‘Π” Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅. Π’ систСмС с БК Ρ‚Π°ΠΊΠΈΡ… ситуаций Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.
Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π² систСмС с Π•Πš ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Π΅Π΅

Максимальной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°, содСрТащая всю Π‘Π” Π² Π²ΠΈΠ΄Π΅ flat-file. Π›ΡŽΠ±ΠΎΠ΅ Β«ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ информативности Ρ‚Π°Π±Π»ΠΈΡ†Β» Π΅ΡΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ стСпСни дублирования Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π”Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹Β» сомнитСлСн. Π’ΠΈΠ΄ΠΈΠΌΠΎ, Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π‘Π”, которая Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°.

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

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ – Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ БК позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ, Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π‘Π”. РазумССтся, это Π½Π΅ панацСя. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅Ρ‚ REFERENCES ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ осущСствляСтся интСнсивная вставка Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.ΠΏ.) Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π•Πš ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ПК Π²ΠΎΠΎΠ±Ρ‰Π΅ (послСднСС катСгоричСски ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π Π‘Π£Π‘Π” ΠΈ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ). Но Ρ€Π΅Ρ‡ΡŒ шла ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ситуации ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ приходится ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒΡΡ).

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

ЕстСствСнныС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² искусcΡ‚Π²Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Анатолий Π’Π΅Π½Ρ†Π΅Ρ€, ΡΡ‚Π°Ρ‚ΡŒΡ 6-20 июля 1999, вСрсия 1.1.

О сущности ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

КаТдая запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, входящСй Π² Π Π‘Π£Π‘Π”, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (ПК) – Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΅Ρ‘ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π‘Π»ΡƒΡ‡Π°ΠΉ, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° сущСствованиС, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ рассматриваСтся.

Когда ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ БК?

Для понимания мСста ΠΈ значСния БК рассмотрим этап проСктирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ вводятся Π² структуру Π‘Π”, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΈΡ… ввСдСния.

Для ясности рассмотрим Π‘Π” ΠΈΠ· 2-Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ – Π“ΠΎΡ€ΠΎΠ΄Π° (City) ΠΈ Π›ΡŽΠ΄ΠΈ (People) ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΠΎΠ΄ характСризуСтся HΠ°Π·Π²Π°Π½ΠΈΠ΅ΠΌ (Name), всС Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ названия, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ характСризуСтся Π€Π°ΠΌΠΈΠ»ΠΈΠ΅ΠΉ (Family), Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ паспорта (Passport) ΠΈ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠΌ проТивания (City). Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ паспорта. HΠ° этапС составлСния инфологичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ Π‘Π” Π΅Ρ‘ структура ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° ΠΈ для Π•Πš ΠΈ для БК.

CREATE TABLE City(
Name VARCHAR(30) NOT NULL PRIMARY KEY
);

CREATE TABLE People(
Passport CHAR(9) NOT NULL PRIMARY KEY,
Family VARCHAR(20) NOT NULL,
City VARCHAR(30) NOT NULL REFERENCES City(Name)
);

Π—Π°Ρ‡Π΅ΠΌ всё это Π½Π°Π΄ΠΎ?

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ сопровоТдСния

Π­Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ БК Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ наибольшиС прСимущСства. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ «Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†» – ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ нСзависимо ΠΈ Π½Π΅ затрагивая ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ.

HΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ названия. РСшСно ввСсти Π² City Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ – Π Π΅Π³ΠΈΠΎΠ½ (Region) ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ПК (City, Region). Π’ случаС Π•Πš – измСняСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° City, измСняСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° People – добавляСтся ΠΏΠΎΠ»Π΅ Region (Π΄Π°, Π΄Π°, для всСх записСй, ΠΏΡ€ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ»Ρ‡Ρƒ), ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ всС запросы, Π² Ρ‚ΠΎΠΌ числС Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… участвуСт City, Π² Π½ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ строка AND XXX.Region = City.Region.

Π”Π°, Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π±Ρ‹Π», Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСров сильно Π½Π΅ Π»ΡŽΠ±ΡΡ‚ ALTER TABLE Π½Π° поля, входящиС Π² PRIMARY KEY ΠΈ FOREIGN KEY.

Π’ случаС БК – добавляСтся ΠΏΠΎΠ»Π΅ Π² City, измСняСтся UNIQUE CONSTRAINT. Всё.

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – Π² случаС БК ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ списка ΠΏΠΎΠ»Π΅ΠΉ Π² SELECT Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ заставляСт ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ JOIN. Π’ случаС Π•Πš – добавилось ΠΏΠΎΠ»Π΅, Π½Π΅ входящСС Π² ПК связанной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ – пСрСписывайтС.

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – помСнялся Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… поля, входящСго Π² Π•Πš. И ΠΎΠΏΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠΈ ΠΊΡƒΡ‡ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, Π·Π°Π½ΠΎΠ²ΠΎ оптимизация индСксов.

Π’ условиях ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° это достоинство БК само ΠΏΠΎ сСбС достаточно для ΠΈΡ… использования.

УмСньшСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π‘Π”

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ срСдняя Π΄Π»ΠΈΠ½Π° названия Π³ΠΎΡ€ΠΎΠ΄Π° – 10 Π±Π°ΠΉΡ‚. Π’ΠΎΠ³Π΄Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² срСднСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ 10 Π±Π°ΠΉΡ‚ для хранСния ссылки Π½Π° Π³ΠΎΡ€ΠΎΠ΄ (Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ нСсколько большС Π·Π° счёт слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° VARCHAR ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π·Π° счёт индСкса ΠΏΠΎ People.City, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ придётся ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ REFERENCES Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эффСктивно). Π’ случаС БК – 4 Π±Π°ΠΉΡ‚Π°. Экономия – ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 6 Π±Π°ΠΉΡ‚ Π½Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 10 Мб для Π³. Hовосибирска. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π‘Π” – Π½Π΅ ΡΠ°ΠΌΠΎΡ†Π΅Π»ΡŒ, Π½ΠΎ это, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΈ ΠΊ росту быстродСйствия.

Π—Π²ΡƒΡ‡Π°Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π‘Π” ΠΌΠΎΠΆΠ΅Ρ‚ сама ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π•Πš, подставив вмСсто Π½Π΅Π³ΠΎ Π² People Π½Π΅ΠΊΡƒΡŽ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (фактичСски создав БК сама). HΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… коммСрчСских сСрвСров Π‘Π” Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, ΠΈ Π΅ΡΡ‚ΡŒ основания ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ обоснованиСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ мнСния являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ подстановкС Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ADD CONSTRAINT … FOREIGN KEY ΠΈΠ»ΠΈ DROP CONSTRAINT … FOREIGN KEY Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΡˆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ пСрСтряскС Ρ‚Π°Π±Π»ΠΈΡ†, с ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ всСй Π‘Π” (Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ физичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π½Π° Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ)) всС поля, входящиС Π² CONSTRAINT.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ случаС Π•Πš – Π±ΡƒΠ΄Π΅Ρ‚ INDEX SCAN большой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ People ΠΏΠΎ CHARACTER-индСксу. Π’ случаС БК – INDEX SCAN мСньшСй CITY ΠΈ JOIN ΠΏΠΎ эффСктивному INTEGER индСксу.

А Π²ΠΎΡ‚ Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = ‘Иваново’ Π½Π° LIKE ‘%Π²Π°Π½ΠΎΠ²ΠΎ’, Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠΈ Π•Πš ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ БК Π½Π° порядок ΠΈ Π±ΠΎΠ»Π΅Π΅.

Аналогично, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС с Π•Πš понадобится Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² запрос ΠΏΠΎΠ»Π΅ ΠΈΠ· City, Π½Π΅ входящСС Π² Π΅Ρ‘ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ – JOIN Π±ΡƒΠ΄Π΅Ρ‚ осущСствлятся ΠΏΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ индСксу ΠΈ быстродСйствиС ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Π½ΠΈΠΆΠ΅ уровня БК. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ сам, Π½ΠΎ ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ вспомнит, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа Π΅Π³ΠΎ запросов ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ SELECT * FROM ЕдинствСннаяВаблица. Π£ мСня – Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½ΠΎ ΠΌΠ°Π»Ρ‹ΠΉ.

Π”Π°, сторонники Π•Πš Π»ΡŽΠ±ΡΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² качСствС достоинства «ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†», которая Π² случаС Π•Πš растСт. Π•Ρ‰Ρ‘ Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ максимальной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°, содСрТащая всю Π‘Π” Π² Π²ΠΈΠ΄Π΅ flat-file. Π›ΡŽΠ±ΠΎΠ΅ «ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ информативности Ρ‚Π°Π±Π»ΠΈΡ†» Π΅ΡΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ стСпСни дублирования Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости обновлСния Π΄Π°Π½Π½Ρ‹Ρ…

INSERT

UPDATE

Π•Ρ‰Π΅ ΠΎ CASCADE UPDATE

DELETE

А Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π•Πš?

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сторонников Π•Πš

Π’ систСмС с БК Π½Π΅ осущСствляСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π’ систСмС с Π•Πš мСньшС JOIN`ΠΎΠ², ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, запросы ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π•Πš Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ

Вспомним ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: Π’Π°Π±Π»ΠΈΡ†Π° находится Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ (3НЀ), Ссли ΠΎΠ½Π° удовлСтворяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ 2НЀ, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΅Ρ‘ Π½Π΅ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ зависит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π΅ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ поля.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ€Π΅Ρ‡ΠΈ ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… полях Ρ‚Π°ΠΌ Π½Π΅ ΠΈΠ΄Ρ‘Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ 3НЀ. Π’ΠΎΠΎΠ±Ρ‰Π΅, для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с нСсколькими Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ ΠΎ 3 НЀ, Π° ΠΎ ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π€ΠΎΡ€ΠΌΠ΅ Бойса-Кодда, которая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π° для Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

Π˜Ρ‚Π°ΠΊ, Π’Π°Π±Π»ΠΈΡ†Π° находится Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Бойса-Кодда (ΠΠ€Π‘Πš), Ссли ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли любая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅Π³ΠΎ полями сводится ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ БК, Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ…ΠΎΡ‚ΡŒ Π΄ΠΎ 5НЀ. Π’ΠΎΡ‡Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ БК ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ БК ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ согласуСтся с ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ сущности, нормализация ΠΈ Π΅ΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ информативности ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. Волько БК ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Π½Π° ΠΌΠ΅ΠΆΡ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ (Ρ‚ΠΈΠΏΠ° устранСния каскадных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ). Π’Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, систСма с БК – святСС ΠŸΠ°ΠΏΡ‹ Римского :-). Π’ самом Π΄Π΅Π»Π΅ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ приходится ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС этого ΠΆΠ΅ поля Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… записях Π­Π’ΠžΠ™ Π–Π• Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, рассматриваСтся ΠΊΠ°ΠΊ аномалия обновлСния. Но Π² систСмС с Π•Πš придСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π’ Π‘Π’Π―Π—ΠΠΠΠžΠ™ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π° сторонС 1 ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ 1:N. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эта ситуация с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния физичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π‘Π” Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅. Π’ систСмС с БК Ρ‚Π°ΠΊΠΈΡ… ситуаций Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π² систСмС с Π•Πš ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Π΅Π΅

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

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ – Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ БК позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ, Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π‘Π”. РазумССтся, это Π½Π΅ панацСя. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅Ρ‚ REFERENCES ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ осущСствляСтся интСнсивная вставка Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚. ΠΏ.) Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π•Πš ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ПК Π²ΠΎΠΎΠ±Ρ‰Π΅ (послСднСС катСгоричСски ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π Π‘Π£Π‘Π” ΠΈ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ). Но Ρ€Π΅Ρ‡ΡŒ шла ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ситуации ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ приходится ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒΡΡ).

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

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 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *