实体:表; 属性:表中的数据(字段); 关系:表与表之间的关系;mysql
数据库设计三大范式(重点):sql
第一范式(1NF):数据表中的每一列(每一个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;数据库
例如:userInfo:山东省烟台市 131777368781 userAds:山东0省烟台市 userTel:131777368781数据库设计
第二范式(2NF):知足1NF后,要求表中的全部列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;设计
例如:订单表只描述订单相关的信息,因此全部字段都必须与订单id相关 产品表只描述产品相关的信息,因此全部字段都必须与产品id相 关;所以不能在一张表中同时出现订单信息与产品信息;以下图所示:blog
第三范式(3NF):必须先知足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);字符串
例如:订单表中须要有客户相关信息,在分离出客户表以后,订单表中只须要有一个用户id便可,而不能有其余的客户信息。由于其余的客户信息直接关联于用户id,而不是直接与订单id直接相关。同步
【如何更好的区分三大范式】产品
第 一范式和第二范式在于有没有分出两张表,第二范式是说一张表中包含了所种不一样的实体属性,那么要必须分红多张表, 第三范式是要求已经分红了多张表,那么一张表中只能有另外一张表中的id(主键),而不能有其余的任何信息(其余的信息一概用主键在另外一表查询)。数据类型
【数据库五大约束】
1.primary KEY:设置主键约束;
2.UNIQUE:设置惟一性约束,不能有重复值;
3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
4.NOT NULL:设置非空约束,该字段不能为空;
5.FOREIGN key :设置外键约束。
【主键】
1.主键的注意事项?
主键默认非空,默认惟一性约束,只有主键才能设置自动增加,自动增加必定是主键,主键不必定自动增加;
2.设置主键的方式?
在定义列时设置:ID INT PRIMARY KEY
在列定义完以后设置:primary KEY(id)
【外键】
1.设置外键的注意事项:
只有INNODB的数据库引擎支持外键,修改my.ini文件设置default-storage-engine=INNODB 外键必须与参照列的数据类型必须相同(数值型要求长度和无符号都相同,字符串要求类型相同,长度能够不一样)。
2设置外键的语法:
CONSTRAINT 外键名 FOREIGN KEY (外键字段)REFERENCES 参照表 (参照字段) ON DELETE SET NULL ON UPDATE CASCADE 设置参照完整性
3.外键约束的参照操做?
参照表的完整性操做:当对参照表的参照字段进行删除或更新时,外键表中的外键如何应对;
参照操做可选值:
RESTRICT拒绝参照表删除或更新参照字段;
RESTRICT和NO ACTION相同,但这个指令只在mysql生效;
CASCADE删除或更新参照表的参照字段时,外键表的记录同步删除更新;
SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL;