ОБМЕЖЕННЯ ЦІЛІСНОСТІ І ПРЕДСТАВЛЕННЯ

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

Тому уявлення також служать обєктом дії обмежень і мають предикати змінної відносини (як внутрішні, так і зовнішні) Наприклад, припустимо, що визначено уявлення шляхом застосування до змінної відносини постачальників операції проекції по атрибутах S #, SNAME і STATUS (що фактично призводить до видалення атрибута CITY) У такому випадку зовнішній предикат для цього подання визначено приблизно так, як показано нижче

Існує деякий місто CITY, такий що працює за контрактом постав

щик S# має імя SNAME, статус STATUS і знаходиться в місті CITY

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

Постачальник s # працює за контрактом, має імя SNAME, має статус STATUS і знаходиться в деякому місті

Цілком очевидно, що дана версія предиката має тільки три формальних параметра А що можна в цьому випадку стверджувати щодо внутрішнього предиката Ще раз розглянемо шість прикладів, застосовуваних в даній главі

1 Значення статусу кожного постачальника повинно знаходитися в межах від 1 до 100

включно

2 Кожен постачальник з Лондона має статус 20

3 Якщо взагалі є які-небудь деталі, то щонайменше одна з них повинна

бути синього кольору

4 Різні постачальники не можуть мати однакові номери постачальників

5 Кожна поставка виконується існуючим постачальником

6 Жоден постачальник зі статусом менше 20 не постачає будь-які деталі в кількості стве більше 500

Припустимо, що аналізованих уявлення (проекція змінної відносини постачальників за атрибутами s #, SNAME і STATUS) називається SST У такому випадку, якщо мова йде про подання SST, то приклад 3, безумовно, до нього не відноситься, по кільки в ньому розглядаються деталі, а не постачальники А що стосується інших прикладів, то кожен з них певною мірою повязаний з уявленням SST, але в дещо модифікованій формі Зокрема, нижче показана модифікована

форма прикладу 5

FORALL s # € S #, р # € Р #, q €

QTY  ( IF { S# s#, P# p#, QTY q

} € SP

THEN EXISTS sn € NAME, St € INTEGER

( { S# s#, SNAME sn, STATUS st } € SST ) )

Глава 9 Цілісність даних353

Зміни спостерігаються в третій і четвертій рядках У них всі згадки про атрибут CITY видалені, а посилання на s замінена посиланням на SST Зверніть увагу на те, що це обмеження для SST може розглядатися як похідне від відповідного обмеження для S точно так само, як сама змінна відносини SST походить від змінної відносини S (і в кінцевому підсумку сам зовнішній предикат для SST є похідним від зовнішнього предиката для S) 11

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

FORALL s# € S#, sn € NAME, st € INTEGER ( IF { S# s#, SNAME sn, STATUS st } €

SST THEN EXISTS SC € CHAR

( { S# s#, SNAME sn, STATUS st, CITY sc } € S AND ( IF sc = London THEN st = 20 ) )

Однак і в даному випадку це обмеження може розглядатися як похідне від відповідного обмеження для S

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*