Сурогатний ключ

Сурогатний ключ (також штучний ключ, ідентифікатор сутності, згенерований ключ, послідовний номер, непідтверджений ключ, технічний ключ або довільний унікальний ідентифікатор[1]) у базах даних — унікальний ідентифікатор сутності модельованого світу чи об'єкта бази даних. Сурогатний ключ не отримується з даних застосунку, на відміну від природного (чи бізнес) ключа.

Визначення

Існують принаймні два визначення сурогату:

Сурогат (1) — Галл, Оулетт і Тодд (1976)
Сурогат представляє сутність у зовнішньому світі. Сурогат генерується всередині системи, але все ж є видимим для користувача чи застосунку[2].
Сурогат (2) — Вайрінга та Де Йонге (1991)
Сурогат представляє об'єкт у базі даних, яким він є. Сурогат генерується всередині системи і не є видимим для користувача чи застосунку.

Визначення сурогата (1) стосується радше моделі даних, а ніж моделі зберігання[en] і використовується далі в цій статті[3].

Важлива різниця між сурогатним і первинним ключем залежить від того, якою є база даних: поточною чи хронологічною. Оскільки поточна база даних зберігає лише на даний момент валідні дані, то в ній наявна точна відповідність між сурогатом у модельованому світі та первинним ключем бази даних. У цьому випадку сурогат може бути використано як первинний ключ, породжуючи термін сурогатний ключ. У хронологічній базі даних, однак, існує відношення багато-до-одного між первинними ключами та сурогатом. Оскільки кожному сурогату можуть відповідати декілька об'єктів бази даних, то він не може використовуватися як первинний ключ; а отже, необхідний інший атрибут, який би разом із сурогатом унікально ідентифікував би кожний об'єкт.

Хоча Галл та ін. (1976) нічого про це не каже, решта стверджують, що сурогати повинні мати такі характеристики:

  • значення є унікальним у всій системі, а отже, не використовується повторно
  • значення генерується системою
  • значенням не маніпулюють ані користувач, ані застосунок
  • значення не містить семантичного змісту
  • значення невидиме користувачеві чи застосунку
  • значення не складається з інших значень різних доменів.

Сурогати на практиці

У поточній базі даних сурогатний ключ може бути первинним, що згенерований системою керування базами даних і не отримується з будь-яких даних застосунку в базі. Єдиним призначенням сурогатного ключа є діяти як первинний. Також є можливим існування сурогатного ключа на додачу до згенерованого базою даних UUID (наприклад, HR-номер кожного працівника, що відрізняється від його UUID).

Сурогатний ключ часто є послідовним числом (наприклад, у Sybase[en] чи SQL Server — «стовпчик-ідентифікатор», у PostgreSQL чи Informix — serial, в Oracle чи SQL Server — SEQUENCE, чи стовпчик, визначений з AUTO_INCREMENT у MySQL). Деякі бази даних надають UUID/GUID як можливий тип даних для сурогатних ключів (наприклад, UUID у PostgreSQL[4] або UNIQUEIDENTIFIER в SQL Server[5]).

Існування ключа, незалежного від усіх інших стовпчиків, ізолює відношення бази даних від змін значень або проектування (робить базу даних гнучкішою) та гарантує унікальність.

У хронологічній базі даних важливо розрізняти сурогатні та бізнес-ключі. Кожен рядок матиме і бізнес-ключ, і сурогатний ключ. Сурогатний ключ ідентифікує один унікальний рядок у базі даних, а бізнес-ключ — одну унікальну сутність модельованого світу. Один рядок таблиці подає частку часу, що має всі атрибути сутності у визначений проміжок часу. Ці частки зображують увесь проміжок часу однієї бізнес-сутності. Наприклад, таблиця EmployeeContracts може мати хронологічну інформацію для відстеження контрактних робочих годин. Бізнес-ключ для одного контракту буде ідентичним (неунікальним) в обох рядках, але сурогатний ключ для кожного рядка унікальний.

SurrogateKey BusinessKey EmployeeName WorkingHoursPerWeek RowValidFrom RowValidTo
1 BOS0120 Джон Сміт 40 2000-01-01 2000-12-31
56 P0000123 Боб Браун 25 1999-01-01 2011-12-31
234 BOS0120 Джон Сміт 35 2001-01-01 2009-12-31

Деякі проектувальники баз даних систематично використовують сурогатні ключі незалежно від придатності інших потенційних ключів, тоді як інші за наявності використовуватимуть ключ, уже присутній у даних.

