0

誰かが私のデータベースが第3正規形であることを確認できますか?そうでない場合は、その理由を説明できますか?DBに必要なテーブルは3つだけです。だからここにあります:

Customer No. (PK)     Store No. (PK)     Sale No. (PK)
Name                  Location           Customer No. (FK)
Telephone             Revenue            Store No. (FK)
Address                                  Total
Purchases($)                             Paid
Store No.
4

2 に答える 2

0

3 つのテーブルは次のようになります。 テーブル 1:顧客

Customer No. (PK)
Name
Telephone
Address

表 2:ストア

Store no. (PK)
Location

表 3:販売

Sale No. (PK)
Customer No (FK)
Store No (FK)
Total
Paid_yes_no

列を通じて部分的な支払いなどを追跡しようとしている場合Paid、それは別のテーブルになります (そして、はるかに複雑なデータベース)。ただし、Paid請求書が支払われたかどうかを列に示すだけの場合は、上記が機能するはずです。

Dateおそらく、そこにもフィールドが必要ですか?

于 2013-02-09T09:36:43.607 に答える
0

いくつかの問題があります。これは、仕様が実世界ではなく宿題のためのものである可能性があります。

  • Store No.複数の店舗を持つビジネスには、複数の店舗を利用する顧客がいると予想するのは合理的です - 仕様に別段の記載がなく、その場合、分類法 (ネーミング) を拡張する必要がある場合を除き、First Store No.またはHomeを考慮することができます。代わりに店舗番号。また、残す場合は外部キーとしてマークアップする必要があります。
  • Purchases($)顧客テーブルのデータは、変更される他のデータに依存しています。他の情報から派生したものであるため、保存しないでください。
  • Addressは単一の列ではありません - 番地、都市、州、国、郵便番号などの複数の部分があり、第 2 正規形を完全に満たすために追加のテーブルの詳細が必要になる場合があります。同様にTelephone、 が 1 つの数字になることはほとんどありません。

知っておくべきことは、それぞれ 1 回だけ表示する必要があります。他の何かから計算できる場合は、答えを保存するのではなく、それを行う必要があります。現実の世界では、一部の情報をテーブルにキャッシュしたり、パフォーマンスのためにバッチ処理したりすることがありますが、それらは後で必要な場合にのみ適用されます。

データベースの正規化の簡単な概要は、http://databases.about.com/od/specificproducts/a/normalization.htmにあります。プロジェクトを作り直す前に、おそらく目を通しておく必要があります。

于 2013-02-09T10:27:56.817 に答える