0

私は自分のデータベースで少し錆びていますが、多分あなたは助けることができます。DVDやBlu-rayなどで購入した映画を含むテーブルを作成したいと思います。ご存知のように、複数の映画が入ったDVDボックスがあり、ボックス内の各映画は、ディレクターズカットなどの特別版にすることができます。コレクション/ライブラリには、単一の映画とボックスの両方を含めることができます。

これをどのように構成するのですか?適切な表記法を覚えていませんが、ここに行きます:

movies(_id, title, year)
boxes(_id, title, format)
movies_in_box(_*movie_id, _*box_id, edition)
collections(_*user_id, _*id [references either movies or boxes], _type [enum for movie or box], edition, format)

_ = primary key, * = foreign key

これは何か意味がありますか?

4

1 に答える 1

1

階層は、ユーザーに属するすべてのアイテムを表すコレクションから始まります。アイテムは、スタンドアロンの映画またはボックス セットのいずれかであり、それ自体が複数の映画で構成されています。「フォーマット」フィールドは、ボックスではなく映画に属すべきだと思います (同じボックスに 1 枚の DVD と 1 枚のブルーレイがある場合があります)。

'edition' フィールドに関しては少し重複しているように見えますが、それは重要ではないと思います。フィルムまたはボックスのいずれかを参照するコレクション テーブルに外部キー - _*id - があるという事実を回避できれば、構造は問題ありませんが、すべてのフィルムをボックスにフィルムが 1 つしか入っていない場合でも、ボックス セットは含まれません。次に、あなたの構造は

USERS
user_id (PK)
username

MOVIES
movie_id (PK)
movie_name
year
format

BOXES
box_id (PK)
box_name
edition (I assume that this includes the year) 

BOXCONTENTS
box_id (PK, FK)
movie_id (PK, FK)

COLLECTIONS
user_id (PK, FK)
box_id (PK, FK)
于 2012-10-28T06:15:07.240 に答える