Введение в системы БД (542480), страница 98
Текст из файла (страница 98)
° Следует отметить некоторые допущения, используемые в дальнейшем изложении. а) Проектирование базы данных заключается не только в создании правильной структуры данных. Другой и. вероятно, более важной задачей является обеспечение целостности данных. Это замечание будет неоднократно повторено и усилено в тексте последующих глав. б) Далее в большинстве случаев проектирование рассматривается независимо от ириложени». Иначе говоря, интерес представляют сами данные, а не то, как они будут использоваться. Независимость от приложения в этом смысле желательна Терлгин "лгетодология" изначал~но означал изучение методов, но со вреченеч стал использоваться и для обозначения "систечы лгетодов и правил, копгорые приченяются для исследований или выполнения работы в некоторой области науки или искусства" гсгг.
СЬатЬегз Тгкепйей Сешигу Ргс!юлагуд 398 Часть 111. Проектирование базы данньп по той простой причине, что в момент проектирования базы данных обычно еше неизвестны все возможные способы использования ее данных. Таким образом, необходимо, чтобы созданный проект был свабильным, т.е. оставался работоспособным даже при возникновении в приложениях новых (т.е. неизвестных на момент создания исходного макета) требований к данным. Следуя этим допущениям (и используя терминологию из главы 2), можно сказать, что в этой части книги обсуждается создание кониентуавьной схемы, т.е. абстрактного логического макета, не зависящего от аппаратного обеспечения, операционной системы, целевой СУБД, языка программирования, пользователей и т.д.
В частности, как указывалось ранее, здесь нас не интересуют компромиссные решения, принимаемые, например, в целях достижения требуемой производительности. ° Как отмечалось выше, задача проектирования базы данных заключается в том, чтобы решить, какие базовые переменные-отношения и с каким набором атрибутов следует использовать. Фактически для этого также необходимо выяснить, какие следует использовать домены или тины. На момент создания книги этой теме было посвящено совсем немного публикаций, поэтому освещение данного вопроса будет очень кратким (нсключениями являются лишь публикации [13.111, (! 3.39]). Данная часть имеет следующую структуру.
В главе 10 описаны некоторые теоретические основы, а в главах 11 и 12 — основные идеи дальнейшей нормализации, построенные на этих теоретических принципах и позволяющие придать смысл неформальным утверждениям о преимуществах того или иного проекта. Затем в главе 13 рассматривается сеиантичесноемоделирование, в частности описываются концепции построения модели "сущность!связь" (илн ЕК-модели) и демонстрируется, как их можно использовать на практике для нисходящего проектирования систем (начиная с сущностей реального мира и заканчивая формальным реляционным проектом базы данных).
399 Глава 10 Функциональные зависимости 10.1. Введение В этой главе речь пойдет о концепции функциональной зависимости, которая если "не совсем фундаментальна, то очень близка к таковой" 110.7). Эта концепция лежит в основе многих обсуждаемых в последующих главах тем, включая, в частности, теорию проектирования базы данных, описанную в главе 11. По сути, функциональная зависимость (далее для ее обозначения часто будет использоваться аббревиатура ФЗ) является связью типа "многие к одному" между множествами атрибутов внутри данной переменной-отношения.
Например, для переменной- отношения поставок ЯР существует функциональная зависимость между множествами атрибутов (8$, РЦ и (ЯТУ) . Это означает, что для любого допустимого значения этой переменной-отношения справедливы следующие правила. ° Для любой заданной пары значений атрибутов И и Р$ существует только одно соответствующее им значение атрибута РТУ. ° Многие разные пары значений атрибутов 8$ и РТ могут иметь одно и то же соответствующее им значение атрибута 0ТХ (в общем случае). Обратите внимание, что в показанном на рис.
3.8 примере значения переменной- отношения ЯР удовлетворяют этим правилам. В разделе! 0.2 этой главы концепция функциональной зависимости определяется более точно, с разделением функциональных зависимостей на выполняемые лишь в некоторых частных случаях и выполняемые всегда. Как говорилось выше, функциональные зависимости представляют собой основу для применения научного подхода к решению нескольких практических задач, поскольку обладают богатым набором интересных формальных свойств, позволяющих формально и строго решить многие проблемы.
Ниже, в разделах 10.3-10.6, будут подробно описаны некоторые нз этих формальных свойств и даны объяснения по поводу их практического применения. В конце главы, в разделе 10.7, представлено краткое резюме. Замечание. При первом чтении этой главы многие разделы можно пропустить, поскольку большая часть материала, необходимого для понимания проводимого в последующих главах обсуждения, содержится в разделах 10.2 и 10.3, Поэтому все остальные разделы можно лишь просмотреть, а затем вновь вернуться к ним, ознакомившись со остальными тремя главами этой части. 400 Часть 111. Проектирование базы данных Небольшое замечание в отношении используемой терминологии.
В англоязычной литературе одновременно употребляются два термина: Хцпсг!опа! дерепбепсе и Хцпс!!опа! г!ерепдепсу. Согласно нормам использования английского языка термин "берепдепсе" следовало бы применять для обозначения самой функциональной зависимости, а термин "дерепдепсу" — для обозначения зависимых обьектов. Однако термин "функциональная зависимость' часто приходится применять во множественном числе, а в таких случаях термин "г!ерепбепс!ез" кажется более удобным для произношения, чем "берепбепсез".
Именно это и определяет смешанное использование обоих терминов. 10.2. Основные определения Для демонстрации основных идей данного раздела используется несколько измененная версия переменной-отношения поставок, которая в дополнение к обычным атрибутам Яз, Р)! и ЯТХ будет содержать также атрибут СХТХ, представляющий город соответствующего поставщика. Во избежание путаницы далее эту измененную переменную- отношение мы будем называть ЯСР. Она представлена на рис.
10.1 в виде таблицы. Рис. 10.1. Пример значения переменной-отнашения БСР Следует четко различать а) значение переменной-отношения в определенный момент; б) набор всех возчажиых значений, которые переменная-отношение может принимать в различные моменты. Сначала дадим определение концепции функциональной зависимости для п. а, а затем — для п, б.
° Пусть г является отношением, а Х и Х вЂ” произвольными подмножествами множества атрибутов отношения г. Тогда Х функционально зависимо от Х, что в символическом виде записывается как !читается либо как "Х функционально определяет Х", либо как "Х стрелка Х") тогда и только тогда, когда каждое значение множества Х отношения г связано в точности с одним значением множества Х отношения г.
Иначе говоря, если два кортежа отношения г совпадают по значению Х, они совпадают и по значению Х. 401 Гпава 1О. Функ!!иональные зависимости Например, отношение БСР (см. рис. 10.1) удовлетворяет требованиям для приведенной ниже функциональной зависимости, поскольку все кортежи отношения ЯСР с одинаковыми значениями атрибута Б() имеют одно и то же значение атрибута С1ТХ. ( Я() ) -+(С1ТХ) На самом деле это отношение удовлетворяет требованиям сразу нескольких функциональных зависимостей. ( И, Р() ) -+ ( ОТХ ) ( Я(), Р( ) — э(СХТХ) ( Я(, Р) ) †> ( С1ТХ, ОТХ ) ( Я(, Р( ) - ( БЯ ) ( Б(, Р) ) -+ ( Б), Р(, СХТХ, ОТХ ) ( Бз ) †> ( ОТХ ) ( ОТХ ) -+ ( Я)) ) Упражнение.
Проверьте правильность этого утверждения. Левая и правая части символической записи функциональной зависимости иногда называются детерминантам и зависимой частью соответственно. Как говорится в определении, детерминант и зависимая часть являются множествами атрибутов. Когда множество содержит только один атрибут, оно называется одно- элементным множеством, скобки опускаются и символическая запись принимает следующий вид.
Я$ -э С1ТХ Как уже было замечено, эти функциональные зависимости относятся к п,а, т.е. к отдельным значениям переменных-отношений. Однако при рассмотрении самих переменных-отношений в частности базовых переменных-отношений, интерес представляют не столько функциональные зависимости в их существующих на некоторый момент конкретных значениях, сколько функциональные зависимости, выполняющиеся для всех возможных значений данной переменной-отношения. Например, в случае переменной- отношения ЯСР функциональная зависимость Я$ †> С1ТХ выполняется для всех возможных значений переменной-отношения ЯСР, поскольку в любой момент одному поставщику соответствует в точности один город.
По этой причине любые два кортежа переменной-отношения ЯСР в один и тот же момент и с одним и тем же номером поставщика должны соответствовать одному и тому же городу. Практически утверждение, что данная функциональная зависимость выполняется "всегда" (т.е. для всех возможных значений БСР), является ограничением целостности для переменной- отношения ЯСР, поскольку при этом накладываются определенные ограничения на все ее допустимые значения. Вот формулировка этого ограничения, которая выполнена с использованием синтаксиса, введенного в главе 1О. СОМБТЯА1МТ Б( С1ТХ РО СООМТ ( ЯСР ( Б() ) ) = СООЯТ ( ЯСР ( И, С1ТХ ) ) 4О2 Часть 1П. Проектирование базы данных Выражение Я() — э С1ТУ может расцениваться как сокращенный способ представдения этой более длинной формулировки. Ниже приведено определение концепции функциональной зависимости для п.
б (расширения определения, данного для п. а, отмечены полужирным шрифтом). ° Пусть К является переменной-отношением, а Х и У вЂ” произвольными подмножествами множества атрибутов переменной-отношения К. Тогда У функционально зависимо от Х, что в символическом виде записывается как Х -+ У (и читается либо как "Х функционально определяет У", либо как "Х стрелка У") тогда и только тогда, когда для любого допустимого значения переменной- отношения К каждое значение множества Х отношения К связано в точности с одним значением множества У отношения К.
Иначе говоря, для любого допустимого значения переменной-отношения К, если два кортежа переменной-отношения К совпадают по значению Х, они также совпалают и по значению У. Следовательно, далее термин "функциональная зависимость" будет использоваться в последнем безоглносишельном ко ереиенл смысле (за исключением особо оговоренных случаев).
Ниже перечислено несколько безотносительных ко времени функциональных зависимостей, выполняющихся для переменной-отношения ЯСР. ( Я), Р$ ) -э СТУ ( Я(, Р$ ) -+ С1ТУ ( Я(), Рг ) -+ ( С1ТУ, СТУ ) ( Я$, Рт ) -э ЯМ ( Я(, 'Р( ] + ( Я(, Р(, С1ТУ, 0ТУ ) ( Я( ) -+ С1ТУ Обратите внимание, в частности, на функциональные зависимости, которые выполняются для отношения, представленного на рис.
10.1, но не выполняются "всегда" лля переменной-отношения ЯСР. Я$ -+ ()ТУ ДТУ вЂ” > Я() Иначе говоря, такое утверждение, как "число деталей для каждой поставки данного поставщика одинаково", истинно для конкретных значений, присутствующих в отношении на рис. 10.1, но ложно для всех возможных допустимых значений переменной-отношения ЯСР. Следует отметить, что если Х является потенциальным ключом переменной- отношения К, то все атрибуты У переменной-отношения К должны обязательно быть функционально зависимы от Х (этот факт упоминается в разделе 8.8 и непосредственно следует из определения потенциального ключа). Аналогично в переменной-отношении деталей Р необходимо, чтобы всегда выполнялась следующая зависимость. Р» -> ( Р(, РКККХ, С01,0К, 8810КТ, СУТУ ) 403 Гпава 10.
Функциональные зависимости Действительно, если переменная-отношение В удовлетворяет функциональной зависимости й — > В и й не является потенциальным ключом', то й будет характеризоваться некоторой избыточностью. Например, если обратиться к переменной- отношению БСР, наличие в ней функциональной зависимости Я$ — э С1ТТ приведет к тому, что сведения о месте расположения поставщика в определенном городе повторятся много раз (это хорошо видно на рис. 10.1). Подробнее данный вопрос обсуждается в следующей главе. Теперь, даже если ограничиться рассмотрением функциональных зависимостей, которые имеют место в любой момент, полный набор функциональных зависимостей, выполняющихся для всех допустимых значений заданной переменной-отношения, может быть все еше очень большим, что можно видеть на примере переменной-отношения БСР.