Деякі альтернативні назви («згенерований системою ключ») описують радше спосіб генерації нових сурогатних значень, а не природу сурогатного концепту.

Підходи до генерації сурогатів включають:

Переваги

Незмінність

Сурогатні ключі не змінюються, поки існує рядок. Це має наступні переваги:

  • Застосунки не можуть втратити посилання на рядки бази даних (адже ідентифікатор ніколи не змінюється).
  • Дані первинного чи природного ключа завжди можуть бути змінені, навіть якщо база даних не підтримує каскадні оновлення зв'язаних зовнішніх ключів.

Зміни вимог

Атрибути, що унікально ідентифікують сутність, можуть змінюватися, що може анулювати придатність природних ключів. Розглянемо наступний приклад:

Мережне ім'я працівника обрано як природний ключ. Після злиття з іншою компанією необхідно додати нових працівників. Деякі нові мережні імена породжують конфлікти, оскільки вони генерувалися незалежно (коли компанії існували окремо).

Зазвичай у таких випадках до природного ключа повинен додаватися новий атрибут (наприклад, стовпчик original_company). З сурогатним ключем лише таблиця, що визначає сурогатний ключ, має зазнати змін. З природними ключами всі таблиці (а можливо й інше, суміжне програмне забезпечення), що їх використовують, зазнають змін.

Деякі проблемні галузі нечітко ідентифікують придатний природний ключ. Сурогатні ключі уникають вибору природного ключа, який може бути некоректним.

Продуктивність

Сурогатні ключі прагнуть бути компактного типу даних, як-от чотирибайтні цілі числа. Це дозволяє базі даних запитувати один ключовий стовпчик швидше за декілька. Більше того, ненадлишкове поширення ключів призводить до цілковитого балансу результатного б-дерева індексу. Сурогатні ключі є також дешевшими для з'єднань (порівнюються менше стовпчиків) за складені ключі.

Сумісність

При використанні деяких систем розробки застосунків баз даних, драйверів і систем об'єктно-реляційного відображення, як-от Ruby on Rails або Hibernate, набагато легше використовувати цілі числа чи GUID як сурогатні ключі для кожної таблиці замість природних ключів задля підтримки агностичних операцій над системою бази даних і відображення об'єкта в рядок.

Однорідність

Коли кожна таблиця має однорідний сурогатний ключ, деякі завдання можуть бути легко автоматизовані шляхом написання коду незалежним від таблиць способом.

Валідація

Можливо спроектувати ключі-значення, що відповідають загальновідомим шаблонам чи структурам, які можуть бути автоматично верифіковані. Наприклад, ключі, призначені для використання у деяких стовпчиках деяких таблиць, може бути спроектовано «інакше, ніж» ті, які призначені для іншого стовпчика чи таблиці, таким чином спрощуючи виявлення помилок застосунку, за яких ключі можуть бути переплутані. Проте, ця характеристика сурогатних ключів ніколи не має використовуватися для керування будь-якою логікою застосунку, адже вона порушує принципи нормалізації баз даних.

Недоліки

Дизасоціація

Значення згенерованих сурогатних ключів не стосуються реального сенсу даних у рядку. При перевірці рядка з зовнішнім ключем на іншу таблицю за допомогою сурогатного ключа значення останнього не може бути розрізнене на основі самого ключа. Кожен зовнішній ключ повинен бути з'єднаний для отримання пов'язаного елементу даних. Це також ускладнює аудит[джерело?] через неочевидність некоректних даних.

Сурогатні ключі неприродні для експортованих і спільних даних. Особливо складним є те, що таблиці з двох в іншому випадку однакових схем (наприклад, тестова та схема розробки) можуть мати записи, еквівалентні у бізнес-розумінні, але з різними ключами. Це можна пом'якшити, експортуючи не сурогатні ключі, а лише перехідні дані (найочевидніше, у виконуваних застосунках, що мають «живе» підключення до бази).

Оптимізація запитів

Реляційні бази даних припускають застосування унікального індексу як первинного ключа таблиці. Унікальний індекс слугує двом цілям: (1) забезпеченню цілісності сутностей, оскільки дані первинного ключа повинні бути унікальними по рядках, та (2) швидкому пошуку рядків при запитах. Оскільки сурогатні ключі замінюють атрибути-ідентифікатори таблиці — природні ключі — які є найзапитуванішими, то оптимізатор запитів змушений сканувати всю таблицю при задоволенні подібних запитів. Засобом повного сканування таблиці є застосування індексів на атрибути-ідентифікатори чи їх множини. Коли такі множини є потенційними ключами, індекс може бути унікальним.

