Вопрос о нормализации отношений - PullRequest
1 голос
/ 04 февраля 2011

Рассмотрим, например, следующее соотношение:

R ( A, B, C , D, E, F)

, где жирным шрифтом обозначено, что это атрибут первичного ключа

с

F = {AB-> DE, D-> E}

Теперь это выглядит в первой нормальной форме.Это не может быть в третьей нормальной форме, поскольку у меня есть транзитивная зависимость, и это не может быть во второй форме, поскольку не все неключевые атрибуты зависят от всего первичного ключа.1021 *

  1. Я не знаю, что делать с F и C. У меня нет никакой функциональной информации о них!F не зависит ни от чего?Если это так, я не могу придумать какое-либо решение, чтобы получить R во 2-й нормальной форме, не вынимая его!

  2. А как насчет C?C также страдает от проблемы отсутствия ссылки в списке функциональных зависимостей.Что с этим делать?

Моя попытка получить R во 2-й нормальной форме будет выглядеть примерно так:

R ( A, B , D)

R '( D , E)

, но, как было сказано ранее, я понятия не имею, что делать с C и F.они избыточны, так что я просто вынимаю их, и вышеупомянутая попытка - это все, что мне нужно сделать, чтобы перевести ее во 2-й класс (и 3-й!)

Ответы [ 3 ]

3 голосов
/ 04 февраля 2011

Учитывая определение R, что {A, B, C} является первичным ключом, тогда существует внутренняя функциональная зависимость:

  • ABC → ABCDEF

Это говорит о том, что значения A, B и C по своей природе определяют или контролируют значения D, E и F, а также тривиальный факт, что они определяют свои собственные значения.

У вас есть несколько дополнительных зависимостей, идентифицированныхнабором F (который отличается от атрибута F - запись не очень удачна и может вызвать путаницу *):

  • AB → DE
  • D → E

Как вы правильно поставили диагноз, система находится в 1NF (потому что 1NF действительно означает «это таблица»).Это не в 2NF или 3NF или BCNF и т. Д. Из-за транзитивной зависимости и потому, что некоторые атрибуты зависят только от части ключа.

Вы правы, что в итоге вы получите следующие два отношения как частьвашего разложения:

  • R 1 ( D , E)
  • R 2 (A , B , D)

Вам также необходимо третье соотношение:

  • R 3 ( A , B , C , F)

Из них вы можете воссоздать исходное отношение R, используя соединения.Набор отношений {R 1 , R 2 , R 3 } является разложением исходного убытка R.


без потерь

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

0 голосов
/ 04 февраля 2011

Я думаю, что первичный ключ R установлен неправильно.Если F функционально не связан ни с чем , он должен быть частью ключа

Таким образом, у вас есть R ( ABCF DE), который сейчас находится в первомнормальная форма (с F = {AB-> DE, D-> E}) Теперь вы можете изменить ее на вторую нормальную форму.DE не зависит от всего ключа (частичная зависимость), поэтому вы помещаете его в другое отношение, чтобы перейти ко второй нормальной форме:

R ( ABCF ) F = {}

R1 ( # AB DE) F = {AB-> DE}

Теперь это отношение не имеет транзитивных зависимостей, поэтому оно уже находится в третьей нормальной форме.

0 голосов
/ 04 февраля 2011

F ни от чего не зависит?

Нет, вам просто не дали никакой явной информации об этом в форме

{something -> F}

И, в сущности, то же самое можно сказать и о С. Вы должны вывести другие зависимости, применив аксиомы Армстронга. (Возможно.)

Подумайте, как это закончить:

Дано R ( A, B, C , D, E, F)

  • { ABC ->?}

[Позже. , , Я вижу, что Джонатан Леффлер сломал ожидание, поэтому я просто закончу это.]

{ ABC -> DEF} (по определению) поэтому

{ ABC -> F} (Разложением. Вот где F и C входят. И это ваше третье отношение.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...