Що таке чітке визначення обмеження бази даних? Чому обмеження важливі для бази даних? Які існують типи обмежень?
Що таке чітке визначення обмеження бази даних? Чому обмеження важливі для бази даних? Які існують типи обмежень?
Відповіді:
Обмеження є частиною визначення схеми бази даних.
Обмеження зазвичай асоціюється з таблицею і створюється за допомогою оператора CREATE CONSTRAINT
або CREATE ASSERTION
SQL.
Вони визначають певні властивості, яким повинні відповідати дані в базі даних. Вони можуть застосовуватися до стовпця, цілої таблиці, декількох таблиць або цілої схеми. Надійна система баз даних забезпечує збереження обмежень у будь-який час (за винятком можливо всередині транзакції, для так званих відкладених обмежень).
Поширеними видами обмежень є:
Щоб зрозуміти, навіщо нам потрібні обмеження, спочатку потрібно зрозуміти цілісність цілісності даних.
Цілісність даних стосується дійсності даних. Чи дійсні ваші дані? Ваші дані представляють те, для чого ви їх розробили?
Які б дивні запитання я не міг вам подумати, але, на жаль, занадто часто бази даних заповнюються даними про сміття, недійсними посиланнями на рядки в інших таблицях, яких давно вже немає ... та значеннями, які нічого не означають для бізнес-логіки вашого рішення більше.
Весь цей смітник не лише схильний знижувати вашу продуктивність, але також є бомбою уповільненої дії за логікою вашого додатка, яка врешті-решт отримає дані, які він не призначений для розуміння.
Обмеження - це правила, які ви створюєте під час розробки, які захищають ваші дані від пошкодження. Це дуже важливо для довготривалого виживання вашої серцевої дитини через рішення бази даних. Без обмежень ваше рішення, безумовно, зіпсується з часом та інтенсивним використанням.
Ви повинні визнати, що проектування дизайну бази даних - це лише народження вашого рішення. Ось після цього він повинен жити (сподіваємось) довго і переносити всілякі (дивні) поведінки своїх кінцевих користувачів (тобто клієнтських додатків). Але цей етап проектування є вирішальним для тривалого успіху вашого рішення! Поважайте це і приділяйте йому час та увагу, які йому потрібні.
Мудра людина якось сказала: "Дані повинні захищати себе!" . І це те, що роблять обмеження. Це правила, які забезпечують збереження даних у вашій базі даних як можна більш актуальними.
Існує багато способів зробити це, але в основному вони зводяться до:
sys.check_constraints
подання у зразковій базі даних AdventureWorksЯк я вже натякнув тут, для побудови найкращого та найзахиснішого підходу для проектування бази даних потрібні деякі ретельні міркування. Спочатку потрібно знати можливості та обмеження різних типів обмежень вище. Подальше читання може включати:
ОБМЕЖЕННЯ ІНОЗЕМНИХ КЛЮЧІВ - Microsoft
Обмеження зовнішнього ключа - w3schools
Удачі! ;)
Обмеження - це не що інше, як правила щодо даних. Які дані є дійсними, а які недійсними, можна визначити за допомогою обмежень. Отже, цілісність даних може бути збережена. Нижче наведені широко використовувані обмеження:
NOT NULL
. Тут ми можемо вказати, які дані ми можемо ввести для цього конкретного стовпця, а що не очікується для цього стовпця.Обмеження можуть бути використані для забезпечення певних властивостей даних. Простий приклад - обмежити стовпець int значеннями [0-100000]. Цей вступ виглядає добре.
Обмеження диктують, які значення дійсні для даних у базі даних. Наприклад, ви можете примусити значення не мати значення null ( NOT NULL
обмеження), або воно існує як унікальне обмеження в іншій таблиці ( FOREIGN KEY
обмеження), або воно є унікальним у цій таблиці ( UNIQUE
обмеження або, можливо, PRIMARY KEY
обмеження, залежно від ваших вимог ). Більш загальні обмеження можуть бути реалізовані за допомогоюCHECK
обмежень.
Документація MSDN для обмежень SQL Server 2008 - це, мабуть, найкраще початкове місце.
UNIQUE
обмеження ( PRIMARY KEY
варіант обмеження - варіант). Перевіряє, що всі значення даного поля є унікальними в таблиці. Це X
обмеження на вісь (записи)
CHECK
обмеження ( NOT NULL
варіант обмеження - варіант). Перевіряє, чи виконується певна умова для виразу над полями того самого запису. Це Y
обмеження на вісь (поля)
FOREIGN KEY
обмеження. Перевіряє, чи значення поля знайдено серед значень поля в іншій таблиці. Це Z
обмеження на вісь (таблиці).
CHECK
обмеження, то чому класифікувати це як інакше? тобто " Y
-ось" (що б це не означало).
FOREIGN KEY
використання CHECK
обмеження?
SELECT
запит. Ви не можете використовувати підзапити (або будь-які інші конструкції, що посилаються на значення поза поточним записом) в CHECK
обмеженнях в SQL Server
.
База даних - це комп’ютеризоване логічне представлення концептуальної (або ділової) моделі, що складається з набору неформальних бізнес-правил. Ці правила є зрозумілим користувачем значення даних. Оскільки комп’ютери розуміють лише офіційні подання, ділові правила не можуть бути представлені безпосередньо в базі даних. Вони повинні бути зіставлені з офіційним поданням, логічною моделлю, яка складається з набору обмежень цілісності. Ці обмеження - схема бази даних - є логічним поданням у базі даних бізнес-правил і, отже, є розумінням СУБД значення даних. З цього випливає, що якщо СУБД не знає та / або не застосовує повний набір обмежень, що представляють ділові правила, вона має неповне розуміння того, що означають дані, і, отже,
Примітка: СУБД - "зрозуміле" значення - обмеження цілісності - не є ідентичним зрозумілому користувачем значення - ділові правила - але, незважаючи на втрату деякого значення, ми отримуємо можливість механізувати логічні умовиводи з даних.
"Старий клас помилок" Фабіана Паскаля
В основному в SQL існує 4 типи основних обмежень:
Обмеження домену: якщо одне зі значень атрибутів, надане для нового кортежу, не є вказаним доменом атрибута
Ключове обмеження: якщо значення атрибута ключа в новому кортежі вже існує в іншому кортежі у відношенні
Посилальна цілісність: якщо значення зовнішнього ключа в новому кортежі посилається на значення первинного ключа, яке не існує у відношенні, на яке посилається
Цілісність сутності: якщо значення первинного ключа в новому кортежі є нульовим
Обмеження - це умови, які можуть підтвердити конкретний стан. Обмеженнями, пов’язаними з базою даних, є цілісність домену, цілісність сутності, референтна цілісність, обмеження цілісності, що визначаються користувачем тощо.