Join 数据库中以下案例场景的理想解决方案
网上大约有数百万学生要写50门考试,一个人可以写一门以上的考试,也可以不写一门以上的考试。一个人也可以写一次以上的考试(重试) 那么下面哪种解决方案更适合这种情况,Join 数据库中以下案例场景的理想解决方案,join,oracle11g,sql-server-2008-r2,indexing,rdbms,Join,Oracle11g,Sql Server 2008 R2,Indexing,Rdbms,网上大约有数百万学生要写50门考试,一个人可以写一门以上的考试,也可以不写一门以上的考试。一个人也可以写一次以上的考试(重试) 那么下面哪种解决方案更适合这种情况,我也可以选择比这两种更好的解决方案 备选案文1。将每个检查存储在一个表中: 主题1 +----------------+---------+ | student id | Marks | +----------------+---------+ | 1 | 85 | | 2
我也可以选择比这两种更好的解决方案
备选案文1。将每个检查存储在一个表中:
主题1
+----------------+---------+
| student id | Marks |
+----------------+---------+
| 1 | 85 |
| 2 | 32 |
| 2 | 60 |
+----------------+---------+
主题2
+----------------+---------+
| student id | Marks |
+----------------+---------+
| 1 | 85 |
| 2 | 32 |
| 2 | 60 |
+----------------+---------+
如上所述,每个表只有在特定的人参加了考试时才会有学生id,如果他参加了不止一次考试,则会多次出现学生id
备选案文2:
+----------------+---------+---------+
| student id | Subject | Marks |
+----------------+---------+---------+
| 1 | Subj1 | 85 |
| 2 | Subj1 | 32 |
| 2 | Subj1 | 60 |
| 1 | Subj2 | 80 |
| 3 | Subj2 | 90 |
+----------------+---------+---------+
将所有值放在一个表中
从性能和存储角度来看,哪一个更好
我的各种疑问我认为这里最好的是:
STUDENT
,包含有关学生的信息考试
包含考试信息考试
参考学生
和考试
表,以及字段考试日期
和考试结果
test\u TRY
考试是针对每个考试还是所有考试一起进行的?你的意思更像选项2,学生id来自学生表,科目名称来自科目表及其相应的分数。我没弄错吧?正如我所见-是的。但在这样的问题中,更好地为表编写DDL查询,它们不能被错误地理解。