1

私のERDにはこのようなものがあります。

1

2 つ以上のドアで接続された 2 つの部屋があることに注意してください。これを表に変換すると、すべてのカップルのドアルームが2回繰り返されることがわかります(1回は入口として、もう1回は出口として)。そこで、ERD スキーマを [this] のように単純化しました。

2

room1 と room2 は外部キーです。

講義中、「分離された」(関係のない) エンティティを見たことはありませんでしたが、スタック オーバーフローを参照していると、誰かがそれが可能で正しいと言っているのを見ました。

上記の私の解決策は正しいですか?

4

1 に答える 1

0

はい、ダイアグラム内に孤立したエンティティが存在する可能性があります。

しかし、修正された図は不完全です。エンティティが分離されているのに分離されていないという印象を与えます。ドアと部屋は関連付けられており、関係が表示されます。

この関係を修正すると、最初の図に似たものになりますが、 と の代わりにとINOUTできます。BETWEEN 1BETWEEN 2

すぐに、あなたのデザインが元のデザインと完全に同等ではないことに気付くでしょう。元のデザインでは、一方向のドアを表すことができます。奇妙に聞こえるかもしれませんが、大規模なオフィス ビルに行くと、たとえば次のようなことがわかります。

  • 一部のドアは緊急専用ドアです。非常口の階段にアクセスするために開くことができますが、階段では戻ることができません。
  • 一部のドアには、オフィスから出ることができるように片側にのみハンドルがありますが、ヨプは別のドアから入らなければなりません。

元の設計では、単方向設計のため、多くの複製ドアが必要です (これにより、グラフ探索アルゴリズムが容易になります)。from_1_to_22 つの属性、または3 つの値 (1 から 2 への単方向、2 から 1 への単方向、または双方向、エンコーディングは演習として残します) を持つことができるfrom_2_to_1単一の属性を追加することで、同じ表現力を実現できます。direction

この改訂された設計は、冗長性を防ぎ、ドアに関する他の情報を記録する必要がある場合に正規化を容易にするため、元の設計よりも優れています (たとえば、材料、ロックの種類、耐火性、自動閉鎖の有無、シリアル番号など)。 ..)。

于 2021-08-15T11:15:19.757 に答える