gpt4 book ai didi

MySQL 架构设计 : one table with type column VS multiple tables

转载 作者:行者123 更新时间:2023-11-29 01:35:13 25 4
gpt4 key购买 nike

我正在制作一个关于电影的网站,我想在电影和 Actor (导演、编剧和 Actor )之间建立关系,我有两种实现方式,第一种是创建一个表每个 Actor :

CREATE TABLE director(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));  
CREATE TABLE writer(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE actor(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));

并在每个表和电影表之间建立多对多关系。
第二种可能性是为 Actor 创建一个表,其中包含一个类型列,可以引用导演、作家或 Actor ,并在该表和电影表之间建立多对多关系。

CREATE TABLE cast(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), type varchar(10));

注意:对于 Actor ,自动生成的表格会多出一些列:character_name, role...
那么哪种可能性更适合这种情况?

最佳答案

我会选择第二种方法。它甚至对应于标准的 SQL 规则。

如果您的类型转换类型(导演、编剧等...)也有一些额外的属性(列),您可以进行一些修改。在这种情况下,建议将它们作为主表的子表。

在您的情况下,主表将被“转换”。它会有 ID 和其他列。将创建其他表并将对应于不同的类型转换,例如表:“导演”,“作家”,...然后在每个子表之间与主“类型转换”建立 1-1 关系。该关系在子表上是强制性的(意味着例如“导演”在创建时必须与“ Actor ”有关系)。在关系意义上,“导演”的外键也是它的主键,它暗示“ Actor ”的主键。

推荐使用这种方法,因为您不仅可以向不同的 Actor 添加额外的列,还可以添加其他关系,以备日后扩展数据库时使用。您还可以添加“类型转换”的其他子表,而无需更改与“电影”表相关的任何结构。

关于MySQL 架构设计 : one table with type column VS multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51686019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com