目录
?? 一,什么是范式
范式简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式
?? 二,三大范式的理解
1,第一范式(确保每列保持原子性)
例如:某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成个数据库表的字段
2,第二范式(保证每列都和主键相关)
例如:对于一张订单表,应该只包括订单信息,若第一张有数量信息,不符合第二范式,对于订单数量应该单独为一张表
3,第三范式(保证每列和主键直接相关,不能间接相关)
例如:在设计个订单数据表的时候,可以将客户编号作为个外键和订单表建立相应的关系
4,表的关系
(1)一对一
一对一就是个学生对应个学号
(2)一对多
一对多是 个班级包含多个学生(用两张表表示)
(3)多对多
张表中的条数据可以对应到另张表的多条数据
??三,表的约束有哪些
??1,约束类型
表约束也是为了规范程序员正确使用表的,但表约束是预
先设置的,设置之后就对所有插和修改立即生效
??2,表的约束
(1)非空约束:NOT NULL
创建的字段默认是可以为空的
而添加了非空约束之后,设置的字段就不能为空了。
语法
(2)主键约束:PRIMARY KEY
主键的特征:
1.主键可以由多个字段或单个字段组成
2. 主键不能为空且唯
3. 个表中只能有个主键
独立主键语法:
联合主键语法:
示例:
> create table test5(
id int,
name varchar(250),
primary key(id,name)
);
(3)唯一约束:UNIQUE
唯约束就是对应字段的值是唯的,不能重复,但一个表可以有多个唯一索引
语法:
唯一约束和主键约束区别(面试常考)
(4)外键约束:FOREIGN KEY
外键用于关联其他表的主键或唯键
外键可以插入NULL,多个NULL,若外键指定了值,那这个值一定要有效,有效是这个值在主表存在了
语法:
示例:
创建学生表student,个学生对应个班级,个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id
-- 重新设置学?表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(250) DEFAULT 'unkown',
qq_mail VARCHAR(250),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);
(5)默认值约束: DEFAULT
指定id列为主键
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);
对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大
值+1