|
Программирование >> Реляционные базы данных
В этом разделе более подробно и последоиательно рассматривается задача разработки хороших реляционных схем. 1. Сначала летально анализируются проблемы, возникающие при пе>епол-нении схемы. 2. Затем вводится понятие декомпозиции - разбиения схемы отношения (множества атрибутов) иа более мелкие схемы. 3. Далее сводится нормальная форма БоПса-Кодда (ECNF) - условие для реляционной схемы, позволяющее решить упомянутые проблемы. 4. Два предыдущих пункта объединяются при об-ьяснении того, как обеспечивается BCNF с помощью декомпозишти реляшюнных схем. 3-7.1 Аномалии Проблемы типа избыточиости, возникающей при попытке внести слишком большой объем информации в единственное отношение, называются аномалиями. Основные виды аномши1й: 1. Избыточность. Информация может без всякой необ.\однмости повторяться в множестве кортежей. Примеры-длина и тип фильма на рис. 3.30. 2. Аномати обновления. Информацию можно изменить в одном кортеже и оставить ее же без изменений в другом. Например, обнаружив, что фильм Star Wan на съмом пеле длится 125 ми?1, можно по рассеянности изменить цифру в первом кортеже на рис. 3.30, а во втором и т)етьем - нет. Конечно, можно заявить, что необходимо всегда быть внимательным. Однако далее мы увидим, что негрулно перестроить отношение Movie так, чтобы исключить риск подобной ошибки. 3. Аномати удаления. Если множество значений становится пустым, побочным эффектом может быть утрата и другой информации. Например, при удалении Эмилио Эстевез из числа кинозвезд фильма Mighty Duck в базе да1И1ых не останется больше кинозвезд для этого фильма. Последний кортеж для Mighty Duck в отношении Movie исчезнет вместе с информа-ииеП о том, что данный фильм цветной и длится 95 мин. 3.7.2 Декомпозиция отношений Для устранения аномалий применяется метод декомпозиции отношений. Декомпозиция Л - это расгцепление атрибутов Л для построения схем двух новых отношений. Правило декомпозиции включает в себя и способ заполнения новых отношении путем проекции кортежеП отношения Л. После описания процесса декомпозиции мы покажем, как выбирать декомпозицию, устраняющую аномалии. Отношение Л со схе.чюй {Af, Aj,.... .4 ) можно расчленить на два таких отношения 5 и 7 со счема.ми {5 B,-.., BJ и {С Cj,Q) соответственно, что 1. И Aj,Л} = {В,. Bi, BJ u (С, Сз.Q.. 2. Кортежи в отношении S являются лроекщ/ями на {Д, £>.....В ,] всех кор- тежеП в Я Другими словами, для каждого кортежа / в текущем экземпляре Л берутся ко\июненты / в атрибутах В\, ft. В, . Эти компоненты формируют кортеж, который и принадлежит текущему экземпляру оттю-шения S. Однако отношения являются множествами и один и тот же кортеж S может получиться из проекции двух различных кортежей Л. В гаком случае в текущий экземпляр S помещается только один экземпляр кортежа. 3. Кортежи в отногвении Г- тоже проекции кортежей в текущем экземпляре R на множество атрибутов {Ci, Сг.....Q]. Пример 3.32. Выполним декомпозицию отношения Movie, показанного на рис. 3.30. Сначала расчленим схему. Наш выбор (цель которого будет ясна из раздела 3.7.3) состоит в гом, чтобы использовать: 1. Отношение Moviel, в схему которого входят все атрибуты, кроме StarName. 2. Отношение Movie2, схема которого СОСТОИТ нз атрибутов title, year и StarName. Затем рассмотрим процесс декомпозиции экземпляров отношений путем декомпозиции данных, пршзедеиных на рис. 3.30. Сначала построим проекцию на схе.му Moviel: {title, year, length, filmType. studioName) Первые три кортежа иа рис. 3.30 имеют в этих пяти атрибутах одни и те же компоненты: (Star Wars, 1977. 124, color, Fox) Чезвертый кортеж порождает для первых пяти компонентов совсем другой кортеж, а пятый и шестой кортежи порождают один и гот же пятикомпонентный кортеж. В результате получается огношение для Moviel, изображенное на рис. 3.31. 1Юв Star Wars Mighty Ducks Waynes World ! year length filmType 1977 1 124 1991 1992 I 104 color color color StudioName Disney Paramount Ри . 3.31. Отношение для Moviel title Star Wars Star Wars Star Wars Mighty Ducks Waynes World Waynes Workl year 1977 1977 1977 1991 1992 1992 starNeme Carrie Fisher Mark Hamill I Harnson Ford i I Emilio Estevez Dana Carrey Mike Meyers Рис. 3.32. Отношение Movie2 Теперь расемот1)нм проекцию с рнс. 3.30 на схему Movle2. Все шесть кортежей этой с.чемы отличаются друг от друга по крайней мере в одном из атрибугов title, name или siarName. поэтому в результате получается отношение, показанное на рис. 3.32. □ За.метим, что такая декомпозиция устраняет аномалии, упомянутые в разделе 3 7.1. Исчезает избыточность. В частности, длина фильма входит в отношение Moviel только один раз. Риск .лномалии обновления тоже исчезает. Например, поскольку нужно изменить ilthiry фильма Star Wars только в одном кортеже отношения Moviel, можно ие опасаться, что появится две различные длины этого фильма. Н н.зконеи, .чы избавляемся от риска ансмалии удаления. Так. при удалении йсе.< ктюзвеи хчя фильма Mishi} Duck этот фильм исчезает из отношения Movie2, ио I1CIO остальную ннюрмацию о нем можно найти в отношении Moviel. Может создаться впечатление, что отношению Movie2 все еше присуща избыточность, поскольку название фильма и год выпуска появляются в нем многократно. Но эти два атрибута составляют ключ для множества фильмов, и более короткого способа представления фильма не существует. Более того, Movie2 исключает возможность аномалии обновления. Может показаться, что, если изменить год в кортеже с Кэрри Фишер, не изменяя два других кортежа лля Sior Wois возникнет аномалия обновления. Однако в предполагаемых функциональных зависимостях нет ничего такого, что предотвращало бы появление в 1997 г. дру ого фильма с названием Star Wars, и Кэрри Фишер вполне могла бы н нем играть Поэтому изменение года в кортеже для ,Йог Wars не запрещается и совсем необязательно, что такое изменение является неправильным. 3.7-3 Нормальная форма Бойса-Кодда Декомпозиция предназначена для замены отношения несколькими другими отношениями, свободными от аномалий. Оказывается, есть простое условие, при котором аномалии изначально не могут сушествовать. Оно называется нормальной формой Ьойса-КоЗда. или BCNF. Отношение Я есть BCNF, если и только если при наличии в R нетривиальной зависимости >1, Л ... А -> В множество {А,. А,.....А } является над- ключом для /?- Это значит, что левая часть любой нетривиальной зависимости должна быть надключом. Напоминаем, что надключ не всегда минимален. Поэтому BCMF эквивалентна условию, согласно которому левая часть любой нетривиальной функциональной последовательности должна содержать ключ. Если обнаружена зависимость, нарушающая BCNF. полезно найти все другие зависимости с такими же левыми частями, независимо от того, нарушают они BCNF или нет. Приведем альтернативное определение BCNF. отражающее поиск таких зависимостей с олянаковылт левыми частями, по крайней мере одна из которых нарушает BCNF. Отношение Л находится в BCNF, если и только если для Л выполняется нетривиальная зависимость A,Aj .. А -* В, В2... В и множество М /I .., является надключом для R. Это требование эквивалентно исходному условию BCNF. Напоминаем, что зависимость /1,/I, .../( -> fij Sj- это сокращенная запись множества заннси-мосгей А,А2. .А Zf, для i= \,2, .. т. Поскольку должно быть хотя бы одно В;, не встречающееся в левой части (в противном случае зависимость будет тривиальной), то /4 А ->< -* fi( является нарушением BCNF согласно первоначальному определению. Пример 3.33. Отношение Move на рис. 3.30 не находится в BCNF. Чтобы убедиться в этом, нужно снлчала определить, какие множества атрибутов слулат ключами В примере 3 1 показано, что ключом является {Ме. year. slarName}. Значит, любое множество, содержащее эти три атрибута, представляет собой надключ. Аналогичную аргументацию из примера 3.21 можно использовать для объяснения тою. noicmy пи одно множество, не содержащее все эти ри атрибута, не может быть надключом. Следовательно, можно утвер>кл11Ть, что {title year, starName) - это единственный ключ для Movie
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |