Программирование >>  Реляционные базы данных 

1 ... 58 59 60 [ 61 ] 62 63 64 ... 125


для отношения

address

MovieStar(name. address, gender, birthdate)

Идея ограничения в том, что среди всех сконструированных пар кортежей (/, /3) отношения IWovieStar не должно бьпъ пары, кортежи которой совпадают по компо ненту пате, но не совпадают по компоненту address. Для создания пар применяется декартово произведение, а для поиска пар, нарушающих функциональную зависимость, выбор Офаничение устанавливается путем приравнивания полученного результата к 0.

Точнее говори, компонент producerCff каждого из кортежей отношения Movie должен входить и в компонент cerW некоторого кортежа отношения MovieExec. Поскольку администраторы однозначно идентифицируются номерами сертификатов, есть гарантия, что производитель фильма входит в число администраторов этого фильма. Такое ограничение можно выразить с помощью включения одного множества в другое:

V iu rt;* (Movie) сяеп* (MovieExec)

Значение левой части данного выражения - это множество всех номеров сертификатов, входящих в компоненты producerC# кортежей отношения Movie, а значение правой части - множество всех номеров сертификатов, входящих в компоненты cerW кортежей отношения MovieExec. Ограничение означает, что каждый сертификат из первого множества должен входить и во второе.

Такое же ограничение можно выразить в виде равенства с пустым множеством:

Voduc c# (Movie) - (MovieExec) = 0 □

Пример 4.43. Аналогично предыдущему примеру, можно выразить ограничение ссылочной целостности, в котором содержится значение , представленное несколькими атрибутами. Например, может понадобиться, чтобы фильм, упомянутый в отношении

Starsln(movieTiHG. movieYear, starName)

появлялся и в отношении

Movle(title. year, lengtli, inColor. studioName, producerC#)

В обоих этих отношениях фильмы представлены парами название-год, так как по соглашению ни один из этих атрибутов в отдельности не может идентифицировать фильм. Ограничение

w vieTi4a. ve=r (StarsIn) £ Tl ,. (Movie)

выражает ограничение референциальной целостности путем сравнения пар название-год, порожденных проекцией обоих отношений на соответствующие списки компонентов. □

4.5.3 Дополнительные примеры ограничений

Рассматриваемая нотация лозволяет выразить не только ссылочную целостность. Например, любую функциональную зависимость можно выразить в виде алгебраического ограничения, хотя его запись аюжнее записи функциональной зависимости, которую мы применяли ранее.

Пример 4.44. Предсгавнм в виде алгебраического выражения функциональную зависимость



Поскольку берется произведение отношения с самим собой, для получения имен лтрибртов такого произведения сначала нужно переименовать по крайней мере одну ко1Н1Ю исходного отношения. Для крагкосги при ссылке иа отношение MovieStar мы используем два новых имени MS1 и MS2. Тогда функциональная зависимосгь преястапима п виде алгебраического вьфажения:

<MSlr n:c-HS2r.a ANO MSI artdiess rMS2.ad*MS CSI У- MS2) =0

В ЭТОМ выражении MSI в произведении MS1 х MS2 - сокражение результата переименования:

P.w.vn.i< w. *ftm.er *.. fan/wtof) (MovieStar)

a MS2 - аналогичное переименование огношения MovieStar □

Другой вид ограничения - ограничение области значений. Часто оно просто требует, чтобы значения атрибутов относились к определенному типу данных, например к целым числам или строкам длиной в 30 символов. Такие ограничения не выразимы в реляционной алгебре, так как типы, подобные целым числам, не являются ее частью. Однако нередко ограничения области содержат особые значения атрибутов. Если множество допустимых значений можно выразеть в виде условий выбора, ограничение области выразимо в языке алгебраических ограничений.

Пример 4.45. Допустим, нужно зафиксировать, что единственными допустимыми значениях атрнбута gender отношения MovieStar являются F н М . Это ораннченне можно выразить алгебраически:

Овпчвг. F AND gare.r,m- (MovieStar) = 0

те. множество кортежей в IMovieSlar, компонент которых gender не равен ни F, ни М, пусто. □

