ТОП 10:

Обмеження на множину припустимих значень



Більшість комерційних систем підтримують пропозиції (обмеження) PRIMARY KEY, UNIQUE, DEFAULT, CHECK, REFERENCES і FOREIGN KEY у команді CREATE TABLE у відповідності зі стандартом SQL/92. Ці елементи забезпечують захист цілісності даних.

 

PRIMARY KEY помічає стовпчик (у якому не можуть бути присутніми нульові значення) у якості первинного ключа таблиці. Кожне значення, що вводиться в цей стовпчик, повинно бути унікальним. Якщо первинний ключ включає декілька стовпчиків, PRIMARY KEY визначається на рівні таблиці.

 

create table salespeople (snum int not null primery key, sname char(10) not null, city char(10));

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

 

create table namefields (firstname char(10) not null, lastname char(10) not null, city char(10), primery key (firstname, lastname));

 

UNIQUE – альтернативний, або можливий (candidate keys) ключ. Також гарантує унікальність елементів стовпчика. Це обмеження застосовується до тих полів, що були заявлені NOT NULL.

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

DEFAULT визначає значення, що автоматично вставляється системою, якщо користувач не введе необхідні дані. Наприклад, слово "невизначений", якщо значення ще не визначене.

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

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

 

CREATE TABLE ім'я_таблиці (ім'я_стовпчика тип [NULL|NOT NULL] [ DEFAULT значення_по_умовчанню] [обмеження_на_стовпчик] … [обмеження_на_таблицю]…);

 

Наприклад,

 

Create table товар

(код char(6) not null primary key

check (код like '[A-Я] [A-Я] [0-9] [0-9][0-9] [0-9]'),

Назва varchar(80) not null,

Тип char(12)

default "невизначений" null

check (тип in ("економіка", "психологія",

"програмування", "невизначений")),

Ціна money null,

Кількість int null)

 

Ключове слово LIKE означає завдання шаблона значень, а

IN – список можливих значень.

 


Підтримка посилальної цілісності

Таблиці бази даних можуть бути певним чином зв'язані між собою. Такі зв'язки між таблицями встановлюються шляхом завдання посилань (references) між окремими полями таблиць.

Коли поле однієї таблиці посилається поле в іншій таблиці, воно називається зовнішнім ключем (foreign key); поле, на яке воно посила­ється, називається його батьківським ключем. Імена зовнішнього та батьківського ключів можуть бути неоднаковими.

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

Наприклад,

Create table покупці

(ном integer not null primary key,

Прізвище char(15),

ном_прод integer,

foreign key (ном_прод) references продавці (ном_прод));

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

 

FOREIGN KEY (список стовпчиків) REFERENCES ім'я таблиці (список стовпчиків)

 

Таким чином, основна ідея посилальної цілісності полягає в тому, що всі значення зовнішніх ключів відсилають до визначеного рядка батьківського ключа. Як тільки значення розміщається в зовнішньому ключі, батьківський ключ перевіряє для того, щоб переконатися в тому, що таке значення в ньому є присутнім; у противному випадку команда відхиляється. Батьківський ключ повинний мати обмеження PRIMARY KEY або UNIQUE для гарантії того, що значення не подане більш ніж один раз.







Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.237.61.235 (0.004 с.)