2017-03-15 8 views
0

私の理解では、カーディナリティが1から1までの場合、 では、リレーションテーブルを作成するのではなく、エンティティの主キーを外部キーとしてエンティティテーブルに追加します。リレーショナル・スキーマ:(0,1)から(0,1)の属性との関係 - 新しい表を作成しますか?

しかし(0,1)から(0,1)の関係はどうですか?

I.e.スタッフを1つの外部作業スペースに割り当てることができ、その作業スペースには1人を超える人を割り当てることはできません。これらのスタッフは、割り当ての開始日と終了日を予定しています。

スタッフエンティティ、ワークスペースエンティティ、およびそれらの間の割り当てられた関係。 私は関係 'assigned'にstart_dateとend_dateという2つの属性を作成しようと考えています。

1)新しいテーブルを作成しない場合、スタッフがワークスペースに割り当てられていないとどうなりますか?外部キーをNULLに設定するだけですか?

2)さらに、スタッフ属性テーブルにリレーション属性を追加しますか?

私は事前に

多くのおかげで...単に別のテーブルを作成することは非常に簡単になると思います。

+1

あなたに感謝し、その人は多分、再び時間Cで最初のワークスペースを取得します?それとも、本当に1つの割り当てですか、それだけですか?その場合:今後の課題を追加したくないですか(たとえば、現在の課題が現在の列に残っている間、翌月には)? – Solarflare

+0

私の現在の大学プロジェクトの仕様では、一度だけ割り当てる必要がありますが、別のテーブルを作成する方がいいでしょう。あなたの洞察をありがとう! – zcahfg2

答えて

2

テーブルの配置方法は、使用しているモデリング方法によって異なります。同じアプリケーション状況を表す多くのリレーショナルスキーマが存在する可能性があります。 (陳ERモデリングでは、実際には "ER"と呼ばれるべき唯一の方法ですが、エンティティテーブルは他のエンティティテーブルにFKを持ちません)。0または1から0または1の場合は、 &直接的なデザインは、適切なペアと各エンティティが一意の別個のテーブルです。あるいは、エンティティテーブルの1つにヌル可能な一意のFKを他のエンティティテーブルに置くことができます。エンティティのエンティティテーブル行のNULLは、前のテーブルによって表される関係において他のエンティティがペアになっていないことを示します。後者の設計は、元のテーブルをエンティティテーブルの1つに埋め込むものとして記述できることに注意してください。後者のデザインは、通常は非対称の&ですが、通常の理由で明示的な&という単純なデザインを使用しないという理由があります。

1

私の意見では、allocationIDが主キー、staff_idが外部キー参照スタッフ、workspace_idが外部キー参照workspace、start_date、end_dateとなるworkspace_allocationテーブルを作成する必要があります。

このようにして、スタッフとワークスペースの間に0-1の関係を設定できます。

どう思われますか? コメントを残してください。

はおそらく一人は、時間Aのワークスペース、および時間Bでワークスペースを持っている同じ人を持つことができるようにしたい

+0

ありがとう、私は別のテーブルを作ることは一般的なケースでは良いと思っています、とコメント者も指摘したように、このアプローチは将来の割り当てを持つことができます。しかし、これは大学のプロジェクトであり、私たちのデータベース講師は、冗長なテーブルから完全なマークを得ることを避けるように指示していました。 – zcahfg2

関連する問題