0

私は、顧客にDVD販売とDVDレンタルの関係をモデル化しようとしています。私のトランスファテーブルは正しいとは思わないが。もし誰かが、私が正しい方向に行くことができれば、私に知らせることができます。このデータベースモデルを改善するにはどうすればよいですか?

Relationship Model

+3

Database_design ...これはあなたのニーズに応じて、それをここからそれを取るし、微調整するためにいくつかのアイデアを提供したいと考えています。数量列を販売テーブルとレンタルリンクテーブルに移動することができます。 –

+2

レンタルやセールのために別々のテーブルが必要かどうかについて懸命に考えるかもしれません。非常によく似た意味情報がここにあります。 – Patrick87

答えて

5

これを設計できる方法が1つあります。

私はデータベースエキスパートではありません。少数のテーブルを持つ小さなアプリケーションのためのデータベースを設計しました。私はを試してください(試しに重点を置く、時々私は失敗します)可能な限り一般的なので、私はスコープの変更があるときに角に閉じ込められていません。

  1. 図では、DVDのみを販売するという前提のようなものはほとんどありませんでした。店主がBlu-rayディスクや携帯ゲーム機を販売し始めるとどうなりますか?私の提案は、デザインを包括的に保つことです。だから私はテーブルに何かを保持できるようにItemにDVDテーブルを改めた。

  2. アイテムタイプテーブルを追加して、アイテムタイプを定義することもできます。

  3. あなたはトランザクションを単一の注文とみなす必要があります。顧客は、購入したいアイテムのセットと、レンタルしたいアイテムはほとんど含まれていない単一の注文を置くことができます。あなたは彼らにカードを2回スワイプするように頼むことはありませんか?代わりに、オーダーヘッダーに顧客のオーダーを作成し、オーダー明細テーブルにその明細を配置します。注文詳細テーブルには、顧客が購入/レンタルしたいアイテムの数などの数量も指定されます。彼らが家賃を払うとき、戻る日付フィールドは、最初にnullになります。彼らが商品を返品すると、商品IDと顧客IDの組み合わせを検索して、日付に戻ることができます。

あなたはいくつかの方法n数でこれを設計することができますが、限られた情報で、これは私が思い付くことができるものです。

私はこれが最高のデザインであるとは言いません。私はあなたの現在のスキーマがtehの同じDVDの複数のコピーを1回のトランザクションで販売することはできません

+0

+1の画像と似合う –

1

私は1つのテーブル内のすべてのトランザクション情報を入れてしまうでしょう。一部のフィールドは、取引のタイプ(P Purchase、R Rental)によっては使用できない場合がありますが、それは何ですか?ディスク容量は安いです。このコードは、より少ないテーブルを持つことによって、より簡単になり、より速く実行されます。

2

多くの小売データベースは、同じテーブル内の異なる行としての各取引タイプ(「Harry Potterの販売」、「Harry Potterのレンタル」)をモデル化しています。したがって、 "TransactionType"を持つことになり、Customer-> Transaction-> LineItem(トランザクションのインスタンス) - > TransactionTypeを持つことができます。

関連する問題