【发布时间】:2019-10-09 22:30:58
【问题描述】:
我的数据库包含学校、部门和课程。学校可以有分部,也可以没有,课程跟学校有关系,也可以不和分部有关(学校可以没有分部,也可以跨分部)
我的桌子目前设置如下:
school:
ID | name
--------------------
harvard | Harvard University
mit | MIT
ucla | UCLA
division (id+school=unique)
ID | school (FK) | name
------------------------------------------
eng | harvard | School of Engineering
arc | harvard | School of Architecture
eng | UCLA | UCLA Engineering
course:
ID | school (FK) | division | name
-------------------------------------------------
1 | harvard | eng | Intro to Engineering
2 | harvard | arc | Intro to Architecture
3 | harvard | | Statistics
4 | mit | | Math
我对此的担忧:
- 没有验证以确保
course中的部门存在并且与学校相关。 - 除法实际上不是 fk
- 需要两次查询才能得到学校和部门
有没有更好的方法来做到这一点?我希望能够:
- 查询所有“哈佛”课程
- 查询所有“哈佛工程”课程
- 查询所有“哈佛工程与哈佛通用”课程
【问题讨论】: