数据库设计——三范式概念+现实

简介:

   在数据库设计的范例使用三时间,我一直认为它是第一个未完成ER画画。然后导出关系模型,否合理,but not!

我们在一開始画ER图的时候。就应当和三范式联系起来,将错误消灭在源头。为了能最早的检验出错误。我们就要对ER图转换成关系模式的算法和三范式是怎样消除冗余,避免冲突有深刻的了解,才干知道怎样最早发现错误。


     本文主要以机房收费系统数据库设计中的一些东西为例,结合三范式概念。简述下三范式。


    


    一,1NF

定义:

假设关系模式R的每一个关系r的属性值都是不可分的原子值,那么称R是第一范式。

 

简单来说。第一范式要求属性不可再分。来看一个比較常见的样例:

比如,在机房收费系统中,比方我们会遇到日期时间是该写成一个属性还是分开写呢?这时候我们就要依据第一范式来做出一个推断了,由于第一范式要求属性值不可再分,所以我们应该这样:




二,2NF

 

定义:

假设关系模式R1NF,且每一个非主属性全然函数依赖于候选键。那么称R是第二范式。

 

要明确第二范式,首先要明确什么是全然函数依赖?

 

全然函数依赖:

RU)中,假设XY,而且对于X的不论什么一个子集x,都有x不成立。则称YX全然函数依赖。

如图,(X1X2Y,而且,X1Y不成立。X2Y不成立。

 

 


 

可是,假设在全然函数依赖中,若XY,但Y不全然函数依赖于X。则称YX部分函数依赖。

 

比如,如图。此时。X1成立,则Y部分依赖于X1X2;

 

 


 

 

综上,我们能够得出,要满足第二范式,就要让每个非主键属性全然依赖于主键。

 

比如。我们在机房收费系统设计数据库的时候,对于学生表可能有过这种设计,最開始的时候,我们为了查询方便,把学生表和卡表这样做:

 


 

可是当我们再次重构数据库的时候。我们就要依据三范式来推断下了。

比如,卡内金额依赖于主键学号和卡号,而卡内金额也依赖于卡号,这里就不满足2NF,我们就要将两张表拆开。

 

 

 

 

三,3NF

 

定义:

R满足1NF。且每一个非主属性都不传递依赖R的候选键,则称实体E时第三范式。

 

 

什么是非主属性传递码?

如图所看到的,为传递函数依赖的示意图:

 



 

比如,

 



 

 

还是上面那张表,我们在这里选的是学号作为主键,则表中有:

学号卡号卡内金额,此时出现了传递依赖。

 

 

分析:

2NF3NF,不管是出现部分依赖还是出现传递依赖,都是要将关系模式进行分解,追究产生错误的根源,感觉还是E-R图没有画好的缘故。

 

 

 

小结:

1NF将属性拆成了原子值。2NF3NF都是为了消除冗余和异常问题;

所以,三范式有两个作用:一是能够衡量一个数据库的好坏。二是能够作为数据库设计的一个基本原则。

 



本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4721113.html,如需转载请自行联系原作者


相关文章
|
2月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
181 0
|
2月前
|
存储 数据库
数据库设计三范式
三范式设计的最终目的都是为了减少我们的工作量,所以说,尽管三范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在三范式中,更多的是应该从项目中出发,设计出合理的表结构。
|
4天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
23 5
Mysql(3)—数据库相关概念及工作原理
|
6天前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
28 5
|
4天前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
20 3
|
2月前
|
存储 算法 Java
数据库范式与设计原则
数据库范式与设计原则
50 0
|
3月前
|
存储 关系型数据库 数据库
关系型数据库设计范式:深入理解与实践
【7月更文挑战第20天】关系型数据库设计范式是数据库设计中的重要指导原则,它通过一系列规范来减少数据冗余、提高数据一致性和优化查询性能。在实际应用中,我们应该根据具体需求和数据特点,灵活选择和应用不同的范式级别,以构建高效、可靠和可扩展的数据库系统。同时,也需要注意范式设计带来的挑战和限制,根据实际情况进行权衡和调整。
|
3月前
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
3月前
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解
|
3月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计