数据库的表的设计规范,以及数据库范式的概念

范式中涉及的概念问题:

         ① 部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

          简单说:A——>(推出)B,如果A是一个属性组的话,则B属性只需要依赖A属性组中的某些属性就可以推出B,就是说B部分依赖于A

          例子:学生信息表中有(学号,课程名称,姓名),学号可以推出,但是课程名称不能推出姓名,也就是说姓名部分依赖于(学号,课程名称)

 

           ②完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X

          简单说:A——>B,如果A是一个属性组的话,则B必须依赖A属性组中的所有属性才可以推出B,就是说B完全依赖于A。

          例子:学生表中有(学号,课程名称,分数),单一的学号并不能推出分数,单一的课程名称也不能推出分数,只有学号和            课程名称一起才能推出分数,所以说分数完全依赖于(学号,课程名称)

 

           ③传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X

           简单说:A——>B,B——>C,如果A属性组可以确定唯一B属性的值,B属性组可以确定唯一C属性的值,则说C传递依赖于A

           例子:学生表中有(学号,系主任,系名),学号可以推出系主任,系主任可以推出系名,所以说系名传递依赖于学号

 

范式以及表的设计规范:

一范式:表中属性都是单一属性,不可再分

下图就是不满足一范式的表

应该改为如下图所示:

二范式:在一范式的基础上,消除部分函数依赖

三范式:在一二范式的基础上,消除传递函数依赖

为什么需要满足范式:

不满足范式会出现数据冗余、数据插入异常、数据删除异常以及更新异常等问题

表的设计基本上满足第三范式就足够了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值