1

たとえば、私は 2 つのエンティティを持っています: 本は多くのコピーを持つことができるので、1-n の関係を持つ本とコピーです。

コピーが強力なエンティティである場合、

book(PK_ISBN#, title, edition, date) copy(PK_copy#, condition, FK_ISBN#)

コピーが弱いエンティティである場合、

book(PK_ISBN#, title, edition, date) copy(ISBN#, copy#, condition) Primary key (ISBN#, copy#) 外部キー ISBN# references book(PK_ISBN#)

質問:両方のケースが似ていると思うのに、なぜコピー エンティティが強いエンティティではなく弱いエンティティになるのでしょうか。

P/S: もう 1 つの質問: SQL コードで部分的または全体的な参加制約をどのようにモデル化できますか。

4

1 に答える 1

1

お気づきかもしれませんが、実際には、強力なエンティティを表すテーブルと弱いエンティティを表すテーブルの SQL 実装にはほとんど、またはまったく違いはありません。この概念は ER 表記法に存在しますが、談話のドメインのセマンティクスを理解する方法を除いて、リレーショナル モデルや SQL とはほとんど関係がありません。

ただし、あなたの例は詳細が少し大雑把です。最初の例では copy 属性が一意ですが、2 番目の例では一意ではないようです。

標準 SQL は複数の代入をサポートしていないため (両方のテーブルを同時に更新することはできません)、通常、2 つのテーブル間の合計参加制約を SQL で適用することは不可能です。回避策は、更新中の制約チェックを無効にするか延期することです。これは、そのような制約の価値が限られていることを意味します。部分的な参加は、本質的に外部キー制約によって達成されるものです。

于 2013-06-05T06:28:10.903 に答える