首页 > 数据库 >数据库设计三大范式

数据库设计三大范式

时间:2023-03-01 20:34:03浏览次数:38  
标签:关系 依赖 范式 函数 数据库 X0 三大 属性

范式

什么是范式:就是对关系型数据库做出的规范要求,满足不同程度的规范要求就是不同的范式。

最常见的设计范式有三个:

第一范式(1NF)

在关系模型中,一范式的所有域都应该是原子性的,即每个属性都不能再分。

错误做法如下:

 对于”学生“一列有多项信息都合并在一起了,不具有原子性,也不属于第一范式。

修改后:

 

第二范式(2NF)

在一范式的基础上,每个非主属性完全函数依赖于任何一个候选码,即在一范式基础上消除非主属性对主码的部分依赖。

部分函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。

完全函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0不能决定Y,则称Y对X完全函数依赖。

  这里举例说明:

  设有关系模式U(A,B,C,D,E),存在函数依赖关系:F={ A→C, BC→D, CD→A, AB→E}。

      可以判断出非主属性为D、E,候选码为AB、BC;

      在题目中非主属性D存在BC→D,属于完全函数依赖;而E存在AB→E,也属于完全函数依赖;所以题目中的函数依赖关系满足二范式。

      那什么时候不满足二范式呢?  如题目中增添函数关系A→E,就出现了E对A的部分函数依赖,不符合二范式。

第三范式(3NF)

在第二范式的基础上,每个非主属性既不传递依赖于码,也不部分依赖于码。如果关系模式R属于3NF,则必有R属于2NF。

传递函数依赖:在关系模式R(U)中,如果X→Y,Y→Z,且 X 不包含 Y,Y 不确定 X,Y不包含Z,则称 Z 对X传递函数依赖。

  举例说明:

  如果有 A→C, C→D成立, 则A→D称D传递依赖与A。

也就是说第三范式确保表中的每一列数据表和主键直接相关,而不是间接相关。

标签:关系,依赖,范式,函数,数据库,X0,三大,属性
From: https://www.cnblogs.com/nliu/p/17169034.html

相关文章

  • (数据库系统概论|王珊)第七章数据库设计-第四节:逻辑结构设计
    pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解目录一:E-R图向关系模式的转换(1)转换原则(2)具体转换......
  • 服务器上的数据库被删了
    一、发现问题:近期访问我的网站的时候登录报错,到主机上查看了一下日志才发现系统找不到指定数据库,慌张的我赶紧连接了一下数据库看看,发现真的是数据库被黑了,只留下了我看......
  • 记录一个mongo数据库TreeMap结构导致数据异常的BUG
    BUG:mongo入库丢失了某些字段,没报错场景:java代码调用mongo入库,一个嵌套结构体,在内部某一层嵌套增加一个对象结构,有几个常量和嵌套对象,2个Map<String,String>,1个Map<String,......
  • Unit Test下使用H2内存数据库
    1.Maven引入包<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</version></dependency>2.在项目的sr......
  • TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?
    去年8月我们在TDengine开发者大会上正式发布了TDengine3.0,TDengine也由此升级成为了一款云原生时序数据库(TimeSeriesDatabase,TSDB)。为了客观、准确、有效地评估......
  • 数据库常用sql
    1.创建表createtable表名(字段名类型约束,字段名类型约束...)如:createtablestudents(idintunsignedprimarykeyauto_increment,namevarchar(20......
  • 什么是数据库?
    数据库概述数据库是一个以某种有组织的方式存储的数据集合,通常是一个文件或一组文件数据库软件也称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器在现实......
  • jmeter测试数据库死锁问题
    场景:    多人同时操作同一对病人不同业务的保存操作,例如:有人修改保存病人资料,有人修改保存病人的治疗方案,有人修改保存病人的B超信息测试步骤:不是为了压测登录操......
  • MySQL数据库架构&SQL注入漏洞
    查找zblog数据库中有哪些表SELECTTABLE_SCHEMA,TABLE_NAMEFROMinformation_schema.`TABLES`WHERETABLE_SCHEMA='zblog';查找目标表(zbp_category)中的字段SELECT6,COLU......
  • 数据库笔记
    第二讲数据库系统的结构抽象与演变1.数据库系统的标准结构(1)数据库系统的分层抽象?DBMS管理数据的三个层次外部层次(ExternalLevel)=用户层次(UserLevel)某一用户能够......