数据库设计的三大范式
数据库设计的三大范式
第一范式(1NF)用来确保每列的原子性,要求每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元)。
第二范式(2NF)在第一范式的基础上更进一层,要求表中的每列都和主键相关,即要求实体的唯一性。如果一个表满足第一范式,并且除了主键以外的其他列全部都依赖于该主键,那么该表满足第二范式。
第三范式(3NF)在第二范式的基础上更进一层,第三范式是确保每列都和主键列直接相关,而不是间接相关,即限制列的冗余性。如果一个关系满足第二范式,并且除了主键以外的其他列都依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式。
数据库的三范式可以不遵守,但是一定要有足够的理由
数据库的 er图和eer图
er图:逻辑模型
实体:一般认为,客观上可以相互区分的事物就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系,使用矩形表示。
属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。对于主属性名,则在其名称下划一下划线使用椭圆形来表示。
联系:也称关系,信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系,使用菱形表示。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
er图实例:
eer:物理模型
主键和主键对应的话显示实线。
主键和非主键对应的话为虚线。
两个小竖线表示对应关系为1.
这里网上找了个图来表示一下
eer图实例:
数据库中表的对应关系
3.表的对应关系
1对1的表设计
不需要中间表,一张表的主键存在与另一个表当中,另一张表的主键作为外键
1对多的表设计
不需要中间表,一张表的主键存在与另一个表当中,另一张表的主键不需要作为外键
多对多的表设计
需要中间表,中间表需要存两张表的主键
数据库的设计原则
(1)把具有同一个主题的数据存储在一个数据表中,“一表一用”。
(2)尽量消除冗余,提高访问数据库的速度。
(3)一般要求数据库设计达到第三范式,多对多,最大限度消除了数据冗余、修改异常、插入异常、删除异常,基本满足关系规范化的要求。
(4)关系数据库中,各个数据表之间关系只能为一对一和一对多的关系。对于多对多的关系必须转换为一对多的关系来处理。
(5)设计数据表结构时,应考虑表结构的动态适应性。
数据库设计的主要步骤:
1、需求分析:了解用户的数据需求、处理需求、安全性及完整性要求;
2、概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;
3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;
4、物理结构设计:设计数据的存储结构和存取方法,如索引的设计;
5、系统实施:组织数据入库、编制应用程序、试运行;
6、运行维护:系统投入运行,长期的维护工作。