1

我正在为一个项目制作一个基本的电影在线商店,我希望用户能够按类型选择电影,例如:

  • 全部
  • 恐怖
  • 行动
  • 纪录片
  • 科幻
  • ...  

将电影存储在数据库中以匹配此结构的最佳方法是什么。

第一种方式

按类型对电影进行排序并创建单独的表格,即动作类型的表格,纪录片的表格,科幻的表格等等。使用这种方法,将没有明确的方法来连接表格以生成所有电影的列表

第二种方式

将所有电影放在一个表中,将流派放在另一个表中,并根据流派建立2之间的外键关系

还是有另一种更好的方法来做到这一点?

提前致谢

4

4 回答 4

4

我认为你的意思是类型,而不是性别。:) 我不认为peliculas 有性别。就个人而言,我会创建 3 个表。电影 (Peliculas)、流派和带有两者 ID 的查找表。这将允许电影出现在多个搜索中 - 您可能想要。例如,关于甲壳虫乐队的电影可能同时属于音乐和纪录片类型,这样如果用户搜索其中任何一个,它就会显示出来。

Peliculas (表1)

PeliculaId
other cols (name, etc)

类型(表2)

GenreId
GenreDescription

PelGenre(表 3)

PeliculaId FK
GenreId FK

鹈鹕

------------
PeliculaId  Name                    Descript
------------------------------------------------------------------------------------------------
     1  The Beatles Anthology    Documentary series on The Beatles career  
     2  The Shawshank Redemption 2 good guys in jail become friends and get back at everyone
     3  Star Wars        Farm Boy saves Galaxy

类型

GenreId     Descript
----------------------------------
1           Action
2           Crime
3           Drama
4           ScienceFiction
5           Documentary
6           Music

体裁

PeliculaId      GenreId
------------------------
1               5
1               6
2               2
2               3
3               4
3               1
于 2012-06-07T23:12:49.620 回答
2

有两张桌子;一种用于电影,一种用于流派。

Movies {id, title, genre_id}
Genres {id, name}

按流派查询:

SELECT * FROM Movies WHERE genre_id = ?

要查询所有类型,只需从 WHERE 子句中删除genre_id 部分

SELECT * FROM Movies
于 2012-06-07T23:11:28.977 回答
1

类别表

name
id (unique)

电影表

id (unique, autoincremental)
other data

关系表

Cat_mov

movie_id (the id of the movie)
cat_id (the id of the categorie)
于 2012-06-07T23:11:20.493 回答
1

不是你的第一种方式:这不是一个关系数据库,因为你复制了类似的信息。

如果您希望建立关系,则第二种方式更合适。一个表中的电影 MovieType 在第二个表中。

Movies 表包含一个到 MovieType 的 FK,它列出了流派的名称。

于 2012-06-07T23:09:00.303 回答