sqlserver数据类型和长度(SqlServer 数据库 三大 范式)
sqlserver数据类型和长度
SqlServer 数据库 三大 范式1 概述
一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。
本文将基于三大范式原则,结合具体的实例做简要分析,难度系数:基础。
2 第一范式
2.1 例子引入
根据如下场景设计出两种数据表,请分析两种数据表的合理性。
问题:需求描述:数据库系统中需要一个实体表,该表用来存储用户信息,其中“地址”这个属性,要求查询到省份、城市和详细地址。
2
3 具体例子:
4 姓名:张红欣; 性别:男; 年龄:26岁; 联系电话:0378-23459876;省份:河南省;城市:开封; 详细地址:朝阳区新华路23号;
5 姓名:王艳; 性别:女; 年龄:25岁; 联系电话:021-2348768; 省份:贵州省;城市:贵阳市;详细地址:南明区南明区狮峰路6号;
6 姓名:汪梅; 性别:女; 年龄:21岁; 联系电话:0571-3876450; 省份:浙江省;城市:杭州市;详细地址:滨江区滨康路352号;
第一种表设计
第二种表设计
2.2 分析
第一种表设计不满足第一范式,为什么不满足第一范式?因为region列不具有原子性,能拆分成省份、市和具体地址;
3 第二范式
3.1 例子引入
根据如下场景设计出两种数据表,请分析两种数据表的合理性。
需求描述:设计一个订单信息表,订单有多种商品,将订单编号和商品编号作为联合主键。
第一种表设计
第二种表设计
3.2 分析
第一种表设计不满足第二范式,订单编号和商品编号作为联合主键,由于商品名称,单位,价格这几列只与商品编号有关,与订单编号无关,因此与主键(联合主键)无关,违反范式第二原则;
第二种表设计满足第二范式,把第一种设计表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中。
4 第三范式
4.1 例子引入
根据如下场景设计出两种数据表,请分析两种数据表的合理性。
需要在数据库中存储如下信息:
学生编号;学生卡号;用户ID号;操作员级别;操作日期;操作时间;
第一种表设计
第二种表设计
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。可以转载该博客,但必须著名博客来源。
- sqlserver字符串截取填充(SQL Server实现split函数分割字符串功能及用法示例)
- sqlserver分表后如何查询(SQL Server中row_number分页查询的用法详解)
- python2.7连接sqlserver数据库(Python使用sqlalchemy模块连接数据库操作示例)
- sqlserver常用流控语句(SQL Server实现自动循环归档分区数据脚本详解)
- sqlserver查看数据表更新时间(SQL Server实现显示每个类别最新更新数据的方法)
- 2021-10-24 10:26:05
- sqlserver 怎么排序(SQLserver排序规则基本概念探索)
- 启动sqlserver代理服务失败(SQL Server代理服务无法启动怎么办)
- sqlserver常用的字符串函数(SqlServer 获取字符串中小写字母的sql语句)
- sqlserver 插入数据的触发器(SQL server 表数据改变触发发送邮件的方法)
- sqlserver常用函数(SQLServer 日期函数大全小结)
- sqlserver字段说明(详解SQL Server 中 JSON_MODIFY 的使用)
- sqlserver查询自定义时间数据(SQLServer查询某个时间段购买过商品的所有用户)
- sqlserver索引介绍(浅析SQL Server的聚焦使用索引和查询执行计划)
- sqlserver怎么查看数据库版本(Sql Server数据库各版本功能对比)
- sql server导入数据csv文件(大容量csv快速内导入sqlserver的解决方法推荐)
- 蓝天代表什么(蓝天代表什么生肖)
- 今天要吃什么(今天要吃什么菜)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
热门推荐
- js中Attribute和Property区别
- 如何估算项目的开发时间
- 香港免费云服务器(靠谱的香港云服务器共同点都有哪些)
- dedecms独立页面怎么加(dedecms调用当前栏目的子栏目的两种方法分享)
- 如何通过广域网访问ftp服务器(Serv-u 外网访问内网的FTP服务器实现方法)
- dedecms幻灯片代码(dedecms实现大图showphoto.htm输出图集内容简介方法)
- sql server 获取时间(SQL SERVER中常用日期函数的具体使用)
- thinkphp权限认证怎么用(ThinkPHP框架结合Ajax实现用户名校验功能示例)
- ASP.NET文件打包压缩下载
- sqlserver 存储过程参数类型(详解SQL Server表和索引存储结构)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9