超码、候选码、主码(主键)、主属性、⾮主属性、关系数据库中的依赖、关系数据库范式、反范式
超码:可以区分记录的⼀个属性或多个属性的集合。
候选码:超码的最⼩集,即包含最少属性的超码。超码的最⼩集可以有多个,即多个集合⼤⼩相同,但元素构成不完全相同的最⼩集。
主码(主键):被选中的⼀个候选码。候选码可以有多个,主码只有⼀个。主键如果是由多个属性构成,⼜称联合主键。
主属性:属于某个候选码的属性。
⾮主属性:不属于任何候选码的属性。
表的域、属性、字段、数据项是⼀致的。
关系数据库中的依赖:根据A属性可以得到B属性,则B属性依赖于A属性。如:根据学号可以得到姓名,则姓名依赖于学号。
数据库属性的概念
Java模块中的依赖:A模块的运⾏需得到B模块的⽀持,则A模块依赖于B模块。
关系数据库范式(Normol Form,NF):
第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、巴斯-科德范式(Boyce-Codd Normal Form,BCNF)、第四范式(4NF)和第五范式(5NF,⼜称完美范式)。
第N范式满⾜第N-1范式,N>=2。
下⾯的介绍,默认后者已经建⽴在前者的基础上,只是加上了增加部分的表述:
1NF:属性有原⼦性,即属性不可拆分。如:员⼯表中不能有部门属性,应该是部门编号属性。
2NF:表有主键,即记录可区分。如:表中有两条记录内容完全相同,就违反了2NF。
3NF:⾮主属性之间没有依赖,即属性之间消除依赖传递。如:员⼯表中有员⼯编号,有部门编号,有部门⼈数,⽽部门⼈数依赖于部门编号,⼆者都是⾮主属性,违反了3NF;员⼯部门编号依赖于员⼯编号,造成了传递依赖:员⼯所在部门⼈数依赖于员⼯编号,应该去掉部门⼈数。
BCNF:⾮主属性不依赖于主键⼦集。
4NF:属性集合和属性集合之间没有依赖。
5NF:每个连接依赖被候选码包含。
规范的⽬的是消除表数据的冗余,节省存储空间;有助于保持数据⼀致性,提⾼操作效率。
如:表中有各属性值完全相同的记录,造成了数据多余的存储。如果满⾜2NF,就不会发⽣。
部门表中存储了部门编号和部门⼈数,员⼯表中存储了部门编号,还存储了部门⼈数,修改部门⼈数时得修改两张表,不利于数据⼀致性存储,修改效率低,如果满⾜了3NF,就不会发⽣。
反范式:
范式减少了数据冗余,使⼀个属性尽可能只存储在⼀张表中,使表的划分更细,表更多;为了整合数据,需更多地跨表联查,如果联查很多张表,或联查的表的数据量很⼤,耗时会很严重,在这种情况下可以反范式,即违反范式要求去设计表,在⼀张表中增加需跨表联查的属性,存储属性的值。
在分库分表的情况下,为了避免跨表联查,对数据及时性要求⾼的系统选择违反3NF设计表,对数据及时性要求低的系统选择调⽤微服务进⾏缓存组装。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。