首页 数据库 mysql教程 【数据库系列】之《设计的三范式》

【数据库系列】之《设计的三范式》

Jun 07, 2016 pm 03:24 PM
为什么 使用 数据库 系列 计时

为什么要在数据库设计时使用三范式? 答:在设计数据库中为了更好的解决 数据冗余 、数据有效性、提高存储效率考虑。 什么是数据冗余? 答:数据冗余指一个数据在一个或者多个数据文件中重复存储。这里就要设计到“键”的概念。 一、键的概念 超键 :能够决


为什么要在数据库设计时使用三范式?

答:在设计数据库中为了更好的解决数据冗余、数据有效性、提高存储效率考虑。

什么是数据冗余?

答:数据冗余指一个数据在一个或者多个数据文件中重复存储。这里就要设计到“键”的概念。

一、键的概念

超键:能够决定一条记录的单个属性或属性集合。

候选键不含多余属性的超键。

主键:选择其中一个候选键。

假设:在师范学院,学号、课程号没有重复的情况下下,考虑以下属性

      学号

   姓名   

  课程号  

  成绩  

  课程名称  

   10070541001  

   张三

  001

   98

   张飞

   10070541002

   李四  

  001

   98

   张飞

   10070541002

   李四

  002  

   96

   赵刚

 

判断是超键吗?

(学号)不能够决定一条记录,不是超键

(学号、成绩)不能够决定一条记录,不是超键

(学号、课程号)能够决定一条记录,是超键

(学号、课程号、成绩)能够决定一条记录,是超键

——从这里看出,超键的组合是唯一决定一条记录的,但是可能不是最小唯一的。

 

判断是候选键吗?

(课程号、课程名称)唯一,但“课程名称”为多余的属性(即由课程号可以推出课程名称,或者说如果不使用课程名称也能唯一的表示一条数据实体),因此不是候选键。

(学号、课程号)唯一,没有多余的属性所以为候选键

——从这里看出,候选键是最小的超键,也就是说没有多余属性的超键。

 

二、函数依赖

(一)为什么会出现出现数据冗余?

答:因为数据依赖。数据依赖的典型例子就是:函数依赖。

(二)什么是函数依赖?

答:(专业术语)若对于R(U)的任意两个可能的关系r1、r2,若r1[x]=r2[x],则r1[y]=r2[y],或者若r1[x]不等于r2[x],则r1[y]不等于r2[y],称X决定Y,或者Y依赖X。(通俗的讲)在一个关系模式中,一个属性或者属性集合x决定另一个属性y。则:y依赖x。否则不决定,就不依赖。

(三)函数依赖分类:

1、 平凡依赖与非平凡依赖:

【数据库系列】之《设计的三范式》

2、 部分依赖与完全依赖:

【数据库系列】之《设计的三范式》

3、 传递依赖与函数依赖:

【数据库系列】之《设计的三范式》

三、数据库三范式:

第一范式1NF:原子性

定义:是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

第二范式2NF:消除部分依赖

定义:第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

【数据库系列】之《设计的三范式》

第三范式3NF:消除传递依赖

定义:满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

【数据库系列】之《设计的三范式》



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
甲骨文在商业世界中的作用 甲骨文在商业世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不仅是数据库公司,还是云计算和ERP系统的领导者。1.Oracle提供从数据库到云服务和ERP系统的全面解决方案。2.OracleCloud挑战AWS和Azure,提供IaaS、PaaS和SaaS服务。3.Oracle的ERP系统如E-BusinessSuite和FusionApplications帮助企业优化运营。

虚拟币价格上涨或者下降是为什么 虚拟币价格上涨或者下降的原因 虚拟币价格上涨或者下降是为什么 虚拟币价格上涨或者下降的原因 Apr 21, 2025 am 08:57 AM

虚拟币价格上涨因素包括:1.市场需求增加,2.供应量减少,3.利好消息刺激,4.市场情绪乐观,5.宏观经济环境;下降因素包括:1.市场需求减少,2.供应量增加,3.利空消息打击,4.市场情绪悲观,5.宏观经济环境。

REDIS:了解其架构和目的 REDIS:了解其架构和目的 Apr 26, 2025 am 12:11 AM

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。 Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显着提升其性能。

给MySQL表添加和删除字段的操作步骤 给MySQL表添加和删除字段的操作步骤 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,删除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段时,需指定位置以优化查询性能和数据结构;删除字段前需确认操作不可逆;使用在线DDL、备份数据、测试环境和低负载时间段修改表结构是性能优化和最佳实践。

php框架laravel和yii区别是什么 php框架laravel和yii区别是什么 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要区别在于设计理念、功能特性和使用场景。1.Laravel注重开发的简洁和愉悦,提供丰富的功能如EloquentORM和Artisan工具,适合快速开发和初学者。2.Yii强调性能和效率,适用于高负载应用,提供高效的ActiveRecord和缓存系统,但学习曲线较陡。

MongoDB的未来:数据库的状态 MongoDB的未来:数据库的状态 Apr 25, 2025 am 12:21 AM

MongoDB的未来充满可能性:1.云原生数据库发展,2.人工智能与大数据领域发力,3.安全性与合规性提升。MongoDB在技术创新、市场地位和未来发展方向上不断前进和突破。

怎样在C  中处理传感器数据? 怎样在C 中处理传感器数据? Apr 28, 2025 pm 10:00 PM

C 适合处理传感器数据,因为其高性能和低级控制能力。具体步骤包括:1.数据采集:通过硬件接口获取数据。2.数据解析:将原始数据转换为可用信息。3.数据处理:进行滤波和平滑处理。4.数据存储:保存数据到文件或数据库。5.实时处理:确保代码的高效性和低延迟。

uniswap 链上提币 uniswap 链上提币 Apr 30, 2025 pm 07:03 PM

Uniswap用户可从流动性池提取代币到钱包,确保资产安全和流动性,过程需支付gas费,受网络拥堵影响。

See all articles