2016-10-08 6 views
1

こんにちは私は解決する必要がある次のデータベース設計の問題があります。データベースERDループクエリ

セクションでは、多くのスタッフ

各セクションがある複数の電話番号

各スタッフが独自の内部の電話番号を持っているを採用しています。

電話、スタッフ、セクションの3つのエンティティを作成しました。電話エンティティは、PKとして電話番号とともに番号を格納する。しかし、私が作成したERDには、3つのエンティティ間にループがあります。任意の単純なソリューションは、電話のエンティティを使用してループを避けるために?

Phone Loop ERD Image

+0

なぜ電話機にsectionNumberFKがあるのですか? SectionエンティティにStaffのようにphoneNumberへの参照を持たせてください。 –

+0

SectionとStaffの関係を削除し、各電話番号にセクションが割り当てられているため、電話番号属性を使用してセクション番号属性を見つけることはできますか? – Ableman

+0

各セクションには複数の番号があり、3NFでなければならないため、ERDに複数値の属性を設定することはできません。 – Ableman

答えて

1

私はERDループについて理解しています。私の理解では、ERDループは、外部キー参照が無限に周りを回るときです。あなたのケースでは、もしSectionがスタッフへのFK参照を持っていればループがあります。その後、セクションは、スタッフ、スタッフ参照電話、および電話参照セクションをループで参照します。

このようにモデル化していないのは、あなたのケースで正しくないからです。スタッフ参照セクションを使用して、それを正しくモデル化しました。

本当にループはありません。スタッフは電話とセクションの両方を参照しますが、それらは独立した関係です。

なぜそれがまだ問題なのですか?

+0

こんにちは、フィードバックありがとうございます。はい、それは私が思ったものですが、私がこのプロジェクトで取り組んでいる他の人たちは、画像のERDがループを示しているかどうかは不明です。それをクリアしていただきありがとうございます。 – Ableman

0

あなたは、最も可能性の高い電話番号と節の間の関係を削除することができます。各電話機に1人のスタッフが応答するだけの場合は、すでに問題を解決しています。その電話に応答するスタッフメンバーに基づいて、どの電話機がセクション内にあるかを知っています。

複数のスタッフが電話に応答できる場合は、その多対多の関係を表す連想テーブルが必要です。

各スタッフのプライマリ電話を追跡する必要がある場合は、特定の電話機が特定のユーザのプライマリであることを示すために、「IsPrimary」フラグを連想テーブルに追加できます。この場合、スタッフのメンバーが複数のプライマリ電話を持たないようにするには、少なくともスタッフの参照のために連想テーブルに一意の制約を設定することをお勧めします。

電話機を複数のスタッフメンバーのプライマリにすることができないように、一意制約を追加することもできます。 2つの電話エンティティ

を処理するために

更新あなたは2つの電話エンティティを持つことにした場合でも、あなたが最も可能性の高い電話番号が両方のエンティティ全体で一意であることを確認したいと思うでしょう。相互排他的なサブタイプを実装することで、これを行うことができます。それを行う方法の良い説明はここにあります:How to Implement Referential Integrity in Subtypes

一度あなたがサブタイプを持っていれば、元のモデルを使用することができます。 SectionPhoneはサブタイプの1つになり、現在あなたのPhoneエンティティにあるものになります。 StaffPhoneは、Staffテーブルによって参照される他のサブタイプになります。

+0

こんにちは、おかげで、割り当てられたセクションの電話番号(セクションごとに多くなる可能性があります)は、すべてのスタッフ、つまり特定でないいくつかの番号スタッフに。これにより、スタッフは異なる日時に卓上電話を共有することができます。また、すべてのスタッフは、共有セクションの電話番号の一部ではない一意の電話番号を持っていなければなりません。 – Ableman

+0

電話番号は1つの物理的な電話機に割り当てられていますか。これはあなたの電話の実体に基づいているようです。 – Bobby

+0

セクションごとに複数の電話機を反映させる必要があります。コールセンターの電話のように。スタッフの内線電話は特定のスタッフに直接電話しています。 – Ableman

関連する問題