表格仅引用其他2个表格的原因?

时间:2019-04-22 22:43:34

标签: sql postgresql

对于我的课程,我得到了Vinyl商店的一些示例(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会更容易吗?

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

1 个答案:

答案 0 :(得分:2)

为了进一步说明,表albumartist是一个Associative Entity,这意味着它充当了artistalbum表之间的多对多桥梁。通过添加此结点表,它可以使一张专辑拥有一个以上的歌手,而一个歌手拥有一个以上的专辑。

看看您对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)
);