Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 将表标准化为3NF_Database_Database Design_Normalization - Fatal编程技术网

Database 将表标准化为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 现在,我

在将表规范化为3NF之后,我很难理解如何表示外键

让我们考虑这个表格:< /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}。分数和分数有什么区别?