0

私はSQLにやや慣れていません。

次のようなドキュメントを作成するために照会できる請求書を作成する必要があります。

スクリーンショット

これが私が作ったカラスフット図です:

クロウズ フット ダイアグラム

顧客の配送先住所と請求先住所を別のエンティティにする必要があるかどうかわかりません。また、tblProductLine と tblItem および tblInvoice の関係についてもよくわかりません。私はそれを正しく図にしましたか?

スキーマを一致させ、関係を正しく設定しましたか? また、誰かが外部キーが必要な場合を説明できますか? (どこに置くべきかわからなかったので)1対多の関係の終わりに、それを呼び出した前のテーブルを参照すると仮定していますが、よくわかりません...どのテーブルに外部が必要ですか鍵?

とにかく...どんな助けやコメントも素晴らしいでしょう!

4

2 に答える 2

1

通常、注文と請求書は非常に密接に関連していますが、切り離されています。それらを単一のエンティティに統合しています。

お客様は、1つまたは複数の製品を注文します。これにより、注文ヘッダーと注文詳細が生成されます。販売者は、注文を参照する請求書を発行します。しかし、非常に単純なママとポップの操作では、ORDERSを省略して、INVOICEエンティティに注文を表すことができます。

        ORDER|INVOICE DETAIL
        id  int PK
        headerid foreign key references INVOICEHEADERS or ORDERHEADERS *mutatis mutandis*
        productid foreign key references PRODUCTS(id)
        quantity
        extendedamount

外部キーが必要なのは、存在しない製品の注文を作成したり、存在しない顧客に請求したりすることを防ぐためです。それらは、データベース行に不可能性が含まれていないことを保証します。

通常、CUSTOMERSを参照する個別のテーブルとしてCUSTOMERADDRESSESがあります。顧客は1つ以上のアドレスを持つことができます。

エンティティが「1つ以上のXを持つ」ことができる場合は常に、Xをキャプチャするために別のテーブルが必要であることを示しています。

于 2011-07-04T10:42:04.600 に答える
1

ランダムな順序でいくつかの考え:

  1. あなたのカラスの足は、いくつかのエンティティにとって間違った場所にあります. 従業員は複数の請求書を持つことができますが、請求書は 1 人の従業員によって「所有」されていると想定しています。
  2. EmployeeがあるのはなぜInvoiceIDですか? 彼らは確かに複数の請求書を持つことができますか?
  3. -tableを追加することを検討し、Address顧客に aShippingAddressと a BillingAddress(オプション) を提供します。両方とも を参照しAddressます。
  4. QuantityAmountのはどう違いtblProductLineますか?
  5. 送料と手数料の価格はどこから入手できますか?
  6. サイズは追加のフィールドに保存していますが、色は保存していません。色は の一部である可能性がありますが、赤と青のジャグ サムシングが同じ製品ItemDescriptionであることを実際に確認することはできません。要件によっては、そのテーブルを正規化してサブテーブルに移動する方がよい場合があります。製品の名前を変更する必要がある場合、多くのレコードではなく 1 つのレコードのみを変更します。
    sizecolor
于 2011-07-04T10:16:24.833 に答える