【发布时间】:2018-08-04 13:19:48
【问题描述】:
我正在制作一个关于电影的网站,我想在电影和演员(导演、作家和演员)之间建立关系,我有两种可能实现这一点,第一种是创建一个表格每个演员:
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));
并在每个表和电影表之间建立多对多关系。
第二种可能性是为演员表创建一个类型列,该类型列可以引用导演、作家或演员,并在该表和电影表之间建立多对多关系..
CREATE TABLE cast(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), type varchar(10));
注意:对于演员,自动生成的表会有一些额外的列:character_name、role...
那么哪种可能性更适合这种情况呢?
【问题讨论】:
-
我会使用第二种方法,更容易管理,添加新类型和更少的表来搜索查找数据。
-
添加到@Clint 的评论。我还将创建一个类型表
cast_type并在转换表中使用cast_type_id列...搜索 int 比 varchar 快得多,特别是当转换表很大时。而且 int 数据类型使表数据和索引大小更小也使搜索更快...此外类型表不会变得那么大..