【发布时间】:2021-10-06 19:05:20
【问题描述】:
我有两个表,table1 有一个外键 table2。我想从 table1 获取一些信息,包括 table1 和 table2 都有的列。我应该加入这两个表以获取信息吗? 例如: 我有两张表 Course 和 Student,如下所示
Solution1:
Course
|project CourseId, CouseName, StudentName, StudentId
Solution2:
Course
| project CourseId, CourseName, StudentName
| join Student
on $left.StudentId == $right.StudentId
| project CourseId, CourseName, StudentName
获取CourseId、CourseName和StudentName,哪种方案是正确的?选择解决方案 2 是一种好习惯吗?
请忽略表格设计。这只是一个例子。问题来自一个真实的项目,我们需要从一个表中查询,该表包含一个外部 id 和来自另一个表的公共列。查询应该返回公共列。是否需要加入第二个表才能得到公共列?
【问题讨论】:
-
课程表中为什么会有学生姓名?或者是学生证。课程和学生之间是否应该存在多对多关系?
-
StudentName 违反了第二范式