分别向我介绍一下关系数据理论中的函数依赖、1NF、2NF、3NF、BCNF的定义和以及他们的判断方法,并分别举出详细例子
时间: 2024-06-10 07:06:56 浏览: 16
函数依赖:在关系中,如果 A 属性对于 B 属性具有确定的影响,即对于每个 A 值,都只有唯一的 B 值与之对应,则称 B 属性依赖于 A 属性,表示为 A->B。
1NF(第一范式):关系模式中的所有属性都是不可再分的基本数据项,即每个属性都是原子的。
判断方法:判断关系是否满足 1NF,需要检查每个属性值是否都是原子的,即是否不能再拆分。
例子:一个学生信息表,其中包含学号、姓名、年龄、性别、籍贯等基本信息,这些属性都不可再分。
2NF(第二范式):关系模式已经满足 1NF,且不存在非关键属性对码的部分依赖,即每个非关键属性都完全依赖于主键。
判断方法:对于每个非主键属性,检查其是否完全依赖于主键,即是否只和主键有关系。
例子:图书馆借书记录表,其中包含借书号、读者号、图书号、书名、作者等信息,公共属性书名、作者依赖于图书号,不存在非关键属性对主键的部分依赖。
3NF(第三范式):已满足 2NF,且不存在传递依赖,即非主键属性不依赖于其他非主键属性。
判断方法:对于每个非主键属性,检查其是否只依赖于主键,而不依赖于其他非主键属性。
例子:学生选课记录表,其中包含学号、选课号、选课日期、课程号、课程名称、授课教师等信息,选课号、选课日期、授课教师都只和课程号有关系,不存在传递依赖。
BCNF(巴斯-科德范式):已满足 3NF,且不存在主属性对非主属性的部分依赖,即主属性集合中的每个属性都是码。
判断方法:对于每个非主属性,检查其是否只依赖于主属性集合中的每个属性,而不依赖于主属性集合中的部分属性。
例子:学生成绩记录表,其中包含学号、课程号、课程名称、学分、成绩等信息,主属性集合为{学号,课程号},非主属性成绩依赖于主属性集合中的每个属性,不存在主属性对非主属性的部分依赖。