我是一个关于电影的网站,希望能够建立一种电影和演职人员(导演、编剧和演员)之间的关系。我有两种可能的实现方法,第一种是创建每个演员的表格:
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));
注意:对于演员,自动生成的表格将有一些额外的列:角色名称、角色... 那么,对于这种情况,哪种可能性更好呢?
cast_type
,并在演员表中使用cast_type_id
列...当演员表很大时,搜索整数比搜索varchar要快得多..此外,整数数据类型使表数据和索引大小更小,也使搜索更快...此外,类型表不会变得那么大.. - Raymond Nijland