数据库设计:按类型组织项目(电影)

Sol*_*orp 1 database database-design normalization

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

\n\n
    \n
  • 全部
  • \n
  • 恐怖
  • \n
  • 行动
  • \n
  • 纪录片
  • \n
  • 科幻
  • \n
  • ...\xc2\xa0\xc2\xa0
  • \n
\n\n

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

\n\n

第一种方式

\n\n

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

\n\n

第二种方式

\n\n

将所有电影放在一个表中,将类型放在另一个表中,并根据类型在两者之间建立外键关系

\n\n

或者还有其他更好的方法来做到这一点?

\n\n

提前致谢

\n

use*_*147 5

我认为你指的是类型,而不是性别。:) 我不认为电影有性别。就我个人而言,我会创建 3 个表。电影(电影)、类型以及包含两者 ID 的查找表。这将允许一部电影出现在多个搜索中 - 这可能是您想要的。例如,一部关于披头士乐队的电影可能同时属于音乐和纪录片类型,这样,如果用户搜索其中任何一个,它都会显示出来。

电影(表1)

PeliculaId
other cols (name, etc)
Run Code Online (Sandbox Code Playgroud)

类型(表2)

GenreId
GenreDescription
Run Code Online (Sandbox Code Playgroud)

PelGenre(表3)

PeliculaId FK
GenreId FK
Run Code Online (Sandbox Code Playgroud)

电影

------------
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
Run Code Online (Sandbox Code Playgroud)

类型

GenreId     Descript
----------------------------------
1           Action
2           Crime
3           Drama
4           ScienceFiction
5           Documentary
6           Music
Run Code Online (Sandbox Code Playgroud)

佩尔流派

PeliculaId      GenreId
------------------------
1               5
1               6
2               2
2               3
3               4
3               1
Run Code Online (Sandbox Code Playgroud)