И наконеи, есп. ограничения, не попадающие нн в одну нз категорий, описанных в разделе 2.5. Язык алгебраических ограничений позволяет выразить множество новых видов ограничений. Приведем один пример.

Пример 4,46. Предположим, нужно потребовать, чтобы президентом студии мог быть только тот, кто имеет чистый доход не менее S10 ООО ООО. Такое ограничение не относится ни к ограничениям области, нн к огра1шчения.м по единичному значению, ни к ссылочной целостности. Тем не менее сто можно выразить алгебраически. Построим тета-соелинение двух отношений:

MovieExec(name. address, cert#. netWortti)

Stuclio(name, address, presC#)

используя условие, согласно которому атрибуты presC# нз Studio и cert# из MovieExec равны .между собой. Такое соелинемие создает пары кортежей, состоящие из студии II рукооол1ггеля, являющегося ее президентом. Из этого отношения выберите кортхжи. в которых чистый доход .менее десяти .миллионов. Получггтся множество, которое, согласно данному ограничению, должно бычъ пустым. Итак, записываем алгебраическое ог11аничение:

Cn-rt ortn< icooooflo (Studio t><i c =c MovieExec) = 0

Это же ограничение можно выразить и путем сравнения сертификатов, пред-ставляюши.ч президентов сгуднй, с множеством сертификатов, предсгавляющих .шмнннстраторов. чей чистый доход составляет ие менее $10 000 000; причем первое .множество должно быть гюдмпожестпом второго. В результате получаем выражение:

=tp. c (Studio) s п ,п ( inoiworth. юоооооо (MovieExec)) О



4.5.4 Упражнения к разделу 4.5

Упрожнение 4.5Л. Выразите перечисленные ниже ограничения на следующие отношения из упражнения 4.4.1:

Product(mal<er. mode!, type) PC(model, speed ram. hd. cd, price) Laptop(model speed, ram, hd. screen, price) Printerfmodel, color, type, price)

Ограничения можно выражать любым из рассмотренных выше способов. Укажите нарушения этих ограничени!-! для данных из упражнения 4.1.1.

*а) ПК со скоростью процессора менее 150 не должны продаваться более чем за SI500.

Ь) ПК-блокнот с размером экрана менее 11 дюймов должен иметь жесткий диск не менее I Гбайт или должен продаваться дешевле $2000.

!с) Ни один производитель ПК не производит ПК-блокноты.

*!! d) Производитель ПК должен производить и ПК-блокноты, имеющие такую же или большую скорость процессора.

!с) Если основная память ПК-блокнота превышает основную память ПК, его цена тоже должна превышать иену ПК.

Упражнение 4.5.2. Выразите в реляционной алгебре следующие ограничения, основанные на отношениях упражнения 4.1.3:

Classes(class, type, country, numGuns, bore) Ships(name. class, launched) Battles(name, date) Outcomes(ship, battle, result)

Ограничения можно выражать любым из рассмотренных выше способов. Укажите нарушения этих ограничений для данных из упражнения 4.1.3.

a) Ни один класс кораблей не может иметь орудия калибра более 16 дюймов.

b) Если класс кораблей имеет более девяти орудий, то их калибр должен превышать 14 дюймов.

!с) Ни один класс не .чожет содержать более двух кораблей.

!d) Ни одна страна не может влацеть одновременно линкорами и крейсерами.

!! е) Ни один корабль, имеющий более девяти орудий, не может участвовать в бою против корабля, который имел меньше девяти орудий и был потоплен.

Упрйжнеиис 4,5.3. Ограничения можно выразить не только в реляционной ЕИгебре, ио и в Datalog. Запишите правило или правила Datalog, определяющие предикат 1DB, значение которого должно быть пустым. Выразите в Datalog:

а) ограничения из примера 4.42;

b) ограничения из примера 4.43:

c) ограничения из примера 4.44;

d) ограничения из примера 4.45;

e) ограничения из примера 4.46.



1 ... 58 59 60 [ 61 ] 62 63 64 ... 125

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика