首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:按类型组织项目(电影)

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

Stack Overflow用户
提问于 2012-06-07 23:04:22
回答 4查看 2.5K关注 0票数 1

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

  • Sci-Fi

  • ...
  • All
  • 纪录片

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

First Way

按照类型对电影进行排序,并创建单独的表格,也就是说,一个表用于动作类型,一个用于纪录片,一个用于科幻和其他类型。使用这种方法,没有明确的方法可以加入表来生成所有电影的列表。

第二道

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

或者还有其他更好的方法来做这件事?

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-07 23:09:00

这不是你的第一条路:这不是一个关系数据库,因为你重复喜欢的信息。

第二种方式是比较合适的,如果你想成为关系型的。电影在一个表中,MovieType在另一个表。

“电影”表包含一个FK到MovieType,其中列出了该类型的名称。

票数 1
EN

Stack Overflow用户

发布于 2012-06-07 23:12:49

我想你指的是体裁,而不是性别。)我不认为鹈鹕有性别。就我个人而言,我会创建3张桌子。电影(Peliculas)、体裁和一个带有两者Ids的查找表。这将允许一部电影在多个搜索中出现--这可能是你想要的。例如,一部关于披头士乐队的电影可能有音乐和纪录片两种类型,如果用户搜索其中一种,就会以这种方式出现。

水蚤( Peliculas (Table1) )

代码语言:javascript
复制
PeliculaId
other cols (name, etc)

体裁(Table2)

代码语言:javascript
复制
GenreId
GenreDescription

PelGenre (Table3)

代码语言:javascript
复制
PeliculaId FK
GenreId FK

水蚤( Peliculas )

代码语言:javascript
复制
------------
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

体裁

代码语言:javascript
复制
GenreId     Descript
----------------------------------
1           Action
2           Crime
3           Drama
4           ScienceFiction
5           Documentary
6           Music

PelGenre

代码语言:javascript
复制
PeliculaId      GenreId
------------------------
1               5
1               6
2               2
2               3
3               4
3               1
票数 4
EN

Stack Overflow用户

发布于 2012-06-07 23:11:28

有两张桌子;一张是电影的,一张是类型的。

代码语言:javascript
复制
Movies {id, title, genre_id}
Genres {id, name}

按体裁查询:

代码语言:javascript
复制
SELECT * FROM Movies WHERE genre_id = ?

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

代码语言:javascript
复制
SELECT * FROM Movies
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10941051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档