第二范式要求确保表中每列与主键相关,    

作者: www.9159.com  发布:2019-11-21

1   概述

  分析:

       一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。

          数据库设计应遵循三大范式分别为:

      本文将基于三大范式原则,结合具体的实例做简要分析,难度系数:基础。

          第一范式:确保表中每列的原子性(不可拆分);

2   第一范式

          第二范式:确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系(完全依赖);

 2.1 例子引入

          第三范式:非主键列之间没有传递函数依赖关系(消除传递依赖);

     根据如下场景设计出两种数据表,请分析两种数据表的合理性。

   详述:

1 问题:需求描述:数据库系统中需要一个实体表,该表用来存储用户信息,其中“地址”这个属性,要求查询到省份、城市和详细地址。
2 
3 具体例子: 
4 姓名:张红欣;  性别:男; 年龄:26岁; 联系电话:0378-23459876;省份:河南省;城市:开封;  详细地址:朝阳区新华路23号;
5 姓名:王艳;    性别:女; 年龄:25岁; 联系电话:021-2348768;  省份:贵州省;城市:贵阳市;详细地址:南明区南明区狮峰路6号;
6 姓名:汪梅;    性别:女; 年龄:21岁; 联系电话:0571-3876450; 省份:浙江省;城市:杭州市;详细地址:滨江区滨康路352号;               

         第一范式

第一种表设计

       需求描述:数据库系统中需要一个实体表,该表用来存储用户信息,其中“地址”这个属性,要求查询到省份、城市和详细地址。

www.9159.com 1

       例子:信息如下:

 第二种表设计

               姓名:张红欣;性别:男;  年龄:26岁;年龄:26岁;   联系电话:0378-23459876;    省份:河南省; 城市:开封; 详细地址:朝阳区新华路23号;

www.9159.com 2

               姓名:王艳;性别:女;年龄:25;联系电话:021-2348768;省份:贵州省;城市:贵阳市;详细地址:南明区南明区狮峰路6号;

 2.2  分析

               姓名:汪梅;性别:女;年龄:21;联系电话:0571-3876450;省份:浙江省;城市:杭州市;详细地址:滨江区滨康路352号;                

第一种表设计不满足第一范式,为什么不满足第一范式?因为region列不具有原子性,能拆分成省份、市和具体地址;

               针对以上需求,下面分别设计两种类型表格:

3   第二范式

        第一种表设计:不满足第一范式

3.1 例子引入

         tb_userInfo

     根据如下场景设计出两种数据表,请分析两种数据表的合理性。

       www.9159.com 3

1  需求描述:设计一个订单信息表,订单有多种商品,将订单编号和商品编号作为联合主键。

          分析:为什么不满足第一范式?因为region列不具有原子性,能拆分成省份、市和具体地址。

第一种表设计

       第二种表设计:满足第一范式

www.9159.com 4

         tb_userInfo

第二种表设计

      www.9159.com 5

www.9159.com 6

         第二范式

 3.2 分析

        需求描述:设计一个订单信息表,订单有多种商品,将订单编号和商品编号作为联合主键。

 第一种表设计不满足第二范式 ,订单编号和商品编号作为联合主键,由于商品名称,单位,价格这几列只与商品编号有关,与订单编号无关,因此与主键(联合主键)无关,违反范式第二原则;

        第一种表设计:不满足第二范式

第二种表设计满足第二范式,把第一种设计表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中。

        www.9159.com 7

4    第三范式

           分析:订单编号和商品编号作为联合主键,由于商品名称,单位,价格这几列只与商品编号有关,与订单

4.1  例子引入

                   编号无关,因此与主键(联合主键)无关,违反范式第二原则。

根据如下场景设计出两种数据表,请分析两种数据表的合理性。

        第二种表设计:满足第二范式

1 需要在数据库中存储如下信息:
2    学生编号;学生卡号;用户ID号;操作员级别;操作日期;操作时间;

        www.9159.com 8

第一种表设计

           分析:把第一种设计表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中。

www.9159.com 9

          第三范式

第二种表设计

       www.9159.com 10

www.9159.com 11

          分析:在表中,一个UserID能确定一个UserLevel。这样,UserID依赖于StudentNo和CardNo,而UserLevel又依

www.9159.com 12

                  赖于UserID,这就导致了传递依赖,3NF就是消除这种依赖。

4.2 分析

       将以上表格拆分成如下表格,以满足第三范式:

第一种表设计不满足第三范式,在表中,一个UserID能确定一个UserLevel。这样,UserID依赖于StudentNo和CardNo,而UserLevel又依赖于UserID,这就导致了传递依赖,3NF就是消除这种依赖。

      www.9159.com 13

第二种表设计满足第三范式,将第一种表格拆分成成两个表格。

www.9159.com,      www.9159.com 14

5   参考文献

     

【01】

       注释,以上内容参考博客网址:

【02】          

               

6   版权

                

 

 

  • 感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。
  • 博主网址:
  • 极少部分文章利用读书、参考、引用、抄袭、复制和粘贴等多种方式整合而成的,大部分为原创。
  • 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:2016177728@qq.com。
  • 可以转载该博客,但必须著名博客来源。

本文由9159.com发布于www.9159.com,转载请注明出处:第二范式要求确保表中每列与主键相关,    

关键词: