В реляційному моделюванні та реалізації баз даних, унікальний ключ (також відомий як потенційний ключ) відношення — мінімальний суперключ цього відношення; тобто множина атрибутів таких, що:
- відношення не має двох різних кортежів (тобто рядків або записів поширеною мовою баз даних) з однаковими значеннями цих атрибутів (що означає це, що множина атрибутів є суперключем);
- немає власне підмножини цих атрибутів, для якої виконується (1) (що означає мінімальність множини).
Коли колонка чи множина колонок визначається унікальним для системи керування базами даних, система перевіряє унікальність кожної множини значень перед призначенням обмеження. Після визначення колонок унікальними станеться помилка при спробі вставки з уже наявними значеннями. Деякі системи не дозволять оновити ключові значення, всі системи не дозволять дублікати. Це забезпечує підтримку унікальному і в основній таблиці, й у будь-якому відношенні, що пізніше зв'яжеться з нею.
Резюме
Ключі забезпечують засоби для користувачів баз даних і прикладних програм із визначення, доступу й оновлення інформації в таблиці бази даних. У будь-якій таблиці можуть бути декілька ключів. Наприклад, двома різними ключами в таблиці працівників можуть бути його номер і логін. Дотримання ключових обмежень (тобто обмежень унікальності) у таблиці також полягає у функції цілісності даних бази. СКБД запобігає оновленням, які призведуть до дублікатів ключових значень, і тим самим гарантує, що таблиці завжди дотримуватимуться бажаних правил унікальності. Правильний вибір ключів при проектуванні бази даних є важливим аспектом її цілісності.
Таблиця реляційної бази даних можуть мати один або більше доступних ключів (формально званих потенційними). Один із таких ключів на таблицю може бути призначено первинним; інші ключі називаються альтернативними.
Будь-який ключ може складатися з одного чи більше атрибутів. Наприклад, номер соціального страхування може бути ключем із єдиного атрибуту для працівника; сполучення номера рейсу та дати може бути ключем, який складається з двох атрибутів, для запланованого рейсу.
Існують декілька типів ключів, які використовуються в моделюванні баз даних і реалізаціях:
- Простий
- Ключ, зроблений лише з одного атрибуту.
- Зчеплений (англ. concatenated)
- Ключ, зроблений з понад одного атрибуту, з'єднані разом як єдиний ключ, як-от частина чи ціле ім'я зі згенерованим системою числом наприкінці, як часто використовується для електронних адрес.
- Складений
- Ключ, зроблений із принаймні двох атрибутів або простих ключів, лише прості ключі існують у складеному.
- Композитний (англ. composite)
- Ключ, який містить принаймні один складений із принаймні одним іншим атрибутом або простим ключем (це розширення складеного ключа).
- Природний
- Ключ, зроблений із даних, які існують поза поточною базою даних. Іншими словами, дані не згенеровані системою, як-от номер соціального страхування, імпортований із іншої системи.
- Сурогатний
- Штучний ключ, зроблений із даних, які призначені чи згенеровані системою, коли існує інший потенційний ключ. Сурогатні ключі зазвичай є числовими значеннями ідентифікаторів та часто використовуються з міркувань продуктивності.
- Потенційний
- Ключ, який може стати первинним.
- Первинний ключ
- Ключ, який обрано первинним. Лише один ключ у сутності вибирається первинним. Це ключ, якому дозволено мігрувати до інших сутностей для визначення відношень, які існують між сутностями. Коли модель даних інстанціюється у фізичну базу даних, це ключ, який система найбільше використовує при доступі до таблиці, чи з'єднанні таблиць разом при виборі даних.
- Альтернативний
- Непервинний ключ, який може використовуватися для визначення лише одного рядка в таблиці. Альтернативні ключі можуть використовуватися як первинні в однотабличній вибірці.
- Зовнішній
- Унікальний ключ, який мігрував до іншої сутності.
У найосновнішому визначенні «ключ — унікальний ідентифікатор», тому унікальний ключ є плеоназмом. Ключі, що знаходяться в їх початковій сутності, є унікальними в цій сутності. Ключі, що мігрують до іншої сутності, можуть бути чи не бути унікальними, залежно від конструкції та їх використання в іншій таблиці. Зовнішні ключі можуть бути первинним у іншій таблиці; наприклад, PersonID може стати EmployeeID у таблиці Employee. У цьому випадку EmployeeID є і зовнішнім ключем, і унікальним первинним, це означає, що таблиця має відношення 1:1. У випадку, коли сутність осіб містить ID біологічного батька, ID батька не очікується унікальним, оскільки батько може мати понад одну дитину.
Ось приклад первинного ключа, що стає зовнішнім у пов'язаній таблиці. ID мігрує з таблиці Автор до таблиці Книга.
Схема таблиці Автор: Автор(ID, Ім'я, Адреса, Народження) Схема таблиці Книга: Книга(ISBN, AuthorID, Назва, Видавець, Ціна)
Тут ID слугує первинним ключем таблиці «Автор», але також AuthorID слугує зовнішнім ключем у таблиці «Книга». Зовнішній ключ слугує посиланням, а відтак і зв'язком між двома пов'язаними таблицями у цій простій базі даних.
В реляційній базі даних потенційний ключ унікально ідентифікує кожен рядок значень даних у таблиці бази. Потенційний ключ містить єдину колонку чи множину колонок в одній таблиці бази даних. Жодні два різні рядки чи записи даних у таблиці бази не можуть мати ті самі значення даних (або сполучення значень даних) у колонках цього потенційного ключа, оскільки значення NULL не використовуються. Залежно від своєї конструкції, таблиця бази даних може мати багато потенційних ключів, але щонайбільше один із них має бути виділений як первинний.
Ключові обмеження застосовуються до множини кортежів у таблиці в будь-який момент часу. Ключ не обов'язково є унікальним ідентифікатором серед сукупності усіх можливих екземплярів кортежів, які можуть зберігатися в таблиці, але він означає правило цілісності даних, що дублікати не повинні дозволятися в таблиці бази даних. Деякими можливими прикладами унікальних ключів є номери соціального страхування, ISBN, реєстраційний номер транспортного засобу чи логіни користувачів.
На унікальні ключі так само, як і на первинні, можуть логічно посилатися зовнішні ключі, але більшість РСКБД дозволяють обмеження зовнішнього ключа лише на первинний ключ.
Визначення унікальних ключів у SQL
Визначення інших унікальних ключів синтаксично дуже схоже на первинні.
ALTER TABLE <ідентифікатор таблиці> ADD [ CONSTRAINT <ідентифікатор обмедення> ] UNIQUE ( <вираз колонки> {, <вираз колонки>}… )
Також унікальні ключі можуть визначатись як частина інструкції SQL CREATE TABLE
.
CREATE TABLE table_name ( id_col INT, col2 CHARACTER VARYING(20), key_col SMALLINT NOT NULL, … CONSTRAINT key_unique UNIQUE(key_col), … )
CREATE TABLE table_name ( id_col INT PRIMARY KEY, col2 CHARACTER VARYING(20), … key_col SMALLINT NOT NULL UNIQUE, … )
Відмінності від обмежень первинних ключів
Відмінності між обмеженнями первинних ключів й унікальності:
Обмеження первинного ключа
- Первинний ключ не може дозволяти NULL (первинний ключ не може визначатися на колонках, які дозволяють NULL).
- Кожна таблиця не може мати понад один первинний ключ.
- На деяких РСКБД первинний ключ за замовчуванням генерує кластерний індекс.
Обмеження унікальності
- Обмеження унікальності може визначатися на колонках, які дозволяють NULL.
- Кожна таблиця може мати багато унікальних ключів.
- На деяких РСКБД унікальний ключ за замовчуванням генерує некластерний індекс.
Зверніть увагу, що, на відміну від обмеження PRIMARY KEY, обмеження UNIQUE не означає NOT NULL для колонок, які беруть участь у обмеженні. NOT NULL повинно бути вказано, щоби зробити колонку(и) ключовим(и). Можливо поставити обмеження UNIQUE на нульові колонки, але стандарт SQL стверджує, що обмеження не гарантує унікальності таких колонок (унікальність не дотримується для рядків, де будь-яка з колонок містить NULL).
Відповідно до стандарту SQL, обмеження унікальності не дотримує унікальності за наявності NULL, а тому може містити кілька рядків з ідентичними сполученнями NULL і не-NULL значень — однак, не всі РСКБД реалізують цю функцію відповідно до стандарту SQL.
Див. також
Примітки
- Awad, Elias (1985), Systems Analysis and Design (вид. 2-е), Richard D. Irwin, Inc., ISBN
- Bouman, Roland P. . XCDSQL (англійською) . Архів оригіналу за 5 травня 2007. Процитовано 19 грудня 2018.
{{}}
: Проігноровано|розділ=
() - Constraints — SQL Database Reference Material — Learn sql, read an sql manual, follow an sql tutorial, or learn how to structure an SQL query!. www.sql.org. Процитовано 16 серпня 2018.
- Comparison of different SQL implementations. troels.arvin.dk. Процитовано 16 серпня 2018.
Посилання
- Relation Database terms of reference, Keys. rdbms.opengrass.net (англійською) . Процитовано 19 грудня 2018.
{{}}
: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url ()
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V relyacijnomu modelyuvanni ta realizaciyi baz danih unikalnij klyuch takozh vidomij yak potencijnij klyuch vidnoshennya minimalnij superklyuch cogo vidnoshennya tobto mnozhina atributiv takih sho vidnoshennya ne maye dvoh riznih kortezhiv tobto ryadkiv abo zapisiv poshirenoyu movoyu baz danih z odnakovimi znachennyami cih atributiv sho oznachaye ce sho mnozhina atributiv ye superklyuchem nemaye vlasne pidmnozhini cih atributiv dlya yakoyi vikonuyetsya 1 sho oznachaye minimalnist mnozhini Koli kolonka chi mnozhina kolonok viznachayetsya unikalnim dlya sistemi keruvannya bazami danih sistema pereviryaye unikalnist kozhnoyi mnozhini znachen pered priznachennyam obmezhennya Pislya viznachennya kolonok unikalnimi stanetsya pomilka pri sprobi vstavki z uzhe nayavnimi znachennyami Deyaki sistemi ne dozvolyat onoviti klyuchovi znachennya vsi sistemi ne dozvolyat dublikati Ce zabezpechuye pidtrimku unikalnomu i v osnovnij tablici j u bud yakomu vidnoshenni sho piznishe zv yazhetsya z neyu RezyumeKlyuchi zabezpechuyut zasobi dlya koristuvachiv baz danih i prikladnih program iz viznachennya dostupu j onovlennya informaciyi v tablici bazi danih U bud yakij tablici mozhut buti dekilka klyuchiv Napriklad dvoma riznimi klyuchami v tablici pracivnikiv mozhut buti jogo nomer i login Dotrimannya klyuchovih obmezhen tobto obmezhen unikalnosti u tablici takozh polyagaye u funkciyi cilisnosti danih bazi SKBD zapobigaye onovlennyam yaki prizvedut do dublikativ klyuchovih znachen i tim samim garantuye sho tablici zavzhdi dotrimuvatimutsya bazhanih pravil unikalnosti Pravilnij vibir klyuchiv pri proektuvanni bazi danih ye vazhlivim aspektom yiyi cilisnosti Tablicya relyacijnoyi bazi danih mozhut mati odin abo bilshe dostupnih klyuchiv formalno zvanih potencijnimi Odin iz takih klyuchiv na tablicyu mozhe buti priznacheno pervinnim inshi klyuchi nazivayutsya alternativnimi Bud yakij klyuch mozhe skladatisya z odnogo chi bilshe atributiv Napriklad nomer socialnogo strahuvannya mozhe buti klyuchem iz yedinogo atributu dlya pracivnika spoluchennya nomera rejsu ta dati mozhe buti klyuchem yakij skladayetsya z dvoh atributiv dlya zaplanovanogo rejsu Isnuyut dekilka tipiv klyuchiv yaki vikoristovuyutsya v modelyuvanni baz danih i realizaciyah Prostij Klyuch zroblenij lishe z odnogo atributu Zcheplenij angl concatenated Klyuch zroblenij z ponad odnogo atributu z yednani razom yak yedinij klyuch yak ot chastina chi cile im ya zi zgenerovanim sistemoyu chislom naprikinci yak chasto vikoristovuyetsya dlya elektronnih adres Skladenij Klyuch zroblenij iz prinajmni dvoh atributiv abo prostih klyuchiv lishe prosti klyuchi isnuyut u skladenomu Kompozitnij angl composite Klyuch yakij mistit prinajmni odin skladenij iz prinajmni odnim inshim atributom abo prostim klyuchem ce rozshirennya skladenogo klyucha Prirodnij Klyuch zroblenij iz danih yaki isnuyut poza potochnoyu bazoyu danih Inshimi slovami dani ne zgenerovani sistemoyu yak ot nomer socialnogo strahuvannya importovanij iz inshoyi sistemi Surogatnij Shtuchnij klyuch zroblenij iz danih yaki priznacheni chi zgenerovani sistemoyu koli isnuye inshij potencijnij klyuch Surogatni klyuchi zazvichaj ye chislovimi znachennyami identifikatoriv ta chasto vikoristovuyutsya z mirkuvan produktivnosti dzherelo ne vkazane 3601 den Potencijnij Klyuch yakij mozhe stati pervinnim Pervinnij klyuch Klyuch yakij obrano pervinnim Lishe odin klyuch u sutnosti vibirayetsya pervinnim Ce klyuch yakomu dozvoleno migruvati do inshih sutnostej dlya viznachennya vidnoshen yaki isnuyut mizh sutnostyami Koli model danih instanciyuyetsya u fizichnu bazu danih ce klyuch yakij sistema najbilshe vikoristovuye pri dostupi do tablici chi z yednanni tablic razom pri vibori danih Alternativnij Nepervinnij klyuch yakij mozhe vikoristovuvatisya dlya viznachennya lishe odnogo ryadka v tablici Alternativni klyuchi mozhut vikoristovuvatisya yak pervinni v odnotablichnij vibirci Zovnishnij Unikalnij klyuch yakij migruvav do inshoyi sutnosti U najosnovnishomu viznachenni klyuch unikalnij identifikator tomu unikalnij klyuch ye pleonazmom Klyuchi sho znahodyatsya v yih pochatkovij sutnosti ye unikalnimi v cij sutnosti Klyuchi sho migruyut do inshoyi sutnosti mozhut buti chi ne buti unikalnimi zalezhno vid konstrukciyi ta yih vikoristannya v inshij tablici Zovnishni klyuchi mozhut buti pervinnim u inshij tablici napriklad PersonID mozhe stati EmployeeID u tablici Employee U comu vipadku EmployeeID ye i zovnishnim klyuchem i unikalnim pervinnim ce oznachaye sho tablicya maye vidnoshennya 1 1 U vipadku koli sutnist osib mistit ID biologichnogo batka ID batka ne ochikuyetsya unikalnim oskilki batko mozhe mati ponad odnu ditinu Os priklad pervinnogo klyucha sho staye zovnishnim u pov yazanij tablici ID migruye z tablici Avtor do tablici Kniga Shema tablici Avtor Avtor ID Im ya Adresa Narodzhennya Shema tablici Kniga Kniga ISBN AuthorID Nazva Vidavec Cina Tut ID sluguye pervinnim klyuchem tablici Avtor ale takozh AuthorID sluguye zovnishnim klyuchem u tablici Kniga Zovnishnij klyuch sluguye posilannyam a vidtak i zv yazkom mizh dvoma pov yazanimi tablicyami u cij prostij bazi danih V relyacijnij bazi danih potencijnij klyuch unikalno identifikuye kozhen ryadok znachen danih u tablici bazi Potencijnij klyuch mistit yedinu kolonku chi mnozhinu kolonok v odnij tablici bazi danih Zhodni dva rizni ryadki chi zapisi danih u tablici bazi ne mozhut mati ti sami znachennya danih abo spoluchennya znachen danih u kolonkah cogo potencijnogo klyucha oskilki znachennya NULL ne vikoristovuyutsya Zalezhno vid svoyeyi konstrukciyi tablicya bazi danih mozhe mati bagato potencijnih klyuchiv ale shonajbilshe odin iz nih maye buti vidilenij yak pervinnij Klyuchovi obmezhennya zastosovuyutsya do mnozhini kortezhiv u tablici v bud yakij moment chasu Klyuch ne obov yazkovo ye unikalnim identifikatorom sered sukupnosti usih mozhlivih ekzemplyariv kortezhiv yaki mozhut zberigatisya v tablici ale vin oznachaye pravilo cilisnosti danih sho dublikati ne povinni dozvolyatisya v tablici bazi danih Deyakimi mozhlivimi prikladami unikalnih klyuchiv ye nomeri socialnogo strahuvannya ISBN reyestracijnij nomer transportnogo zasobu chi logini koristuvachiv Na unikalni klyuchi tak samo yak i na pervinni mozhut logichno posilatisya zovnishni klyuchi ale bilshist RSKBD dozvolyayut obmezhennya zovnishnogo klyucha lishe na pervinnij klyuch Viznachennya unikalnih klyuchiv u SQLViznachennya inshih unikalnih klyuchiv sintaksichno duzhe shozhe na pervinni ALTER TABLE lt identifikator tablici gt ADD CONSTRAINT lt identifikator obmedennya gt UNIQUE lt viraz kolonki gt lt viraz kolonki gt Takozh unikalni klyuchi mozhut viznachatis yak chastina instrukciyi SQL CREATE TABLE CREATE TABLE table name id col INT col2 CHARACTER VARYING 20 key col SMALLINT NOT NULL CONSTRAINT key unique UNIQUE key col CREATE TABLE table name id col INT PRIMARY KEY col2 CHARACTER VARYING 20 key col SMALLINT NOT NULL UNIQUE Vidminnosti vid obmezhen pervinnih klyuchiv Vidminnosti mizh obmezhennyami pervinnih klyuchiv j unikalnosti Obmezhennya pervinnogo klyucha Pervinnij klyuch ne mozhe dozvolyati NULL pervinnij klyuch ne mozhe viznachatisya na kolonkah yaki dozvolyayut NULL Kozhna tablicya ne mozhe mati ponad odin pervinnij klyuch Na deyakih RSKBD pervinnij klyuch za zamovchuvannyam generuye klasternij indeks Obmezhennya unikalnosti Obmezhennya unikalnosti mozhe viznachatisya na kolonkah yaki dozvolyayut NULL Kozhna tablicya mozhe mati bagato unikalnih klyuchiv Na deyakih RSKBD unikalnij klyuch za zamovchuvannyam generuye neklasternij indeks Zvernit uvagu sho na vidminu vid obmezhennya PRIMARY KEY obmezhennya UNIQUE ne oznachaye NOT NULL dlya kolonok yaki berut uchast u obmezhenni NOT NULL povinno buti vkazano shobi zrobiti kolonku i klyuchovim i Mozhlivo postaviti obmezhennya UNIQUE na nulovi kolonki ale standart SQL stverdzhuye sho obmezhennya ne garantuye unikalnosti takih kolonok unikalnist ne dotrimuyetsya dlya ryadkiv de bud yaka z kolonok mistit NULL Vidpovidno do standartu SQL obmezhennya unikalnosti ne dotrimuye unikalnosti za nayavnosti NULL a tomu mozhe mistiti kilka ryadkiv z identichnimi spoluchennyami NULL i ne NULL znachen odnak ne vsi RSKBD realizuyut cyu funkciyu vidpovidno do standartu SQL Div takozhGlobalno unikalnij identifikator en Identifikator ob yektaPrimitkiAwad Elias 1985 Systems Analysis and Design vid 2 e Richard D Irwin Inc ISBN 0 256 02824 9 Bouman Roland P XCDSQL anglijskoyu Arhiv originalu za 5 travnya 2007 Procitovano 19 grudnya 2018 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Proignorovano rozdil dovidka Constraints SQL Database Reference Material Learn sql read an sql manual follow an sql tutorial or learn how to structure an SQL query www sql org Procitovano 16 serpnya 2018 Comparison of different SQL implementations troels arvin dk Procitovano 16 serpnya 2018 PosilannyaRelation Database terms of reference Keys rdbms opengrass net anglijskoyu Procitovano 19 grudnya 2018 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z parametrom url status ale bez parametra archive url posilannya