Ці додаткові індекси, однак, займають дисковий простір і сповільнюють вставки та вилучення.

Нормалізація

Сурогатні ключі можуть призвести до повторюваних значень у будь-яких природних ключах. Унеможливлення таких дублікатів є частиною реалізації системи баз даних.

Моделювання бізнес-процесів

Оскільки сурогатні ключі неприродні, то під час моделювання бізнес-вимог можуть з'являтися вади. Бізнес-вимоги, покладаючись на природний ключ, згодом потребують трансляції в сурогатний. Однією зі стратегій є чітке розмежування логічної моделі (в якій немає сурогатних ключів) та її фізичної реалізації для забезпечення того, що логічна модель коректна та достатньо нормалізована, а також того, що фізична модель є коректною реалізацією логічної.

Випадкове розкриття

Власницька інформація може витікати у разі використання генераторів послідовних ключів. Шляхом віднімання попередньо та нещодавно згенерованих послідовних ключів можна з'ясувати кількість вставлених рядків за деякий період часу. Це може викрити, наприклад, кількість транзакцій або нових акаунтів за період. Існують кілька способів подолання цієї проблеми:

  • збільшення послідовного числа на довільне значення
  • генерування випадкового ключа на кшталт UUID

Випадкові припущення

Послідовно згенеровані сурогатні ключі можуть припускати, що події з більшим значенням сталися після подій з меншим. Це не обов'язково так, оскільки такі значення не гарантують часову послідовність, адже можливі відмови у вставках і залишення розривів, які можуть бути заповнені пізніше. Якщо хронологія є важливою, то дата й час повинні записуватися окремо.

Див. також

Примітки

  1. https://elib.lntu.edu.ua/sites/default/files/elib_upload/ЕНП_Саварин_Лепкий/teoretic/lec5.html
  2. Галл, П. А. В.; Оулетт, Дж.; Тодд, С. Дж. П. (1976). Relations and Entities. У Ніжссен, Джерард Марія (ред.). Modelling in Data Base Management Systems. Північна Голландія.
  3. Дейт (1998)
  4. UUID. PostgreSQL (англійською) .{{cite web}}: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)
  5. UNIQUEIDENTIFIER. MSDN (англійською) .{{cite web}}: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)
  6. Create Table. Oracle Database (англійською) . Oracle Corporation.{{cite web}}: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)
  7. Create Sequence (Transact-SQL). MSDN (англійською) .{{cite web}}: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)

Read other articles:

Bintang MahaputeraDianugerahkan oleh Presiden IndonesiaTipeBintang sipilDibentuk1959Negara IndonesiaKelayakanSipilStatusMasih dianugerahkanPemilik PertamaPresiden IndonesiaStatistikPenganugerahan pertama1959[1]Penganugerahan terakhir2023PrioritasTingkat lebih tinggiBintang Republik IndonesiaTingkat lebih rendahBintang JasaBintang KemanusiaanBintang Penegak DemokrasiBintang Budaya Parama DharmaBintang GerilyaBintang SaktiBintang Dharma Bintang Mahaputera adalah tanda kehormatan te...

 

 

Casimir PulaskiLukisan Jenderal Pulaski, oleh seniman Polandia Jan StykaNama asliKazimierz PułaskiLahir(1745-03-04)4 Maret 1745 atau (1745-03-06)6 Maret 1745Warsawa, Persemakmuran Polandia-LituaniaMeninggal11 Oktober 1779(1779-10-11) (umur 34)Savannah, Georgia, Amerika SerikatDikebumikanMonterey Square, SavannahPengabdianPersemakmuran Polandia – LituaniaAmerika SerikatDinas/cabangTentara Persemakmuran Polandia – LituaniaTentara KontinentalLama dinas1762–1779PangkatBrigadier g...

 

 

Dan Sullivan Senator Amerika Serikat dari AlaskaPetahanaMulai menjabat 3 Januari 2015Menjabat bersama Lisa Murkowski PendahuluMark BegichPenggantiPetahanaKomisioner Departemen Sumber Daya Alam AlaskaMasa jabatan6 Desember 2010 – 24 September 2013GubernurSean Parnell PendahuluThomas E. IrwinPenggantiJoseph BalashJaksa Agung Alaska ke-27Masa jabatan17 Juni 2009 – 30 November 2010GubernurSarah PalinSean Parnell PendahuluTalis J. ColbergPenggantiJohn J. BurnsAsis...

