我正在将数据存储在MySQL数据库中。我希望每部电影都有它的流派。但是,一部电影可能有不止一个类型的价值(例如“动作”和“喜剧”)。存储此类信息的最佳方式是什么?创建2个表是一个好主意:一个是电影(列:“标题”,“年”等),另一个是流派?流派表格如何?
答案 0 :(得分:4)
实际上你需要三个表来创建多对多关系,一个用于电影,一个用于流派,一个用于关系。
例如:
Table film:
- id (PRIMARY)
- name
- year
- ....
Table genre:
- id (PRIMARY)
- name
Table film_genre:
- id_film (PRIMARY)
- id_genre (PRIMARY)
答案 1 :(得分:0)
逻辑类型是静态数据。在这种情况下,您可以在一个字段中存储多个值。为此,您只需要2张桌子。 电影(动态)和流派(静态)。
表格类型只有2个字段:
- name
- bit
因此,Genres表将具有预定义的静态数据,如:
Comedy - 1
Horror - 2
Action - 4
Porn - 8
Dram - 16
表格应如下所示:
- i_film
- name
- year
- genre
- ...
在字段Films
。流派中,您需要将类型存储为位掩码。
例如:
genre = 4意味着这部电影是动作
genre = 5 - 类型是Action和Comdey
genre = 7 - 类型是动作,恐怖和喜剧
genre = 9 - 流派是色情和喜剧
等
要按流派获取电影,您可以轻松:
SELECT * FROM Films WHERE (genre & 8) > 0 - all Porn films
SELECT * FROM Films WHERE (genre & 1) > 0 - all Comdey films