0

私は、関係するスキーマが与えられた場合、すべての正しいFDを見つけるのにいくつか問題があります。レシピ成分の機能的な依存関係とBCNF分解の発見

Recipe (userID, code, title, description, username, email, vegan, vegetarian, difficulty) 
    with (userID, code) PK 
Ingredient (code, name, description, vegan, vegetarian) with (code) PK 
RecipeIngredient (userID, recipeCode, ingredientCode, recipeTitle, ingredientName, quantity) 
    with (userID, recipeCode, ingredientCode) PK 

キー、ユーザーID、RecipeIngredientでrecipeCodeレシピを参照する外部キーであり、ingredientCodeは成分を参照する外部キーです: は特に、ユーザーが投稿したレシピや食材についてinfomrationを格納し、次のデータベースを、考えます。 各ユーザーには1つのメールアドレスとユーザー名が割り当てられています。レシピや成分がビーガンの場合は、菜食主義者でもあります。

上記のデータベースがうまく設計されているかどうか(BCNFの意味)を判断しなければBCNFに再構成する必要があります。

どのようにすべてのFDを見つけることができますか?

+0

あなたが与えた参考資料は、どのような手順であると言いますか?これまでにどのように適用しましたか?あなたはどこにいるのですか? PS PKは無関係であり、候補キーは重要である。 – philipxy

+1

FDは、ドメインおよびシステム要件の理解に基づいて選択されます。サンプルデータは、FDが保持しているか保持していないかを確認するのに役立ちます。必要なものがテーブルや列名であれば、(a)データモデラーの役割を担い、関係するステークホルダーとシステムを話し合ったり、要件を分析したり、FDを適切に選択したり、(b)不十分な情報 – reaanb

+0

あなたは*与えられたPKs/CKsでしたか?候補キーの定義を調べます。列がCKであることを知っているときは、特定のFDを知っています。これはCKを決定するのはFDだからです。また、あなたがそれらのPKs/CKsを与えられなかったならば、なぜ彼らがCKsだと思いますか? – philipxy

答えて

0

だから、私は次のFDを見つけるためにしようとしました:

コード - >コード、名前、decription、ビーガン、ベジタリアン(リレーションの「食材」、成分がBCNFであることを示唆しています)。その後

ユーザーID - >電子メール、ユーザ名

レシピ - >タイトル、説明、ビーガン、ベジタリアン、難易

recipeCode - > ingredientCode、ingredientNAme、数量

は、これらは正しい?他のFDはありますか?私は本当にそれらを見つけることができません。 私が見つけたFDをGovenしましたが、DBがBCNFにあるかどうかを知ることはできますか? ありがとうございます!

+0

FDを保持することについて話すとき、それは常に1つの関係(値または変数)に関してです。したがって、各リレーションごとに個別にFDをリストする必要があります。 (同様に、FKは正規化とは関係ありません)(また、FKは表と列のリストから表と列のリストにあります)。 FDの定義がない場合は、どのように見つけることができますか?例えば、 "各ユーザは1つの電子メールを持っています...";そのため、 "...ユーザーUは電子メールEを持っている"行を保持するテーブルでは、与えられたUを持つすべての行は同じEを持ちます。 U→Eが成り立つ。 – philipxy

関連する問題