MySQL如何实现三表外键的添加(mysql三表添加外键)
MySQL如何实现三表外键的添加
在数据库设计中,外键是十分重要的。它们用于维持表与表之间的关系,保证数据的完整性和一致性。外键分为单表外键和多表外键,其中多表外键指的是跨三个或更多表的外键。MySQL的外键支持非常强大,可以很方便地实现多表外键的添加。接下来将介绍如何在MySQL中添加三表外键。
1. 创建表格
我们需要创建三个表格,表格之间需要有关联性。以下是三个表格的示例:
**表格1:persons**
CREATE TABLE persons (
id INT PRIMARY KEY, name VARCHAR(50),
age INT);
**表格2:books**
CREATE TABLE books (
id INT PRIMARY KEY, title VARCHAR(50),
author_id INT, price INT,
FOREIGN KEY (author_id) REFERENCES persons(id));
**表格3:book_detls**
CREATE TABLE book_detls (
book_id INT, publisher VARCHAR(50),
language VARCHAR(50), FOREIGN KEY (book_id) REFERENCES books(id)
);
2. 添加三表外键
在上述代码中,我们已经创建了三个表格并添加了两个外键。接下来我们需要添加第三个外键。为了展示三表外键,我们将在`book_detls`表格中添加一个`author_id`列,并将其作为外键引用`persons`表格中的`id`列。这时我们需要执行以下代码:
ALTER TABLE book_detls
ADD COLUMN author_id INT,ADD CONSTRNT fk_author_id
FOREIGN KEY (author_id) REFERENCES persons(id);
在上面的代码中,我们使用`ALTER TABLE`语句来修改`book_detls`表格。我们添加了一个`author_id`列。我们添加了一个外键约束`fk_author_id`,它指向`persons`表格中的`id`列。
3. 测试外键
现在我们已经创建了三个表格并添加了三个外键。为了测试外键是否正常工作,我们可以在`persons`表格中添加一个新的记录,然后在`books`表格和`book_detls`表格中分别添加一个相关的记录。我们可以使用以下代码:
INSERT INTO persons (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO books (id, title, author_id, price) VALUES (1, 'MySQL for Beginners', 1, 25);INSERT INTO book_detls (book_id, publisher, language, author_id) VALUES (1, 'Packt Publishing', 'English', 1);
在上述代码中,我们添加了一条记录到`persons`表格中,其中`id`为1,`name`为Alice,`age`为25。然后,我们添加了一条记录到`books`表格中,其中`id`为1,`title`为MySQL for Beginners,`author_id`为1,`price`为25。我们添加了一条记录到`book_detls`表格中,其中`book_id`为1,`publisher`为Packt Publishing,`language`为English,`author_id`为1。
4. 测试外键约束
我们可以尝试在`persons`表格中删除记录,来测试外键约束是否正常工作。如果外键约束正常,我们将无法删除`persons`表格中已经被`books`表格和`book_detls`表格引用的记录。
DELETE FROM persons WHERE id = 1;
在上述代码中,我们尝试删除`persons`表格中`id`为1的记录,但是MySQL会返回以下错误信息:
Error Code: 1451. Cannot delete or update a parent row: a foreign key constrnt fls (`test`.`books`, CONSTRNT `books_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `persons` (`id`))
这说明外键约束正常工作,我们无法删除`persons`表格中已经被`books`表格和`book_detls`表格引用的记录。
以上就是如何在MySQL中添加三表外键的过程。在多表关联的数据库设计中,外键的作用不可忽视。通过这个例子,读者可以学会如何在MySQL中添加多表外键,以及如何测试外键约束的正确性。