关系模式,只涉及到第三范式,是些很初步的一些东西,希望不会见笑大方 :-)
1NF 是最基本的范式,没必要再说什么;对于一个已经满足 1NF 的关系模式,当消除了非主属性对码的部分函数依赖后,就属于 2NF 了;当消除了主属性对码的部分和传递依赖函数,它就属于 3NF 了。(因为软考只关心到第三范式,我也就到此为止)。
光说理论总让人感觉很难受,举个例子的话会更好很多。
下面这个关系隶属于1NF,因为所有属性都是简单属性。
教学(学号,姓名,年龄,性别,系名,系主任,课程名,成绩)-主码是学号
但是这个关系中有两个属性(课程名、成绩)不依赖于它的码(学号),即学号!→课程名,学号!→成绩,而应该是(学号,课程名)→成绩。所以我们接着分解使之满足 2NF 。
学生_系(学号,姓名,年龄,性别,系名,系主任)-主码是学号
选修(学号,课程名,成绩)-主码是学号+课程名
在这个模式中,所以有非主属性都依赖于主码,但是,在“学生_系”中,还出现了一个传递依赖关系,学号→系名→系主任,再把这个传递依赖消除,所有的关系便满足 3NF 了。分解如下:
学生(学号,姓名,年龄,性别,系名)-主码是学号
系(系名,系主任)-主码是系名
选修(学号,课程名,成绩)-主码是学号+课程名
分解到这里,现在拥有的三个关系就是可以使用的关系了,因为第三范式基本上就是满足使用要求的最低范式了。