设计数据库不应该有这些: 1数据冗余 2不一致性 3插入异常 4删除异常
这图就出现了问题 如人工智能的学分不一致 有两个文化学 这就出现了以上的问题 所以要杜绝 我们可以这样分为两个表 如下:
右边的表只要把人工智能的删除一个就好了(画错了 不好意思)
在就是函数的一些关系 如函数依赖 :
v函数依赖设R(U)是一个属性集U上的关系,X和Y是U的子集。如果属性集合X中每个属性的值构成的集合唯一地决定了属性集合Y中每个属性的值构成的集合,则属性集合Y函数依赖于属性集合X,计为:X→Y
如下表所示,知道了“课程名”的值,即可知道“授课学时”的值。称“授课学时”函数依赖于“课程名”,或“课程名”可以决定“授课学时”,记作课程名→授课学时。
还有这个
v部分函数依赖:如果非主属性B函数依赖于构成某个候选关键字的一组主属性A的某一个真子集,则称B部分函数依赖于A。 v如“学分”函数依赖于主关键字{学号、课程}。但决定“学分”的只是“课程”,与“学号”无关,则称“学分”部分函数依赖于{学号、课程} 。
传递关系 :
v传递函数依赖的关系:在R (U)中,如存在X,Y,Z包含于U,且满足:X—>Y,Y—>Z,则称Z传递函数依赖于X。v学生住宿的楼号依赖于学号,学生应交的住宿费是由楼号决定的,即“收费”依赖于“楼号”,“楼号”依赖于“学号”,则“收费”传递函数依赖于“学号”。
接下来的就是要符合范式:
第一范式:
任何符合关系定义的表即满足第一范式。
ID Name Sex Age Male Female 101 张三 Y 20 102 李四 Y 21
v第二范式定义:如果一个关系不存在部分依赖关系,那么该关系就属于第二范式。凡是以单个属性作为主关键字的关系自动就是第二范式。因为主关键字只有一个,不会存在部分依赖的情况。因此,第二范式只是针对主关键字是组合属性的关系。
第三范式v定义:一个关系如果是第二范式的,并且没有传递依赖关系,则该关系就是第三范式。v每个非主属性不部分依赖于关键字,也不传递依赖于关键字的关系。
关系规范化的目的:解决关系模式中存在的插入、删除异常,以及数据冗余问题,基本思想:围绕函数依赖的主线,对一个关系模式进行分解,使关系从较低级范式变换到较高级范式。
以上也就是设计数据库基本注意的问题 我也是初学者 只能帮忙这些不知道是否对你有用!