存储表中每一行的字符串值列表是一种不好的做法,违反了正常形式.我该怎么办?



我正在做一个爱好项目,创建我自己的电影数据库,其中包含评级、流派、发行日期以及哪些演员与哪些电影相关联(将来从演员搜索中分离电影)。

我有一个包含具有一些属性的电影的表格,其中目前的一个属性应该是该电影中包含的演员。我知道我无法在表中每一行(电影)的单元格中存储字符串列表(演员姓名)。但是,这里的最佳实践是什么?使用MovieActor创建另一个表并链接每个表连接到哪些电影?如果演员连接到更多电影怎么办?

我在自己的本地主机数据库中运行Microsoft SQL Server Management Studio,并且刚刚设置了Movie表,我发现我可能会遇到此问题。

我希望得到一个包含电影的表格,将来能够搜索电影,找到它们的属性并找出哪些演员与该电影有关。还可以根据我选择的演员过滤电影。

你拥有的是一个many-to-many relationship。在构建关系数据库时,这将由电影表、演员表组成。然后是一个"联结"或"联接"表,其中包含电影和演员的外键。然后,您可以使用此"交汇点"表进行联接,以获取特定电影中的所有演员,反之亦然,获取特定演员参与的所有电影等。

示例图:

Table Movie                  Table ActorMovie            Table Actor
MovieId | MovieName          MovieId | ActorId           ActorId | ActorName
1         jaws               1         1                 1         Guy1
2         star wars          1         2                 2         Guy2
2         1

正如你所建议的,通常的做法是有一个中间MovieActors表,它链接哪些电影有哪些演员。

喜欢这个:

Movie   Actor
1       2
1       3
1       4
2       2
2       5

您将通过外键 (FK) 将 ID 与其各自的表链接。

相关内容

最新更新