|
Программирование >> Хронологические базы данных
Небольшое замечание в отношении используемой терминологии. В англоязычной литературе одновременно употребляются два термина: functional dependence и functional dependency. Согласно нормам использования английского языка термин dependence следовало бы применять для обозначения самой функциональной зависимости, а термин dependency - для обозначения зависимых объектов. Однако термин функциональная зависимость часто приходится применять во множественном числе, а в таких случаях термин dependencies кажется более удобным для произношения, чем dependences . Именно это и определяет смешанное использование обоих терминов. 10.2. Основные определения Для демонстрации основных идей данного раздела используется несколько измененная версия переменной-отношения поставок, которая в дополнение к обычным атрибутам SI, Р и QTY будет содержать также атрибут CITY, представляюший город соответствующего поставщика. Во избежание путаницы далее эту измененную переменную-отношение мы будем называть SCP. Она представлена на рис. 10.1 в виде таблицы.
Puc. W.I. Пример значения переменной-отношения SCP Следует четко различать а) значение переменной-отношения в определенный момент; б) набор всех воз.можных значений, которые переменная-отношение может принимать в различные моменты. Сначала дадим определение концепции функциональной зависимости для п. а, а затем - для п. б. Пусть г является отношением, а X и Y - произвольными подмножествами множества атрибутов отношения г. Тогда Y функционально зависимо от X, что в символическом виде записывается как X Y (читается либо как X функционально определяет Y , либо как X стрелка Y ) тогда и только тогда, когда каждое значение множества X отношения г связано в точности с одним значением множества Y отношения г. Иначе говоря, если два кортежа отношения г совпадают по значению X, они совпадают и по значению Y. Например, отношение SCP (см. рис. 10.1) удовлетворяет требованиям для приведенной ниже функциональной зависимости, поскольку все кортежи отношения SCP с одинаковыми значениями атрибута S# имеют одно и то же значение атрибута CITY. { S# } { CITY } На самом деле это отношение удовлетворяет требованиям сразу нескольких функциональных зависимостей. { S#, Р# } { QTY } { S#, РМ { CITY } { S#, Р# } { CITY, QTY } { S#, Р# } { S# } { S#, Р# } { S#, Р#, CITY, QTY } { SM -> { QTY } { QTY } { S# } Упражнение. Проверьте правильность этого утверждения. Левая и правая части символической записи функциональной зависимости иногда называются детерминантом и зависимой частью соответственно. Как говорится в определении, детерминант и зависимая часть являются множествами атрибутов. Когда множество содержит только один атрибут, оно называется одноэлементным множеством, скобки опускаются и символическая запись принимает следующий вид. S# CITY Как уже было замечено, эти функциональные зависимости относятся к п. а, т.е. к отдельным значениям переменных-отношений. Однако при рассмотрении самих переменных-отношений, в частности базовых переменных-отношений, интерес представляют не столько функциональные зависимости в их существующих на некоторый момент конкретных значениях, сколько функциональные зависимости, выполняющиеся для всех возможных значений данной переменной-отношения. Например, в случае переменной-отношения SCP функциональная зависимость S# -> CITY выполняется для всех возможных значений переменной-отношения SCP, поскольку в любой момент одному поставщику соответствует в точности один город. По этой причине любые два кортежа переменной-отношения SCP в один и тот же момент и с одним и тем же номером поставщика должны соответствовать одному и тому же городу. Практически утверждение, что данная функциональная зависимость выполняется всегда (т.е. для всех возможных значений SCP), является ограничением целостности для переменной-отношения SCP, поскольку при этом накладываются определенные ограничения на все ее допустимые значения. Вот формулировка этого ограничения, которая выполнена с использованием синтаксиса, введенного в главе 10. CONSTRAINT S# CITY FD COUNT ( SCP { S# } ) = COUNT ( SCP { S#, CITY } ) ; Выражение S# CITY может расцениваться как сокращенный способ представления этой более длинной формулировки. Ниже приведено определение концепции функциональной зависимости для п. б (расщирения определения, данного для п. а, отмечены полужирным шрифтом). Пусть R является переменной-отнощением, а X и Y - произвольными подмножествами множества атрибутов переменной-отнощения R. Тогда Y функционально зависимо от X, что в символическом виде записывается как X Y (и читается либо как X функционально определяет Y , либо как X стрелка Y ) тогда и только тогда, когда для любого допустимого значения переменной-отношения R каждое значение множества X отнощения R связано в точности с одним значением множества Y отнощения R. Иначе говоря, для любого допустимого значения переменной-отношения R, если два кортежа переменной-отнощения R совпадают по значению X, они также совпадают и по значению Y. Следовательно, далее термин функциональная зависимость будет использоваться в последнем безотносительном ко времени смысле (за исключением особо оговоренных случаев). Ниже перечислено несколько безотносительных ко времени функциональных зависимостей, выполняющихся для переменной-отнощения SCP. { S#, Р# } QTY { S#, Pt } CITY { St, Pt } { CITY, QTY } { St, Pt } St { S#, Pt } -> { St, P#, CITY, QTY } { St } CITY Обратите внимание, в частности, на функциональные зависимости, которые выполняются для отнощения, представленного на рис. 10.1, но не выполняются всегда для переменной-отнощения SCP. St QTY QTY St Иначе говоря, такое утверждение, как число деталей для каждой поставки данного поставщика одинаково , истинно для конкретных значений, присутствующих в отнощений на рис. 10.1, но ложно для всех возможных допустимых значений переменной-отнощения SCP. Следует отметить, что если X является потенциальным ключом переменной-отнощения R, то все атрибуты Y переменной-отнощения R должны обязательно быть функционально зависимы от X (этот факт упоминается в разделе 8.8 и непосредственно следует из определения потенциального ключа). Аналогично в переменной-отнощении деталей Р необходимо, чтобы всегда выполнялась следующая зависимость. Р# { Pt, PNAME, COLOR, WEIGHT, CITY } Глава 10. Функциональные зависимости 403
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |