假设我在MySQL 5.7上有两个表格
Film
---
ID
name
location
year
user_id
actors
Actor
---
ID
name
born
location
我希望能够将每个演员与电影进行关联,这样每个 film
条目都会有一个像 [5, 2, 12]
这样的 actors
数组。
这是一种方法,据我所知。这是适当的方式吗?正确的还是错误的?
在关系型数据库中,与其将一个id数组存储在一个字段中,你应该为每个id在一个单独的相关表中存储一条记录。
在这种情况下,你可以有一部电影有很多演员,而且这些演员也可能在其他不同的电影中工作,因此关系是多对多的。
为了建模这种关系,你实际上需要一个第三个表来保存相关演员和电影的ids。
就像这样:
ID
名称
位置
年份
用户ID
ID
名称
出生日期
位置
演员ID
电影ID
不要在表格中使用逗号分隔的值。而是在电影表中创建一个名为film_actors或其他名称的新表,如果需要演员信息表,则还需创建一个演员表。然后在电影演员表中为每个参演演员创建一个新条目。这样搜索较少的列和简单的整数比搜索一整行其他信息并解析逗号要容易得多。film_actors中的一些数据示例应如下所示:
film : 1, actor : 2 ,
film : 1, actor : 4,
film : 2, actor : 2
在csv列中搜索要比搜索所有电影中的电影= x和演员= y更加费力。