0

次の ERD がある場合:

 ------
|Inv   |
---------
   1

   |
 <<contains>>

   |
   m
--------
--------                             ---------
||Line  ||  1 --- <<has a>> --- 1  | prod     |
--------                            ----------
--------

Line弱いエンティティとcontains弱い関係はどこにありhas aますか? Line の主キーはどのようになりますか?

私はオンラインで探していましたが、次のもので構成される複合主キーになると思います。

PK = (ID from line, Primary Key from Inv, Primary Key from Prod)

誰でも私を助けることができますか?私は正しいですか?どこが間違っていたのですか?等

4

1 に答える 1

1

私はオンラインで探していましたが、次のもので構成される複合主キーになると思います。

PK = (ID from line, Primary Key from Inv, Primary Key from Prod)

いいえ、Inv の主キーと明細番号だけでテーブル「明細」の行を識別できます。さらにビジネス要件 (各製品は請求書ごとに 1 回だけ表示できる) を実装する場合は、列のペア {Inv からの値、Prod からの値} に追加の一意の制約を作成できます。

実際問題として、「Inv」または「Line」では自動インクリメント ID 番号を使用しません。自動インクリメント ID 番号はギャップを残す可能性があり、会計士はギャップを嫌います。ひいては、データベース担当者は、この種の数値のギャップも嫌います。(行が「欠落している」と責められるのは私たちです。)

製品の ID 番号の保存にも注意が必要です。製品名が変更された場合、過去のすべての請求書で変更されたように見えます。これは、法廷で裁判官の悪い面を理解する良い方法です。

于 2013-02-25T22:00:16.190 に答える