sql - 您如何为一个键存储多行数据并保持良好的规范化实践?
问题描述
想象一下,在一个数据表中,您有一个人和他们的不同类别(数学/科学/英语)和不同考试编号(1、2)的考试成绩。像这样:
人 | 数学 | 科学 |
---|---|---|
鲍勃 | 88 | 76 |
鲍勃 | 90 | 99 |
乔 | 48 | 46 |
乔 | 70 | 69 |
通过按列扩展来规范化这个表会更好(所以,我们有一个 math1 和 science1 列以及一个 math2 和 science 2 列,或者只是添加一个 row_id 列?
解决方案
将列扩展到 math1、science1、math2、science2 等不会是“规范化”。这是一个重复组的例子,通常被认为违反了第一范式。
您说每人多行中的每一行对应于不同的考试。你怎么知道每一行对应的是哪个考试?为什么不添加一列exam_no
?
推荐阅读
- angular - 带有 animateTransform 的 SVG 动画在 Angular 中不起作用
- makefile - NMAKE子目录中文件的通配符
- c++ - 规范化包含编译时 * 或 * 运行时值的对象的构造
- javascript - 如何在 package.json 的项目目录中为 gulp 文件创建路径
- excel-formula - 使用日期自动填充单元格值
- vue.js - 在 git-bash 上创建 vue-cli3 项目
- ios - 如何使 AutoLayout 适合 iPhone 的所有尺寸屏幕
- r - 澄清 R 中嵌套函数和环境的问题
- css - Bootstrap 的网格和卡片问题
- django - Django模型表单同时保存两次发布请求