上一次我们介绍了数据库中关系代数查询,从选择、投影到连接等操作符,探索了数据库查询
大家可以移步我的文章:数据库系统概论期末经典大题讲解(用关系代数进行查询)-CSDN博客
今天,我们将继续沿着数据库系统的精髓探索之路,深入研究数据库系统概论中的经典大题:范式、闭包和主码。让我们深入挖掘这些概念,并为期末考试做好充分准备
关系R中每个分量都是不可分割的数据项,则R属于1NF
定义 若R属于1NF,且每个非主属性完全函数依赖于码,则称R属于2NF。
该关系模式属于1NF,不属于2NF。 因为有非主属性部分函数依赖于码:
方法: 非主属性有两种: 一种完全依赖于码; 一种部分依赖于码 --- 将其分出 就是完全依赖的单独作为一个关系模式,部分依赖的将部分依赖费主码和非主属性作为一个关系模式
可变为SC(SNO, CNO, G) S-L(SNO, SDEPT, SLOC) 此时便是2NF
定义:若R属于2NF, 且它的任何一个非主属性都不传递依赖于任何候选码,则R属于3NF (不能有传递依赖)
上述例子存在 SNO->SDEPT , SDEPT->SLOC (存在传递依赖了,不是3NF)
规范化过程中通过一组投影分解消除传递依赖,建议作如下分解(第二步分解): 已知关系R(A,B,C), A为主码(A->B, A->C),且B->C,undefined 则将R分解成为两个投影: R1(B,C), B为主码 R2(A,B), A为主码,B为外码
据此可分解为:SC(SNO, CNO, G) S-L1(SNO, SDEPT,) S-L2(SDEPT, SLOC)
关系模式R中每一个决定因素都包含(或是)码,则R属于BCNF
某书店购书情况汇总登记表 :
根据分析可以得到一组函数依赖: F={ NO→C#,C#→CN,C#→CA,B#→BN,B#→EU,B#→UP,(NO,B#) →QUA },表中(NO,B#)为关键字
先升级为2NF
再分解为3NF
在关系模式R<U, F>中为F所逻辑蕴含的函数依赖的全体叫做F的闭包,记为F+ 设F为属性集U上的一组函数依赖,X属于U, X+F={A|X ->A能由Armstrong公理导出}, X+F称为属性集X关于函数依赖F的闭包
步骤:
eg:
设关系模式R<U, F> (1) 将R的所有属性分为 L、 R、N和 LR四类
2.
eg:
设关系模式R(A, B, C, D, E, P), 其函数依赖集: F={A→D, E→D, D→B, BC→D, DC→A}
求R的所有候选码。
解: L类: C, Eundefined R类:undefined N类: Pundefined LR类: A, B, D 因为(CEP)F+=CEPDBA,所以CEP是R的唯一候选码
那么今天就先到这里了,之前写博客都是用富文本,今天发现好多符号都不能打出,影响大家的观感,只能截图进来,看来要去学习学习markdown了。希望下次能学会markdown来有更好的格式吧