0

単純なデータベースの概念をもっと理解しようとしていますが、より高度な正規化に問題があります。たとえば、ボイス コッド正規形 (BCNF) と第 4 正規形 (4NF) では、次のようになりますか?

INVOICE(CustomerNumber、FirstName、LastName、Phone、InvoiceNumber、DateIn、DateOut、ItemType、Quantity、ItemPrice、ExtendedPrice、SpecialInstructions)

私はこれまでこれを行いましたが、私はまだそこにいないことを知っています:

CUSTOMER(CustomerNumber、FirstName、LastName、Phone、InvoiceNumber) INVOICE(InvoiceNumber、DateIn、DateOut、ItemType、Quantity、ItemPrice、SpecialInstructions)

私が読んでいる本によると、次の仮定はすでに整っています。

  1. CustomerNumber --> (FirstName, LastName)、CustomerNumber ではありません -->--> (FirstName, LastName)
  2. 顧客番号 -->--> 電話。顧客ごとに複数の電話番号がある場合があります。
  3. 1 人の CUSTOMER には多くの ORDER がありますが、各 ORDER は 1 つの CUSTOMER にのみ関連付けられています。
  4. 1 つの ORDER には多くの ItemType がありますが、各 ItemType は ORDER 内で 1 回だけ発生します。
  5. 商品価格は注文ごとに変わらないため、ItemType によって ItemPrice が決まります。
  6. アイテムごとに異なる指示が与えられる可能性があるため、SpecialInstructions は各アイテム タイプに関連付けられています。
  7. 注文番号は、特定の顧客とは関係なく、注文自体に割り当てられた番号です。したがって、「顧客 101、注文 1」、顧客 101、注文 2、顧客 102、注文 1 などではなく、「123454」、123455 などの番号があります。
  8. ItemPrice は、特別価格のオファーが価格に反映されるように、注文によって異なる場合があります。

誰でも私を助けることができますか?

4

1 に答える 1

0

この投稿 (このメタ投稿を参照)への返信方法がわからなかったので、「回答」ではなく、正しい方向に進むことができるようにいくつかのアイデアを捨てます。

@Analytic さん、アイテム #2 しか作業していないようです。ORDER テーブルはどこにありますか? ITEMはどうですか?あなたの最初の試みが何であるかを私たちが知ることができるように、それをあなたの投稿に追加してください(私たちはあなたのために宿題をするつもりはありません!).

#1 と #2 だけにご尽力いただきましたので、お客様の電話番号についてコメントさせていただきます。あなたの設計では、顧客ごとに 1 つの電話番号しか許可されていないため、要件を満たしていませんか? 1 人の顧客に複数の電話番号を持たせることができるデータ構造はどのようなものだと思いますか? 顧客テーブルに Phone1、Phone2、Phone3 などのフィールドをさらに作成しますか? それは実用的でしょうか?何個入れますか?顧客があなたが計画していた以上のものを持っていたらどうしますか? 1対多の関係について説明しているこの Web ページを確認してください。

この投稿にさらに多くの作業を追加したい場合は、誠実な努力を払ってください.

幸運を。

于 2013-09-01T05:33:06.960 に答える