通常のフォームが何であるかは理解していますが、それらを扱うのに苦労しています。私はデータベースシステムのコースを受講していますが、どういうわけかこれについて少し迷っています。私はGoogle、stackoverflow、コースのスライド、本を試しましたが、例は毎回私を軌道から外しているようです. この投稿に沿って間違った仮定/結論を下した場合は、いくつかの指針が欲しいだけでなく、最終的に何が欠けているかについての指針も欲しい.
今日実行した特定の演習は次のとおりです。この DB を指定して、BCNF に変換します。
DB:
AB -> EF
F -> AB
A -> CD
私が理解しているように、ここには2つの候補キーがあります。AB と F です。これは、どちらも DB 全体を導出できるためであり、どちらも単一の左辺で構成されるという意味で最小であるためです。
F を主キーとして使用するとします。
元は:DB(F->AB)
1NF の場合、繰り返しグループはないようです。小切手。
2NF の場合、部分的な依存関係はないようです。(これは F が唯一の主キーでは不可能ではないでしょうか?)
3NF には問題があります! AB と A はどちらもキーではありませんが、他の属性を決定します。これを解決するには、それらをキーにする必要があります: (下線がなくて申し訳ありません。下線を引くオプションがないようです)
DB(F->AB)
R1(AB->EF)
R2(A->CD)
私が理解しているように、BCNF の場合、手順は次のようになります。3NF DB を元の DB と比較します。左側全体が 3NF DB に存在し、少なくとも 1 つの右側が存在する元の DB 内の出現を検索します。これを持たないことがどうして可能なのか、私にはよくわかりません。この部分を誤解していたのかもしれません。とにかく、続けます。
最初に出現するのは F->AB です。これは主キーなので問題ありません。
2 番目のオカレンスは AB->EF です。ABは候補キーなのでこれもOK。
最後の出現は A->CD です。A は候補キーの一部にすぎません。これは BCNF に違反しており、書き換える必要があります。そして、ここで完全に電車を降ります。これを書き直す方法がわかりません。また、これまでの手順が理にかなっているのかどうかもわかりません。誰か私がそれをまとめるのを手伝ってくれますか?