【发布时间】:2021-03-25 03:25:24
【问题描述】:
我是 SQL 新手,在 MySQL 中创建表时遇到以下错误:
我有一个 Author 表,它与 Book 表具有 M-N 关系,其中一位作者可以创作多本书,而一本书可以由许多作者创作。
因此,我需要创建一个名为 BookAuthor 的联结表,它实际上可以显示作者创作的书籍,或者更确切地说是每本书的作者。
我不能让名字和姓氏唯一,因为很多人可以共享一个名字。
我想知道如何在考虑到这一点的情况下强制执行外键?
我的 Book 代码如下:
create table book (
isbn varchar(20) not null,
'
'
'
primary key(isbn),
);
作者:
create table author (
first_name varchar(20) not null,
last_name varchar(20) not null,
primary key(last_name, first_name)
);
对于引发错误的 BookAuthor:
create table book_author (
isbn varchar(20) not null,
first_name varchar(20) not null,
last_name varchar(20) not null,
primary key(isbn, first_name, last_name),
foreign key(first_name, last_name) references author(first_name, last_name),
foreign key(isbn) references book(isbn)
);
【问题讨论】:
-
旁注:名字和姓氏可能不是好键。在现实世界中,同名的作者可能不止一位。
-
我同意你的看法。汤姆在下面提到了这一点,我会考虑到这一点。
标签: mysql