我正在上数据库课程,并且正在研究表规范化。

sql - 为什么此表未规范化?-LMLPHP

谁能向我解释,为什么右边第一行的第二个表没有被规范化?

最佳答案

未归一化,因为
对于已经签署了不止一门课程的学生,表中的条目将为:
23杰克·史密斯CS101 B +
23杰克·史密斯B102 C +
显然,数据正在重复(冗余数据)。这会导致异常(插入,更新,删除异常)。
例如:当您必须更改学生的姓名(例如杰克·史密斯)时,您必须修改所有行,这被称为更新异常。

使用规范化来避免此类异常和冗余数据存储。
第二行右侧的表以更好的方式处理这种情况,因为它将id, name and DOB存储在单独的表中,因此可以在单行中使用id属性轻松进行编辑。
有几种范式,例如1NF,2NF,3NF等。每种范式都有一些与之相关的约束。每个高级表格都比前一个表格严格。

关于sql - 为什么此表未规范化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33032178/

10-15 06:43