`

RDB的规范化理论(函数依赖+范式)

    博客分类:
  • Web
F# 
阅读更多

 

一、概念分析

 

1、函数依赖:这个概念术语语义范畴,只能根据语义确定属性间是否存在这种依赖,此外别无原则。就是说,从字面上读起来觉得“A能唯一确定B”这句话是通顺的、不违反你的常规逻辑的,那么B就函数依赖于A,我记作AB.

    a、区别完全函数依赖和部分函数依赖

    存在一个关系RU)(U是一个关系的所有属性),如有XY属于U且满足XY,且对于任何X的真子集X1 都有Y不函数依赖于X1,则称Y完全函数依赖于X,我暂时记作

X  (f)  Y

如果A  (f)  B,那么(A ,C) (p)  B  (部分函数依赖)。

 

    

     b、区分直接函数依赖和传递函数依赖

R(U)  中,如果XY(Y不属于X)X不函数依赖与YZ函数依赖于Y,则称ZX传递函数依赖

 

2、范式:

 

范式和规范化方法,规范化目的是介绍冗余和异常:

 

 

 

第一范式(1NF):R中每个属性都是不可分的原子值

第二范式(2NF):R(U)中每个非主属性完全函数依赖与关键字。

第三范式(3NF):R(U)中每个非主属性都不部分依赖也不传递依赖于关键字,则称R满足第三范式。

BCNF(扩充的第三范式):如R(U)XY属于U,假定满足R属于1NF,且若Y非平凡函数依赖于XX必含关键字,则称R满足BCNF

 

 

 

二、实例说明:

 

这些概念比较抽象,所以我设计了“博客系统”的几个表来应用上面的理论:

 

用户信息表userinfo:

 


 

 

 

 



 

 


 

 

显然,这三个表都满足1NF

 

接着,因为三个表的primary不是复合主键,所以不存在部分函数依赖的关系。所以,满足2NF。如果user的主键是id+name,因为idpwd,那么将不满足完全函数依赖的关系。

 

接着,在reviews表中,IdButtetin_board_nameIns_id,并且Buttetin_board_nameid不成立,所以Ins_id间接函数依赖于id,所以不满足3NF

 

最后,显然不满足BCNF:如userinfo表中的namepwdname中不含关键字。

 

  • 大小: 67.1 KB
  • 大小: 26.6 KB
  • 大小: 26.1 KB
  • 大小: 34.4 KB
  • 大小: 42.3 KB
分享到:
评论

相关推荐

    JAVA面试题.zip

    - 数据库设计:第三范式(3NF)、数据库规范化。 - 索引:B-Tree、哈希索引、全文索引。 - 存储引擎:InnoDB(事务、行级锁定)、MyISAM(非事务、表级锁定)。 - 触发器、存储过程、函数。 - 查询优化:EXPLAIN分析...

    scratch少儿编程逻辑思维游戏源码-塔防游戏V1.0.zip

    scratch少儿编程逻辑思维游戏源码-塔防游戏V1.0.zip

    智慧城市-【精品】2019年中国智谷集团智慧城市解决方案.zip

    智慧城市-【精品】2019年中国智谷集团智慧城市解决方案.zip

    spring-boot-2.1.18.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-小不点的故事.zip

    scratch少儿编程逻辑思维游戏源码-小不点的故事.zip

    scratch少儿编程逻辑思维游戏源码-天空中的英雄.zip

    scratch少儿编程逻辑思维游戏源码-天空中的英雄.zip

    rocksdbjni-6.24.2.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    GIS的组成和功能教育课件.ppt

    GIS的组成和功能教育课件.ppt

    spring-boot-2.1.17.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-速写图闯关.zip

    scratch少儿编程逻辑思维游戏源码-速写图闯关.zip

    spring-boot-2.1.11.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    ​ modbus-rt是一款完全基于C语言实现的可以运行在windows, linux, macos, RTOS上的modbus通信库 主要目的是针对控制系统和工业物联网的方向使用

    ​ modbus_rt是一款完全基于C语言实现的可以运行在windows, linux, macos, RTOS上的modbus通信库。主要目的是针对控制系统和工业物联网的方向使用。modbus_rt可以同时支持slave模式和master模式,基于类似socket句柄的实现思想,可以很方便的支持多例模式。它不仅仅是modbus协议的解析和实现,而是尽可能的在应用层做好实现和封装,做到开箱即用,而不需要做过多的应用层移植。

    spring-boot-2.5.3.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于单片机的停车场管理设计(仿真+电路+程序)(51+1602+D80NK+BZ+LED2+KEY3)#0430

    包括:源程序工程文件、Proteus仿真工程文件、电路原理图文件、配套技术手册、论文资料等

    spring-boot-1.3.5.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-逃走.zip

    scratch少儿编程逻辑思维游戏源码-逃走.zip

    spring-boot-1.5.18.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-索尼克.zip

    scratch少儿编程逻辑思维游戏源码-索尼克.zip

    scratch少儿编程逻辑思维游戏源码-太空运输船.zip

    scratch少儿编程逻辑思维游戏源码-太空运输船.zip

Global site tag (gtag.js) - Google Analytics