СХЕМА КЛАСИФІКАЦІЇ ОБМЕЖЕНЬ

У даному розділі буде коротко намічена схема класифікації для обмежень (по суті, це та ж схема, яка була прийнята в [33]) Коротко відзначимо, що тут передбачено розподіл обмежень по чотирма основними категоріями: обмеження бази даних, обмеження змінної відносини, обмеження атрибута й обмеження типу Короткі визначення цих обмежень наведені нижче

■&nbsp&nbsp&nbsp&nbsp Обмеженням бази даних називається обмеження на значення, які разреше але приймати вказаній базі даних

■&nbsp&nbsp&nbsp&nbsp Обмеженням змінної відносини називається обмеження на значення, які дозволено приймати зазначеної змінної відносини

■&nbsp&nbsp&nbsp&nbsp Обмеженням атрибута називається обмеження на значення, які дозволено приймати вказаною атрибуту

■&nbsp&nbsp&nbsp&nbsp Обмеження типу являє собою не що інше, як визначення безлічі значень, з яких складається даний тип

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

Обмеження типу

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

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

354     Частина II Реляційна модель

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

TYPE WEIGHT POSSREP { D DECIMAL (5,1)

CONSTRAINT D &gt 00 AND D &lt 50000 }

Він має наступний зміст: допустимими значеннями типу WEIGHT ЯВЛЯЮТЬСЯ такі і лише такі значення, які можна представити десятковими числами з точністю пять цифр і з однією цифрою після десяткового точки, де розглядається десяткове число більше нуля і менше 5000

Тепер має бути очевидно, що єдиний спосіб, завдяки якому будь-який вираз може прийняти значення типу WEIGHT, СКЛАДАЄТЬСЯ У використанні деякого виклику селектора WEIGHT Тому єдина можливість порушення в будь-якому такому вираженні обмеження типу WEIGHT полягає в тому, що це обмеження буде порушено у виклику селектора З цього випливає, що обмеження типу завжди можуть розглядатися (Щонайменше, концептуально) як перевіряються під час деякого виклику селектора Наприклад, розглянемо наступний виклик селектора для тіпaWEIGHT

WEIGHT ( 75000 )

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

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

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

Обмеження атрибута

Обмеження атрибута, по суті, полягають у тому, що в розділі 92 було названо апріорними обмеженнями іншими словами, обмеженням атрибута фактично є просто оголошення, яке свідчить, що вказаний атрибут зазначеної змінної відносини має зазначений тип Наприклад, знову розглянемо визначення змінної відносини постачальників, яке наведене нижче

VAR S BASE RELATION

{ S#    S#,   SNAME

NAME, STATUS INTEGER, CITY CHAR } ..

У цієї змінної відносини на значення атрибутів s #, SNAME, STATUS і CITY накладено обмеження, згідно з яким вони повинні, відповідно, мати типи S #,

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

Примітка В принципі, будь-яка спроба ввести в базу даних (за допомогою операції

INSERT або UPDATE) значення атрибута, яке не має допустимого типу, повинна бути просто відкинута Але на практиці подібна ситуація не повинна навіть виникати, якщо

система дійсно контролює дотримання обмежень типу, як описано в попередньому підрозділі

Обмеження змінної відносини і бази даних

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

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

CONSTRAINT TRC1 FORALL SX

FORALL SX { SX.S# SXS# OR SX.STATUS &lt SXSTATUS )

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

12 Обмеження, що не відносяться до типу обмежень переходу, іноді називають обмеженнями стану

Слід зазначити, що наведене вище обмеження TRC1 є офаніченіем переходу змінної відносини (воно стосується тільки однієї змінної відносини – S) Нижче для порівняння наведено обмеження переходу бази даних (Загальна кількість деталей будь-якого конкретного типу, наявних у всіх постачальників, ні в якому разі не повинно зменшуватися)

CONSTRAINT TRC2

FORALL РХ

SUM (SPX WHERE SPX. P # = РХР #, QTY

) SUM { SPX WHERE SPX P# = PXP#, QTY

)

Поняття обмежень переходу не поширюється на обмеження типу або атрибута

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*