Нахождение первичного ключа и нормализация отношения с функциональными зависимостями
Я готовлюсь к экзамену по базам данных, и я понял, что мой профессор не преподавал раздел лекций по нормализации, но затмил их, поэтому я занимался самообучением, и в примечаниях есть этот пример без решений, и мне было интересно если я все делал правильно
Данное отношение R = {A,B,C,D,E,F,G,H,I,J}
И функциональные зависимости:
A,B -> C
A -> D,E
B -> F
F -> G,H
D -> I,J
- Определить первичный ключ
- Разложите R так, чтобы оно было в 2NF, затем покажите его в 3NF.
Итак, я получил первичный ключ, чтобы быть (A, B, D, F)
А потом я попытался преобразовать его в 2NF, и я получил отношения:
(ABC), (DIJ), (ADE), (BF), (FGH)
И я, честно говоря, понятия не имею, правильно ли это или как затем поместить его в 3NF... или я только что пропустил 2NF и уже поместил его в 3NF. Любая помощь?
1 ответ
Мне кажется, что вы пропустили NF2 и нормализовали отношение прямо в 3NF:)
Первичный ключ для исходного отношения должен быть (A, B), так как по правилам вывода (транзитивность, такая как A->D,E и D->I,J, следовательно, A->I,J) определяет все остальные атрибуты. С этого момента мы имеем следующее:
- FD1: A, B -> C
- FD2: A -> D, E (Частичный)
- FD3: B -> F (Частично)
- FD4: F -> G, H
- FD5: D -> я, J
2NF (частичные зависимости не допускаются)
Теперь мы можем разложить отношение на три отношения, перемещая частичные FD в отдельные отношения, но сохраняя другие FD, которые могут зависеть от этих частичных FD, такие как FD2 и FD5. Это даст нам следующие результаты:
- R1 (A, D, E, I, J) - FD2, FD5 (переходный)
- R2 (B, F, G, H) - FD3 FD4 (переходный)
- R3 (A, B, C) - FD1
Далее, чтобы достичь 3NF, транзитивные зависимости должны быть удалены в отдельные отношения таким же образом, как NF2. Что, в свою очередь, приведет к набору отношений, которые вы уже получили.
Удачи с экзаменами!