Database 将表标准化为3NF
在将表规范化为3NF之后,我很难理解如何表示外键Database 将表标准化为3NF,database,database-design,normalization,Database,Database Design,Normalization,在将表规范化为3NF之后,我很难理解如何表示外键 让我们考虑这个表格:< /P> student(studentid,studentname,courseid,coursename,dateofexam,marks,grade) 我可以计算出FD,如下所示: studentid -> studentname courseid -> coursename {student,courseid} -> dateofexam,marks marks -> grade 现在,我
让我们考虑这个表格:< /P>
student(studentid,studentname,courseid,coursename,dateofexam,marks,grade)
我可以计算出FD,如下所示:
studentid -> studentname
courseid -> coursename
{student,courseid} -> dateofexam,marks
marks -> grade
现在,我尝试为FD创建一个新表,该表具有如下非ket属性:
marks grade
studentid studentname
现在,如何将这些表的外键与我的旧表student
关联起来?我对这样做感到困惑
提前感谢。您的FD实际上向您展示了如何:
studentid -> studentname
courseid -> coursename
{student,courseid} -> dateofexam,marks
marks -> grade
每一行将是一个单独的表。
其他表中存在的键将是fk。
在这种情况下:
{student,courseid} -> dateofexam,marks
这将是studentid、courseid和Mark(可能也必须是id)
应该是这样的
学生(
学生,
学生姓名)
课程(
开斋节,
coursename)
考试(
examid,
fk_学生ID,
fk_courseid,
dateofexam,
fk_markid)
标记(
马基德,
等级)没有必要将“标记”作为身份证号码。ID号与规范化无关。在讨论如何规范化关系时,通常不允许引入新列(就像考试中的“examid”一样);从你开始就用。对于您命名为“考试”的表,键应该是{studentid,courseid}。分数和分数有什么区别?