1
5
如果可能,应避免在数据库中复制数据:
你可以:
或:
你最后的建议似乎是个坏主意。对于每个课程,表中都需要一列,并且大多数值都为空。 |
2
2
我不知道如果课程表明你需要这个部门,为什么你需要这个表中的部门。所以,为什么你的桌子不是:
这张表缺少的是一些时间指示。例如,如果一个学生第一次不及格,他可以上同一门课两次。因此,您需要额外的列来指示学期和年份。 |
3
1
你的建议将是一场噩梦。每次在课程表中添加新课程时,都必须添加新的列。很多时候查询也会比较困难。 如果要确保每个课程都适合部门,可以在触发器(确保处理多个记录插入或更新)或应用程序中执行此操作。这仍然不能防止所有数据输入错误(当您指CS98时,可以选择CS89),但它将减少错误量。在这种情况下,数据不太可能来自应用程序以外的任何地方,因此我可能会选择在应用程序中强制执行规则。一个下拉列表,在其中他们选择了该系,只有该系显示的课程可以做到这一点。 |
4
0
您可以向表中添加外键约束,以确保为学生ID、课程ID和部门ID输入有效值。您还可以向表中添加唯一约束,以确保不会创建意外的重复项。但最终你不能阻止不正确的数据被插入;如果你知道它是不正确的,你就不需要请求它。 例如:1957年2月29日不能是我的生日;2025年7月15日不能是我的生日;1974年9月27日不能是我的生日。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |