首页 > 数据库 >数据库三范式

数据库三范式

时间:2023-02-04 09:33:29浏览次数:44  
标签:依赖 范式 函数 数据库 依赖于 传递函数

数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性。这一系列范式就是指在设计关系型数据库时,需要遵从的不同的规范。关系型数据库的范式一共有六种,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。遵循的范式级别越高,数据冗余性就越低。

函数依赖

1、完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。这里这样理解:比如通过,(学号,课程) 推出分数 ,但是单独用学号推断不出来分数,那么就可以说:分数 完全依赖于(学号,课程)

2、部分函数依赖:假如 Y函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,(学号,课程) 推出姓名,因为其实直接可以通过,学号推出姓名,所以:姓名  部分依赖于 (学号,课程);

3、传递函数依赖:传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。(比如:学号 推出 系名 , 系名 推出 系主任, 但是,系主任推不出学号,系主任主要依赖于系名。这种情况可以说:系主任 传递依赖于 学号)

第一范式  字段不可切割

很明显上图所示的表格设计是不符合第一范式的,商品列中的数据不是原子数据项,是可以进行分割的,因此对表格进行修改,让表格符合第一范式的要求,修改结果如下图所示:

实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQL Server,Oracle,MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。也就是说,只要在RDBMS中已经存在的数据表,一定是符合1NF的。

第二范式:不能存在“部分函数依赖”

 

以上表格明显存在,部分依赖。比如,这张表的主键是 (学号,课名),分数确实完全依赖于 (学号,课名),但是姓名并不完全依赖于(学号,课名)

 

第三范式 3NF核心原则:不能存在传递函数依赖

 在下面这张表中,存在传递函数依赖:学号->系名->系主任,但是系主任推不出学号。

上面表需要再次拆解

标签:依赖,范式,函数,数据库,依赖于,传递函数
From: https://www.cnblogs.com/wdh01/p/17078267.html

相关文章

  • 配置oracle数据库别名
    参考资料:https://blog.csdn.net/qq_39194322/article/details/127189004需要配置的文件名:tnsnames.ora文件路径:D:\oracle\product\10.2.0\db_1\network\ADMIN配置格式:#......
  • oracle数据库忘记用户名和密码
    一、Oracle忘记用户名和密码1、运行cmd.exe,输入命令sqlplus,进入oracle控制台      开始-->运行-->cmd      C:\Users\Administrator>s......
  • 数据库题目
    下面表格的关系班级表关联着学生表创建班级表:createtableclass(cidintnotnulluniqueauto_increment,captionchar(18));教师表和班级表关联着课程表创建教师表......
  • sql数据库连表查询记录
     1、内连接查询(查询两个表都符合条件的数据)关键字innerjoin 基本格式  select字段列表  from表1innerjoin表2 on表1.字段=表2.字段  2、左连接查......
  • shell脚本读取MySQL数据库并写入变量
    DB_HOST=...DB_PORT=...DB_USER=...DB_PASSWORD=...DB_NAME=...mysql="mysql-h$DB_HOST-P$DB_PORT-u$DB_USER-D$DB_NAME-s-e"exportMYSQL_PWD=$DB_PASSWORD......
  • 虹科产品 | 使用Redis企业版数据库为MySQL增添魅力!
    MySQL读取数据慢?难以轻松扩展?数据搜索效率低?无法实时分发数据集?针对以上问题,虹科Redis企业版数据库的解决方案来了!企业如果将Redis企业版数据库与MySQL一起使用,可以实现......
  • 服务器设置导致mongo数据库的链接数受限
    记录一次使用mongoDB遇到的BUG,就是服务链接mongodb报错[05-Nov-202216:46:05]WARNING:[poolwww]child10231saidintostderr:"ERROR:[poolwww]failedtos......
  • mysql数据库锁-设置读写锁
    有这样一个业务场景,比如另外一个团队的人只想要我们这边sit库的读权限,来查看数据。但是开发人员只有一个是数据库账号,也就是说对数据库读写权限都有的账号。那开发人员怎......
  • 程序员必备的数据库知识:数据存储结构
    一、前言数据在数据库中的存储方式就是数据存储结构。传统数据库由上到下,可以分为网络接入层、计算引擎层、存储引擎层、系统文件层,数据存储结构就是在存储引擎层,数据库通过......
  • 墨天轮《2022年中国数据库行业年度分析报告》正式发布,精彩抢先看
    自2022年4月份起,墨天轮数据社区持续发布月度《中国数据库行业分析报告》,目前已发布7期,点击超过10万次,下载近万次。为总结过往,展望未来,墨天轮数据社区正式发布了《2022年......