0

ここの表では、1つのビデオをレンタルできますが、1つのレンタルIDまたは1つのレンタルレコードで複数のビデオをレンタルできるようにしたいと考えています。

ビデオ(videoID、videoName、ageClassification、genre)

レンタル(RentalID、videoID、customerID、dateHired、dateDueBack、price、overdue(Y / N))

ビデオIDを保持するビデオIDにコンマ区切りの値のようなものを使用しますか?

または、rented_videosという別のテーブルをレンタルテーブルにリンクさせて、レンタルごとに1つまたは複数のビデオをレンタルすることもできます。

または代替ソリューションですら。

私のリレーショナルスキーマはご容赦ください。私はデータベースの専門家ではありません。

4

2 に答える 2

1

絶対にcsvリストを使用しないでください。これにより、特定のビデオのすべてのレンタルを検索する場合に、見苦しいインデックスが作成されます。

これを処理する最も一般的でクリーンな方法は、videoIDとRentalIDの両方を指す外部キーを使用して中間テーブルを作成することです。これはおそらくあなたのために行く方法であるはずです。

于 2013-01-30T15:25:52.023 に答える
1

いつものように、正しい答えは1つではありませんが、間違った答えの中で、CSVリストはリストのかなり上位にあります。

まず、企業は「レンタル」をそれ自体で物として扱いますか、それとも各ビデオレンタルは別々のイベントですか?意見を述べるのに十分なビジネスについてはわかりませんが、ビジネスドメインには、価格と返品日が記載された単一のタイトルのレンタルを意味する「レンタル」があると想像しています(ビデオが異なればレンタルも異なるようです)期間-新しいリリースは2日、古い映画は1週間です。おそらく、どこかに「レンタルタイプ」のテーブルがあります)。1回のトランザクション(つまり、私がビデオ店に行く)には、1つ以上のレンタルが含まれ、各レンタルにはコストと期日がありました。また、特定のレンタルの組み合わせを利用した場合の割引の可能性を思い出しているようです。

これはすべて、次のことを示唆しています。

Video
-------
Video_ID
Rental_scheme_ID
Name
...

Rental_scheme
--------
Rental_scheme_id
Length_in_days
Cost

Rental
------
Video_id
transaction_id


Transaction
----------
Customer_id
Date
Undiscounted_price
Discount
NetPrice
...

これが非常に過剰に設計されていて、ビジネスが「いいえ、誰が何を借りたかを追跡したいだけです」と言った場合は、既存のスキーマを使用して、レンタルするすべての映画に新しい行を挿入します。

于 2013-01-30T15:39:22.137 に答える