美文网首页
8-字段约束[mysql数据库]

8-字段约束[mysql数据库]

作者: 乱弹琴给 | 来源:发表于2020-03-12 21:44 被阅读0次

    数据库的范式

    1,构造数据库必须遵循一定的规则,这种规则就是范式.

    2,目前关系数据库有6种范式,一般情况下,只满足第三范式即可.

    第一范式:原子性

    1,第一范式是数据库的基本要求,不满足这一点就不是关系数据库.

    2,数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性.

    image.png

    第二范式:唯一性

    1,数据表中的每条记录必须是唯一的.为了实现区分,通常要为表加上一个列用来存储唯一标识,这个唯一属性列被称作主键列

    image.png

    第三范式:关联性 (满足第三范式意味着同时满足了第一和第二范式)

    1,每列都与主键有直接关系,不存在传递依赖.

    image.png

    2,依照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联.

    3,第三范式很重要.

    image.png

    字段约束

    image.png

    不推荐使用外键约束.

    主键约束

    1,主键约束要求字段的值再全表必须唯一,而且不能为NULL值

    2,建议主键一定要使用数字类型,因为数字的检索速度会非常快.

    3,如果主键是数字类型,还可以设置自动增长

    CREATE TABLE t_teacher(

    id INT PRIMARY KEY AUTO_INCREMENT,
    
    ......
    

    );

    非空约束

    1,非空约束要求字段的值不能为NULL值

    2,NULL值是没有值,而不是""空字符串

    CREATE TABLE t_teacher(

    id INT PRIMARY KEY AUTO_INCREMENT,
    
    name VARCHAR(200) NOT NULL,
    
    married BOOLEAN NOT NULL DEFAULT FALSE
    

    );

    唯一约束

    1,唯一约束要求字段值如果不为NULL,那么再全表必须唯一

    CREATE TABLE t_teacher(

    id INT PRIMARY KEY AUTO_INCREMENT,
    
    ......
    
    tel CHAR(11) NOT NULL UNIQUE
    

    );

    //强烈建议创建表时给表名前加 t_ 和其他虚拟表区分

    外键约束

    1,外键约束用来保证关联数据的逻辑关系

    image.png

    如果删掉部门表中的10部门,员工表中的陈浩就不符合逻辑了.

    为了确保数据表中的关联数据的逻辑关系,引入外键约束.

    员工表时依赖部门表,所以

    外键约束的定义是写在子表上的

    CREATE TABLE t_dept(

    deptno INT UNSIGNED PRIMARY KEY,
    
    dname VARCHAR(20) NOT NULL UNIQUE,
    
    tel CHAR(4) UNIQUE
    

    );

    CREATE TABLE t_emp(

    empno INT UNSIGNED PRIMARY KEY,
    
    ename VARCHAR(20) NOT NULL,
    
    sex ENUM("男","女") NOT NULL,
    
    deptno INT UNSIGNED,
    
    hiredate DATE NOT NULL,
    
    FOREIGN KEY (deptno) REFERENCES t_dept(deptno)
    

    );

    外键约束的闭环问题

    1,如果形成外键闭环,我们将无法删除任何一张表的记录

    image.png

    相关文章

      网友评论

          本文标题:8-字段约束[mysql数据库]

          本文链接:https://www.haomeiwen.com/subject/khlgjhtx.html