首页 > 解决方案 > 仅引用其他 2 个表的表的原因?

问题描述

对于我的课程作业,我得到了一些乙烯基商店的示例(Postgres)SQL 代码。

数据库的一部分是一个album表,用于存储有关专辑的信息(标题、流派等)和一个artist表,用于存储有关专辑歌手的信息(名称、流派)。

您可以在下面看到我正在处理的代码:

create table album
(
    albumID varchar(8) primary key,
    album_title varchar(50) not null,
    album_genre varchar(20) not null,
    album_label varchar(25) not null,
    album_catalogue_no varchar(15) not null,
    album_release_date varchar(4) not null,
    album_type varchar(10) not null
);

create table artist
(
    artistID varchar(8) primary key,
    artist_name varchar(40) not null,
    artist_genre varchar(20) not null
);

create table albumartist
(
    primary key (albumID, artistID),
    albumID varchar(8) references album(albumID),
    artistID varchar(8) references artist(artistID)
);

我正在努力理解,为什么albumartist存在?

artistID放在album桌子上不是更容易吗?

(在有人说之前,我现在无法联系我的讲师,这就是我在这里询问的原因)

标签: sqlpostgresql

解决方案


为了扩展该评论​​,该表albumartist是一个关联实体artist,这意味着它充当了和album表之间的多对多桥梁。通过添加这个联结表,它允许一个专辑拥有多个艺术家,一个艺术家拥有多个专辑。

查看您对albumartist表的定义,我倾向于将其更改为此,因为在该表中设置一行null值是没有意义的:

create table albumartist
(
    primary key (albumID, artistID),
    albumID varchar(8) not null references album(albumID),
    artistID varchar(8) not null references artist(artistID)
);

推荐阅读