c# - 如果一张桌子可以提供我们需要的信息,我需要加入另一张桌子吗
问题描述
我有两个表,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 和来自另一个表的公共列。查询应该返回公共列。是否有必要加入第二个表以获得公共列?
解决方案
课程表不应该有学生姓名,它是冗余数据。是的,您可以在学生 ID 上使用内连接或左连接。请记住您提供的给定信息,课程表中学生 ID 可以为空或不能为空的情况。
推荐阅读
- android - 即使未加载广告,广告正文也可见
- html - 保存的用户名/密码出现在 Firefox 的错误字段中
- azure - Azure 文件存储使用共享密钥创建文件
- string - COBOL:如何在输入前后修剪所有空格后计算所有字符
- ios - 带有 UITableViewCellStyle 的 Swift 自定义 Tableview 单元格
- node.js - Mongoose - 如何防止 mongoose 在模型实例化时创建 _id
- google-apps-script - 如何在活动工作表中“获取”多个选定范围?
- java - 初始化 SparkContext 时出错 --master yarn
- c# - PDFSharp 在编辑器中工作但不在构建中
- html - 从存储中动态显示 HTML