从第一范式到第二范式所做的操作是_数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式,如下表所示。
上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。2.第二范式(确保表中的每列都和主键相关)
第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。订单信息表
这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。
而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。
这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。3.第三范式(确保每列都和主键列直接相关,而不是间接相关)
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。
这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。
从第一范式到第二范式所做的操作是_数据库设计三大范式相关推荐
- 从第一范式到第二范式所做的操作是_给女同事讲解MySQL数据库范式与反范式,她直夸我“技术好”
1 第一范式 该范式是为了排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成:每个字段的值都只能是单一值.1971年埃德加·科德提出了第一范式.即表中所有字段都是不可再分的. 1.1 实 ...
- 数据库设计三大范式之第一范式不可违反
首先关于数据库三大范式是什么,我们不再多说,网上很多博客写的都很好,例如以下链接: https://blog.csdn.net/qq_26878363/article/details/81533273 ...
- 一个页面区分管理者和普通用户如何设计_产品经理要做的操作权限/数据权限设计...
产品经理在工作中还需要知道一个:用户权限设计能力.权限设计理念贯穿于后台产品.以及用户前端产品. 权限能力包括两类:数据权限.系统操作权限 有的人会好奇,为什么前端产品会有有权限管理的要求?接下来我将 ...
- java 数据库操作教程_数据库基本操作:增删改查及联表操作
所用软件:SQL Server Management Studio 首先第一步,建立一个表.在这里命名为T1.并在里面填入几条数据.如图: T1 一.查询 查询所有:select * from T1 ...
- python做学生管理系统数据库模型_数据库建模:学生信息系统搭建实验
首先必须理清学生信息系统有哪些实体,这些实体之间的关系又是如何的,他们之间是怎么进行关联的 实体有哪些: 学生表(student) 专业表(major) 课程表(course) 成绩表(grade) ...
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- 第一范式,第二范式,第三范式,BCNF范式理解
基础知识 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物& ...
- 数据库第一范式,第二范式,第三范式详解
数据库第一范式,第二范式,第三范式详解 基础知识 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等. ...
- 数据库的设计规范:第一范式、第二范式、第三范式、巴斯范式
文章目录 1. 范式的概念 1.1 范式分类 1.2 键和相关属性的概念 2. 第一范式(1st NF) 2.1 概念 2.2 举例 2.1 总结 3. 第二范式(2nd NF) 3.1 概念 3.2 ...
最新文章
- python是最好的语言 永远二十岁_Python是世界上最好的语言吗?
- Promise - js异步控制神器
- file:///f:winwwwxml2.php,php simplexml_load_file 中文乱码的解决方法
- IS-IS 的 DIS (伪节点) 及 DIS 和 OSPF中DR 的区别
- 《Head First Python》第二章--共享你的代码
- setsockopt、getsockopt详细介绍(转)
- 图像中某点绕点旋转后的坐标,图像旋转坐标位置
- 架构师必须知道的架构设计原则
- linux——两个客户端之间实现聊天(TCP、单线程)
- 太原市中考计算机考试系统,太原中考报名系统
- Echarts笔记-折线图定制(Y轴百分数,鼠标移动显示百分数,显示X轴,Y轴值)
- Java——标准异常
- 【机器人操作系统】ROS工作空间及功能包的创建
- 070 random模块的使用
- ruby on rails_通过Ruby on Rails中的关系调试Has_Many
- 盯市盈亏、浮动盈亏、总盈亏的计算方法
- 在购买太阳眼镜时怎样辨别好坏
- 低值易耗材料管理系统
- 用Kanban-Ace框架改进Scrum
- raspberry pi到手,折腾成web服务器,加小小鄙视下网通