我的数据库有点生疏,但也许你可以提供帮助。我想创建一个包含购买的电影的表格,例如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
这有什么意义吗?
答案 0 :(得分: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)