1

我将有关电影的信息存储在 MySQL 数据库中。我希望每部电影都有自己的类型。然而,一部电影可以有多个类型的值(例如“动作”和“喜剧”)。存储此类信息的最佳方式是什么?创建 2 个表是否是个好主意:一个包含电影(列:“标题”、“年份”等),另一个包含流派?流派表会是什么样子?

4

2 回答 2

4

实际上,您需要三张表来创建多对多关系,一张用于电影,一张用于流派,一张用于关系。

例如:

Table film:
- id (PRIMARY)
- name
- year
- ....

Table genre:
- id (PRIMARY)
- name

Table film_genre:
- id_film (PRIMARY)
- id_genre (PRIMARY)
于 2013-07-03T13:07:01.863 回答
0

从逻辑上讲,流派是静态数据。在这种情况下,您可以在一个字段中存储多个值。为此,您只需要 2 张桌子。电影(动态)和流派(静态)。

表类型将只有 2 个字段:

- name
- bit

因此流派表将具有预定义的静态数据,例如:

Comedy - 1
Horror - 2
Action - 4
Porn - 8
Dram - 16

表膜应如下所示:

- i_film
- name
- year
- genre
- ...

在字段Films.genre 中,您需要将流派存储为位掩码。

例如:

类型 = 4 表示这部电影是动作片

流派 = 5 - 流派是动作和喜剧

流派 = 7 - 流派是动作、恐怖和喜剧

流派 = 9 - 流派是色情和喜剧

ETC

要按类型获取电影,您可以轻松地:

  SELECT * FROM Films WHERE (genre & 8) > 0  - all Porn films
  SELECT * FROM Films WHERE (genre & 1) > 0  - all Comdey films
于 2013-07-03T13:27:46.770 回答