0

我的数据库有点生疏,但也许你可以帮忙。我想创建一个表,其中包含在 DVD 和蓝光上购买的电影。如您所知,有些 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

您的层次结构以集合开始,该集合代表属于用户的所有项目。一个项目可以是一部独立的电影,也可以是一套盒装,它本身包含几部电影。我认为“格式”字段应该属于电影而不是盒子(您可能在同一个盒子里有一张 dvd 和一张蓝光)。

关于“版本”字段似乎有轻微的冗余,但我认为这并不重要。如果你可以解决你有一个外键 - _*id - 在引用电影或盒子的集合表中的事实,那么结构是可以的,但我认为最好将部电影表示为盒装,即使盒子里只有一部电影。那么你的结构将是

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 回答