数据库三范式 骑猪看日落 2022-04-15 07:07 227阅读 0赞 关系型数据库设计是很重要的一门学科,设计的好坏与否,直接影响到后续业务性能。遵从数据库方式进行数据库设计,将极大程度上是的数据冗余变少,后续整个数据库的性能,维护与管理都将变得轻松。设计数据库结构有六种范式,而最常用的莫过于一二三范式。本文将主要描述这三种范式。 一、第一范式(1NF) 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解。 关系数据模型要求所有的关系模式必须满足第一范式。 非第一范式的例子 ![在这里插入图片描述][20181122215832297.png] 转换为第一范式 ![在这里插入图片描述][20181122215842516.png] 二、第二范式(2NF) 符合1NF,每一条记录存在惟一性约束,即实体的惟一性。 数据表里的所有属性(列)都要该表的主键有完全依赖关系。 如果有属性列只和主键的一部分(复合主键)有关的话,则应将其独立出来变成另一个数据表。 假定需要设计学生选课表,需要考虑以下信息: 学生有那些基本信息? 学生选了哪些课,成绩是什么? 每个课的学分是多少? 学生属于那个系,系的基本信息是什么? 不符合2NF示例 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70] 改进后的符合2NF示例 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 1] 三、第三范式(3NF) 满足1NF,2NF且非主键字段之间不能有依赖关系或者表上不存在由非主键可推导出属性列。 三范式示例: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 2] 改进后的三范式 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 3] [20181122215832297.png]: /images/20220415/2b7af3c8d7e34de6aa332e494295c69b.png [20181122215842516.png]: /images/20220415/3018d9302e194636be2513a5fc2796b2.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70]: /images/20220415/dc8583c8297542909e0a4725aea88a53.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 1]: /images/20220415/a7ddc0ac5dda4b5e8881ec6cf1aca2cc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 2]: /images/20220415/cf240cb2b56e49ff95b495dd4e81ef48.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvYmluc29uXzA2MTI_size_16_color_FFFFFF_t_70 3]: /images/20220415/8c2b5c4b490645b8a5a847d5583aa0bc.png
还没有评论,来说两句吧...