Basilika Santo PatrickGereja Katolik Paroki Santo Patrick, WaimateInggris: St Patrick's BasilicaBasilika Santo Patrick, Waimate44°43′51″S 171°03′05″E / 44.7308°S 171.0515°E / -44.7308; 171.0515Koordinat: 44°43′51″S 171°03′05″E / 44.7308°S 171.0515°E / -44.7308; 171.0515LokasiWaimate, South CanterburyNegara Selandia BaruDenominasiGereja Katolik RomaSitus webBasilika Santo Patrick, WaimateSejarahDidirikan1874Dedika...

 

 

Artikel ini perlu diwikifikasi agar memenuhi standar kualitas Wikipedia. Anda dapat memberikan bantuan berupa penambahan pranala dalam, atau dengan merapikan tata letak dari artikel ini. Untuk keterangan lebih lanjut, klik [tampil] di bagian kanan. Mengganti markah HTML dengan markah wiki bila dimungkinkan. Tambahkan pranala wiki. Bila dirasa perlu, buatlah pautan ke artikel wiki lainnya dengan cara menambahkan [[ dan ]] pada kata yang bersangkutan (lihat WP:LINK untuk keterangan lebih lanjut...

 

 

Шалфей обыкновенный Научная классификация Домен:ЭукариотыЦарство:РастенияКлада:Цветковые растенияКлада:ЭвдикотыКлада:СуперастеридыКлада:АстеридыКлада:ЛамиидыПорядок:ЯсноткоцветныеСемейство:ЯснотковыеРод:ШалфейВид:Шалфей обыкновенный Международное научное наз...

2018 American teen comedy TV series All NightGenreTeen comedyCreated byJason UbaldiStarring Chris Avila Brec Bassinger Chanel Celaya Ty Doran Teala Dunn Caleb Ray Gallegos Allie Grant Eva Gutowski Tetona Jackson Tom Maden Jenn McAllister Austin North Tequan Richmond Chester Rushing Jake Short ComposerJake MonacoCountry of originUnited StatesOriginal languageEnglishNo. of seasons1No. of episodes10ProductionExecutive producers Jordan Levin Shelley Zimmerman Brett Bouttier Joe Davola Brian Danne...

 

 

Air terjun Epupa. Air terjun Epupa (juga disebut air terjun Monte Negro di Angola) adalah sejumlah air terjun yang dibentuk oleh aliran Sungai Kunene di perbatasan Angola dengan Namibia di kawasan Kaokoland. Sungai Kunene memiliki lebar sebesar 0,5 km dan air terjunnya berada di daerah sepanjang 1,5 km. Ketinggian maksimal air terjun ini tercatat sebesar 37 m.[1] Nama Epupa sendiri merupakan kata dalam bahasa Herero yang berarti busa, yang mengacu kepada busa yang terbentuk ...

 

 

Deckenfresko Mariä Krönung, Pfarrkirche Kirchbichl (1784) Matthias Ruef (* 1745 in Volders; † 1822) war ein österreichischer Barockmaler. Er war ein Schüler Martin Knollers und arbeitete als dessen Gehilfe an den Fresken in der Abteikirche Neresheim und der Karlskirche in Volders mit. Selbstständig schuf er 1779 die künstlerisch wie ikonographisch bedeutenden[1] Wand- und Deckenfresken in der Pfarrkirche Wiesing[2] und 1784 die Deckenfresken in der Pfarrkirch...

Progetto:Forme di vita - implementazione Classificazione APG IV.Il taxon oggetto di questa voce deve essere sottoposto a revisione tassonomica. Se vuoi contribuire all'aggiornamento vedi Progetto:Forme di vita/APG IV. Come leggere il tassoboxPhalaris arundinaceaClassificazione APG IVDominioEukaryota RegnoPlantae (clade)Commelinidi OrdinePoales FamigliaPoaceae Classificazione CronquistDominioEukaryota RegnoPlantae DivisioneMagnoliophyta ClasseLiliopsida SottoclasseCommelinidae OrdineCyperales...

 

 

Cet article est une ébauche concernant une étoile. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Consultez la liste des tâches à accomplir en page de discussion. La naine orange Gliese 105 A à gauche et la naine rouge Gliese 105 C à droite. En astronomie, une étoile orange de la séquence principale, appelée communément naine orange, est une étoile de type K V (lire « K cinq »), c'est-à-...

 

 

Oikago, the framework of a horo A samurai wearing the horo, a garment used as a defense against arrowsA horo, opened up flat A horo (母衣) was a type of cloak or garment attached to the back of the armour worn by samurai on the battlefields of feudal Japan. Description A horo was around 1.8 m (6 ft) long and made from several strips of cloth sewn together with a fringe on the top and bottom edges. The cloth strips were sewn together and formed into a sort of bag which would fill w...

AwardCross of Honour and Military MeritTypeMilitary decorationAwarded forDistinguished service to the military in times of peace and for acts of courage in time of warCountry LuxembourgEligibilityIndividuals, units, and groups of peopleClaspsPalms for being mentioned in dispatchesEstablishedMay 1951Order of wearNext (higher)Military MedalNext (lower)Luxembourg War Cross[1] Cross of Honour and Military Merit (French: Croix d'Honneur et de Mérite militaire) is a military...

 

 

Sporting event delegationMexico at the1964 Summer OlympicsIOC codeMEXNOCMexican Olympic CommitteeWebsitewww.com.org.mx (in Spanish)in TokyoCompetitors94 (90 men and 4 women) in 15 sportsFlag bearer Fidel NegreteMedalsRanked 35th Gold 0 Silver 0 Bronze 1 Total 1 Summer Olympics appearances (overview)19001904–1920192419281932193619481952195619601964196819721976198019841988199219962000200420082012201620202024 Mexico competed at the 1964 Summer Olympics in Tokyo, Japan. 94 competitor...

 

 

Historic church in Massachusetts, United States Church in Massachusetts, United StatesSt. John the Evangelist Church(2017)St. John the Evangelist Church42°23′40″N 71°7′38″W / 42.39444°N 71.12722°W / 42.39444; -71.12722Location2254 Massachusetts AveCambridge, MassachusettsCountryUnited StatesDenominationRoman CatholicWebsitewww.stjohncambridge.orgHistoryStatusParish churchFoundedParish split from St. Peter's: January 1, 1893 (1893-01-01)Archit...

تحتاج هذه المقالة إلى الاستشهاد بمصادر إضافية لتحسين وثوقيتها. فضلاً ساهم في تطوير هذه المقالة بإضافة استشهادات من مصادر موثوق بها. من الممكن التشكيك بالمعلومات غير المنسوبة إلى مصدر وإزالتها. القاضي الجرجاني معلومات شخصية الميلاد سنة 933   جرجان  الوفاة سنة 1001 (67–68 ...

 

 

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cette biographie d'une personne vivante nécessite des références supplémentaires pour vérification (février 2024). Améliorez cet article en ajoutant des sources sûres. Toute information controversée sans source ou d'une source de mauvaise qualité à propos d'une personne vivante doit être supprimée immédiatement, en particulier si celle-ci est potentiellement diffamatoire. Pour une aide complémentai...

 

 

American steamboat built in 1903 Beeline ex Florence K History NameFlorence K Port of registryPort Townsend, Washington RoutePuget Sound Completed1903[2] In service1903 Identification121282[1] FateProbably scrapped, post-1945.[3] General characteristics TypeInland steamboat; later steam ferry Tonnageas built: 143 gross; 97 regist.[1] Lengthas built: 93 ft (28.35 m);[1] later: 97 ft (29.57 m)[4] Beamas built: 20 ft (6.10&...

Community in Nova Scotia, CanadaHantsportCommunity SealMotto: The Greater Avonport AreaHantsportLocation of Hantsport, Nova ScotiaCoordinates: 45°5′0″N 64°11′0″W / 45.08333°N 64.18333°W / 45.08333; -64.18333CountryCanadaProvinceNova ScotiaRegional MunicipalityWest Hants Regional MunicipalityFounded1789IncorporatedApril 25, 1895DissolvedJuly 1, 2015Government • CouncilorRobert (Bobbie) Zwicker • MLAChuck Porter (PC) •...

 

 

Internationaux de StrasbourgAltri nomiGrand Prix de Strasbourg Sport Tennis CategoriaWTA Tier V (1988-1989)WTA Tier IV (1990-1992)WTA Tier III (1993–2008)WTA International (2009–2020)WTA 250 (2021-2023) WTA 500 (2024-attuale) FederazioneWomen's Tennis Association Paese Francia LuogoStrasburgo ImpiantoTennis Club de Strasbourg SuperficieTerra rossa CadenzaAnnuale Partecipanti32M/32Q/16D Sito InternetSito ufficiale StoriaFondazione1987 Numero edizioni37 (2023) Detentrice Madison Keys D...