文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SqlServer 数据库 三大范式

2024-04-02 19:55

关注

1 概述

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

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

2 第一范式

2.1 例子引入

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

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

第一种表设计

SqlServer 数据库 三大  范式

第二种表设计

SqlServer 数据库 三大  范式

2.2 分析

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

3 第二范式

3.1 例子引入

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

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

第一种表设计

SqlServer 数据库 三大  范式

第二种表设计

SqlServer 数据库 三大  范式

3.2 分析

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

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

4 第三范式

4.1 例子引入

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

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

第一种表设计

SqlServer 数据库 三大  范式

第二种表设计

SqlServer 数据库 三大  范式

SqlServer 数据库 三大  范式

4.2 分析

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

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

5 参考文献

【01】http://www.cnblogs.com/springside-example/archive/2011/10/06/2530207.html

【02】http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html#undefined

6 版权

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