Природні і сурогатні ключі - студопедія
Реляційною базою даних називають сукупність взаємопов'язаних таблиць, кожна з яких задає певний стосунок. Реляційна база даних має унікальне ім'я, за яким до неї можна звертатися.
Таблиці. Як ми вже говорили, це основні об'єкти будь-якої бази даних. По-перше, в таблицях зберігаються всі дані, наявні в базі, а по-друге, таблиці зберігають і структуру бази (поля, їх типи і властивості).
Кожна таблиця реляційної бази даних також має ім'я.
Ширина стовпців повинна бути фіксованою. Кожен стовпець має ім'я, тип, допустиме безліч значень, ширину. Зазначені атрибути називаються специфікація стовпця.
Для звернення до стовпців можна використовувати кваліфіковане ім'я, тобто ім'я, що складається з імені відповідної таблиці і власного імені стовпця. Імена таблиці і стовпці з'єднуються точкою: <имя таблицы>.<имя столбцах>
Стовпці таблиць бази даних, при викладі теорії, називаються доменами, а в практиці використання називаються полями, а іноді атрибутами. У таблиці не повинно бути повторюваних рядків.
Зазвичай рядки називають записами.
Первинний ключ служить для доступу до рядкам таблиці. Первинний ключ може бути складеним. Якщо кандидата на ключ в таблиці немає, то вводиться штучно спеціальний числовий ключ - лічильник.
Ключ дозволяє підтримувати зв'язки між таблицями.
Для цього деякі з ключових полів різних таблиць ототожнюються. Встановлені тотожності визначають зв'язку (відносини) між таблицями бази даних.
Встановлення зв'язку між таблицями можливо тільки за таких умов:
§ зв'язуються поля повинні мати один і той же тип, причому імена полів можуть бути різні;
§ обидві таблиці належать одній і тій же базі даних;
§ зв'язок між таблицями встановлюється по ключовому полю.
Явна вказівку зв'язків допомагає виключити можливі помилки, які можуть виникнути в процесі коригування бази даних. Для цього вводиться ряд умов, яким повинні задовольняти записи таблиць бази даних. Сукупність цих умов називають умовами цілісності бази даних. Для формулювання умов цілісності введемо наступну термінологію. Таблиці, в яких описуються об'єкти предметної області, назвемо головними, а таблиці, що описують зв'язки між об'єктами, назвемо таблицями зв'язку.
Первинні ключі головної таблиці називаються внутрішніми. а відповідний ключ в таблиці зв'язку називається зовнішній ключ.
Забезпечення цілісності бази даних досягається за допомогою виконання наступних вимог:
§ в таблицю зв'язку не може бути додано запис з неіснуючим в головній таблиці значенням первинного
§ в головній таблиці не можна видалити запис, якщо не видалені пов'язані з нею записи в таблиці зв'язку;
§ зміна значення первинного ключа в головній таблиці повинно приводити до зміни відповідних значень в таблиці зв'язку.
Первинний ключ може складатися з інформаційних полів таблиці (тобто полів, що містять корисну інформацію про описувані об'єктах). Такий первинний ключ називають природним ключем. Теоретично, природний ключ завжди можна сформувати, в цьому випадку ми отримаємо т. Н. інтелектуальний ключ. На практиці, однак, використання природних ключів наштовхується на певні складності:
Низька ефективність - Природний ключ може бути великий за розміром (особливо коли він складовою), і його використання виявиться технічно неефективним (адже у всіх таблицях, пов'язаних з даною, знадобиться створити поле того ж розміру, щоб зберігати посилання).
§ Необхідність каскадних змін - При зміні значення поля, що входить в природний ключ, виявляється необхідним змінити значення поля не тільки в даній таблиці, але і у всіх таблицях, пов'язаних з даною, в іншому випадку всі посилання на даний запис виявляться некоректними. У складних базах даних таких пов'язаних таблиць може бути дуже багато, і завжди залишається небезпека випустити з уваги якусь із них. При додаванні нових пов'язаних таблиць доводиться додавати погоджують зміни в усі місця програм, де правиться вихідна таблиця.
§ Невідповідність реальності - Унікальність природного первинного ключа в реальних БД не завжди дотримується. Припустимо, наприклад, що первинний ключ в таблиці - дані особистого документа. У таку таблицю виявиться неможливим внести людини, про документах якого немає інформації в момент додавання запису, а на практиці така необхідність може виникнути.
Внаслідок цих та інших міркувань в практиці проектування БД частіше використовують т.зв. синтетичні (сурогатні) ключі - штучно створені технічні ключові поля, що не несуть інформації про об'єкти.
Зовнішній ключ (англ. Foreign key) - поняття теорії реляційних баз даних. Зовнішнім ключем називається поле таблиці, призначене для зберігання значення первинного ключа іншої таблиці з метою організації зв'язку між цими таблицями.
Нехай є таблиці A і B. Таблиця A містить поля a, b, c, d, з яких поле a - первинний ключ. Таблиця B містить поля x, y, z. В поле y містяться значення поля a одному із записів таблиці A. В такому випадку поле y і називається зовнішнім ключем таблиці A в таблиці B.
Ось такий SQL-запит поверне всі пов'язані пари записів з таблиць A і B:
select * from A, B where A.a = B.y;
Зовнішній ключ в таблиці може посилатися і на саму цю таблицю. У таких випадках говорять про рекурсивном зовнішньому ключі. Рекурсивні зовнішні ключі використовуються для зберігання гомогенної деревовидної структури даних в реляційної таблиці.
Розвинені СУБД підтримують автоматичний контроль посилальної цілісності на зовнішніх ключах.
Завдання розробника реляційної бази даних складається в структуризації даних, щоб забезпечити швидкий пошук потрібної інформації і виключити непотрібне дублювання даних. Процес поділу бази даних на структурні одиниці - таблиці для досягнення цих цілей називається нормалізацією. Нормалізація досить складний процес. Правила нормалізації описані в ряді посібників з проектування реляційних баз даних і їм надається велике значення. Однак існує альтернативний, більш простий спосіб нормалізації бази даних. Він годиться у всіх простих випадках. Цей спосіб полягає в тому, що спочатку створюються таблиці для всіх об'єктів предметної області. Потім визначаються таблиці для зв'язків між об'єктами. Якщо існують поля, в яких багато значень, що повторюються, доцільно створити довідник.