首页 > 解决方案 > 您如何为一个键存储多行数据并保持良好的规范化实践?

问题描述

想象一下,在一个数据表中,您有一个人和他们的不同类别(数学/科学/英语)和不同考试编号(1、2)的考试成绩。像这样:

数学 科学
鲍勃 88 76
鲍勃 90 99
48 46
70 69

通过按列扩展来规范化这个表会更好(所以,我们有一个 math1 和 science1 列以及一个 math2 和 science 2 列,或者只是添加一个 row_id 列?

标签: sqlpostgresqldatabase-designdatabase-normalization

解决方案


将列扩展到 math1、science1、math2、science2 等不会是“规范化”。这是一个重复组的例子,通常被认为违反了第一范式。

您说每人多行中的每一行对应于不同的考试。你怎么知道每一行对应的是哪个考试?为什么不添加一列exam_no


推荐阅读