Скачиваний:
60
Добавлен:
01.04.2014
Размер:
627.71 Кб
Скачать

4.5. Отношения и предикаты

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

Поставщик с определенным номером (S#) имеет определенное имя (SNAME) и оп­ределенное значение статуса (STATUS) и располагается в определенном городе (CITY); кроме того, нет двух поставщиков с одинаковыми номерами.

Это утверждение не очень точное, но оно подходит для наших целей. Формально, предыдущее утверждение — это пример того, что называют преди­катом, или функцией значения истинности; в нашем конкретном случае — функцией четырех аргументов. Подстановка значений этих аргументов эквивалентна вызову функции (или "подтверждению" предиката), а значит, получению выражения, назы­ваемого высказыванием, которое может быть либо истиной либо ложью. Например, при подстановке

S# = 'S1' SNAME = 'Smith' STATUS = 20 CITY = 'London'

получим высказывание, являющееся истиной. А при подстановке

S# = 'Sl' SNAME = 'Abbey' STATUS =45 CITY = 'Tucson'

получим высказывание, являющееся ложью (потому что поставщик с номером Sl имеет имя не Abbey, статус не 45 и располагается не в Туксоне). И в любой момент времени отношение содержит в точности те кортежи, при которых предикат является истиной.

Из вышесказанного следует, что (например) кортеж, представленный в качестве кандидата для вставки в некоторое отношение, будет принят СУБД только в том слу­чае, если он не противоречит соответствующему предикату (т.е. соответствующее высказывание не будет ложью). Вообще предикат данного отношения составляет критерий возможности обновления для этого отношения; т.е. критерий для решения, является ли некоторое обновление допустимым (или по крайней мере "правдоподобным") для данного отношения.

Для того чтобы система могла определить допустимость обновления данного от­ношения, ей должен быть известен предикат этого отношения. Конечно, сейчас СУБД не может в точности знать предикат для данного отношения. Например, в случае от­ношения S СУБД не может знать точно, что предикат для кортежа (Sl,Smith,20,London) будет истиной, а для кортежа (Sl,Abbey,45, Tucson) — нет.(////)

/////Здесь мы используем очевидное сокращение, согласно которому выражение (Sl,Smith,20,London) соответствует кортежу {<S#:'S1'>, <SNAME:'Smith'>, <STATUS:20>, <CITY:'London'>}./////

Од­нако СУБД считает кортеж приемлемым, если выполнены следующие условия:

• Значение S# принадлежит домену номеров поставщиков.

• Значение SNAME принадлежит домену имен.

• Значение STATUS принадлежит домену значений статуса.

• Значение CITY принадлежит домену названий городов.

• Значение S# должно быть уникальным среди всех значений отношения.

Иначе говоря, для базового отношения, такого как S, в СУБД используются опре­деленные, объявленные для этого отношения, правила целостности, такие как прави­ло о том, что значение S# уникально и принадлежит домену номеров поставщиков. Поэтому формально мы можем определить "значение" (известное СУБД) данного базового отношения как логическое умножение (логическая операция И) всех извест­ных СУБД применяемых к этому отношению правил. И именно в этом смысле СУБД будет проверять допустимость обновления данного отношения.

Мы будем еще несколько раз возвращаться к значению отношения в последую­щих главах.

Соседние файлы в папке Дейтл Введ в БД