100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 超码 候选码 主码(主键) 主属性 非主属性 关系数据库中的依赖 关系数据库范式 反范式

超码 候选码 主码(主键) 主属性 非主属性 关系数据库中的依赖 关系数据库范式 反范式

时间:2022-07-22 16:48:42

相关推荐

超码 候选码 主码(主键) 主属性 非主属性 关系数据库中的依赖 关系数据库范式 反范式

超码:可以区分记录的一个属性或多个属性的集合。

候选码:超码的最小集,即包含最少属性的超码。超码的最小集可以有多个,即多个集合大小相同,但元素构成不完全相同的最小集。

主码(主键):被选中的一个候选码。候选码可以有多个,主码只有一个。主键如果是由多个属性构成,又称联合主键。

主属性:属于某个候选码的属性。

非主属性:不属于任何候选码的属性。

表的域、属性、字段、数据项是一致的。

关系数据库中的依赖:根据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设计表,对数据及时性要求低的系统选择调用微服务进行缓存组装。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。