
第一范式(1NF): 数据表中的每一列(每个字段)必须是不可拆分的最小单位,即确保每一列的原子性;
例如: userInfo: 山东省烟台市131777368781 userAds: 山东省烟台市userTel: 131777368781
第二范式(2NF): 满足1NF后,表中的所有列都必须依赖于主键,并且任何列都不能与主键相关,也就是说,表仅描述了一件事情;
例如: 订单表仅描述与订单相关的信息,因此所有字段都必须与订单ID相关
产品表仅描述与产品相关的信息,因此所有字段都必须与产品ID相关;
因此,订单信息和产品信息不能同时出现在一个表中;如下图所示(1个表分为2个表):
第三范式(3NF): 必须首先满足第二范式(2NF). 要求: 表中的每一列仅与主键直接相关,而不是间接的(表中的每一列只能取决于主键);
例如,订单表中需要与客户相关的信息. 分离客户表单后,在订单表单中仅需要一个用户ID(外键),并且不允许其他客户信息. 因为其他客户信息与用户ID直接相关,而不与订单ID直接相关.
第三范式(3NF)要求表不包含其他表中已经包含的非主键信息. 例如,有一个部门信息表,其中每个部门都有诸如部门号(dept_id),部门名称和部门资料之类的信息. 然后,在员工信息表中列出部门编号之后,不再将与部门相关的信息(例如部门名称和部门资料)添加到员工信息表中. 如果没有部门信息表,则应根据第三范式(3NF)进行构造,否则会有很多数据冗余. 简而言之,第三个范式是该属性不依赖于其他非主要属性. 这个解释是从这里转移的
[如何更好地区分这三种范式]
第一个范式和第二个范式是是否有两个表. 第二种范式表示一个表包含许多不同的实体属性,因此必须将其划分为多个表,而第三种范式要求将其划分为多个表. 如果有多个表,则一个表只能具有id(主键),并且不能具有其他任何信息(其他信息始终在具有主键的其他表中查询).
摘要:
第一个范式: 每个表都有一个列,并且该列是不可拆分的最小单位(重点在于该列的原子性,即该列不能划分为其他列)
![]()
第二个范例: 一个表仅描述一件事(非主键列完全取决于主键还是取决于部分主键)
范例3: 使用外键进行表关联(非主键列直接取决于主键还是直接取决于非主键列)
【五个约束】
1.primary KEY: 设置主键约束;
2. 唯一: 设置唯一约束,不能有重复值;
3. DEFAULT默认值约束,高度DOUBLE(3,2)DEFAULT 1.2高度未输入,默认值为1,2
4. NOT NULL: 设置非空约束,此字段不能为空;
5. 外键: 设置外键约束.
[主键]
1. 注意主键吗?
默认情况下,主键不为空,并且默认键为唯一性约束. 只有主键可以设置自动增长. 自动增长必须是主键,并且主键不一定需要自动增长;
2. 如何设置主键?
在定义列时设置: ID INT 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;
首先,什么是E-R模型?
ER模型是实体连接模型. ER模型基于以下认识: 始终在现实世界中存储有意义的数据,而现实世界由一组实体和一组连接实体组成. ER模型可以成功描述存储在中的数据.
第二,为什么要设计E-R模型?
设计E-R模型可以更有效,更好地模拟现实世界.
三,E-R模型的基本要素
1)实体: 实体是E-R模型的基本对象,是现实世界中各种事物的抽象. 可以彼此区分并可以识别的任何东西都可以视为一个实体. 在一个单元中,常见类型的实体可以分为一个实体集,例如,学生李明,黄鹰等是实体. 为了便于描述,您可以定义一个实体集,例如学生,所有学生都是该集合的成员.

2)属性: 每个实体具有各种特征,称为实体的属性,例如学生的学生ID,姓名范式,年龄和其他属性. 实体的属性值是存储在中的主要数据. 可以唯一标识实体的属性或属性组称为实体关键字. 例如,一个实体有多个键. 您可以选择其中一个作为主键.
3)连接: 实体之间存在各种关系,例如领导者与员工之间的关系,并且实体之间的关系被抽象为连接.
E-R图的四个组成部分
矩形框: 代表实体,在矩形框中写下实体的名称
椭圆框: 表示实体或连接的属性
菱形框: 表示联系人,然后在框中输入联系人姓名
连接: 实体与属性之间;实体与连接之间;连接和属性通过一条直线连接(对于连接,在两个实体的连接方向上写1;对于一对多,对于关系,在一个上写1 ;另一侧是N;对于多对多关系,请在两个实体的连接方向上写下N和M. )
五,将E-R模型转换为关系模型
1. 实体到关系
将实体集转换为关系非常简单,只需将实体的属性用作关系的列(实体的所有属性);
2. 从关系到关系的转换
1)联系人要求一个实体的主键是另一实体的属性. 反映在映射中,一个关系的主键用作另一关系的普通列,并且连接本身的属性也应以列的形式植入. 对于的关系,主从关系可以逆转而不会丢失信息
您可以将角色编号用作用户关系中的普通列,反之亦然!
2)一对多关系. 一侧需要为主表,而另一侧应该为从表. 连接的所有属性都是辅助表的列,因此信息不会丢失.
学生和班级: 是从属表,班级信息是主表

3)一对多. 无论连接添加到哪一方,都会导致信息丢失.
例如,学生和课程选择. 您可以使用学生ID,课程ID和关系属性---学分作为新的关系列
六. 例子
E-R图表示某个工厂的物料管理的概念模型
实体包括:
仓库: 仓库编号,区域,电话号码;
零件: 零件编号,名称,规格,单价,描述;
供应商: 供应商编号,名称,地址,电话号码范式,帐号;
项目: 项目编号,预算,开始日期;
员工: 员工编号,姓名,年龄,职务;
实体之间的联系
仓库------零件
1. 一个仓库可以存储多个零件,一个零件可以存储在多个仓库中. 仓库和零件多对多.
2. 使用库存表示仓库中某个零件的数量
仓库------员工
1. 一个仓库有多名员工,一个雇员只能在一个仓库中工作. 仓库和员工之间是一对多的关系
2. 领导力与员工之间的领导力之间存在关系. 因为仓库必须有一个负责人,所以领导与领导之间存在联系.
E-R图如下
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-240508-1.html
而今迈步从头越