参照完整性

– 参照完整性,指多表之间的设计,主要使用外键约束。
– 多表设计有:一对多,多对多,一对一。

– 1、一对多
– 客户和订单的,一个客户可以有多张订单,一张订单属于一个客户。

CREATE TABLE customers(
id int,
name VARCHAR(100),
address VARCHAR(255),
PRIMARY KEY(id) – 最后一行不能写逗号,否则报错。
);
CREATE TABLE orders(
order_num INT PRIMARY KEY,
price FLOAT(8,2),
status INT,
customer_id INT,
CONSTRAINT fk FOREIGN KEY(customer_id) REFERENCES customers(id)
);
– 外键一般放到数据量大的表中,以数据量小的为参靠
– CONSTRAINT 约束
– FOREIGN KEY 外键
– REFERENCES 以什么为参考
– 上面,创建一个外键约束,名字叫fk,参照的是customers表中的id。

在这里插入图片描述
子表的删除更新策略一共有4种:
1.1. CASCADE 级联策略。
主表的修改会被同步到子表中。
1.2. NO ACTION 无动作策略。
要删改主表,必须要先删改子表对应数据。
在这里插入图片描述

1.3 RSTRICT 主表约束策略。
此策略,对主表的约束跟NO ACTION一样。即删、更新主表前的主键,必须要先删、更新子表中对应的。
1.4 SET NO 置空策略。
使用此策略时,当主表主键删改,则子表中的外键 设置为NULL。
但如果子表的外键是主键,或者子表外键设置NOT NULL,则此时就相当于NO ACTION策略。
在这里插入图片描述

  1. 多对多
    老师和学生,多对多关系。一个老师可以对应多个学生,一个学生可以对应多个老师。
    CREATE TABLE teachers(
    id int,
    name varchar(100),
    salary float(8,2),
    PRIMARY KEY(id)
    );
    CREATE TABLE students(
    id int,
    name VARCHAR(100),
    grade varchar(100),
    PRIMARY KEY(id)
    );
    CREATE TABLE tch_stu(
    t_id INT,
    s_id INT,
    PRIMARY KEY(t_id,s_id),
    CONSTRAINT tch_fk FOREIGN KEY(t_id) REFERENCES teachers(id),
    CONSTRAINT stu_fk FOREIGN KEY(s_id) REFERENCES students(id)
    );

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 一对一
    在开发中,一对一,设计到一张表中。

猜你喜欢

转载自blog.csdn.net/weixin_44675370/article/details/89194447