Ank*_*ail 3 sql database-design
我出席了一次面试,根据我的说法很顺利,但面试官没有这样做.他问了几个我正确回答的问题和两个实际问题.其中一个与数据库有关.
问题是这样的
一所学校由几个班级组成,每个班级学习由几位教师教授的不同科目.你必须设计数据库,以便人们可以知道哪个老师教什么课程?
它看起来很简单,我设计了它.
就像是:
老师表
| ID | Teacher_Name |
-----------------------------
| 1 | Ankit |
| 2 | Jack |
Run Code Online (Sandbox Code Playgroud)
班级表
| ID | class_Name |
-----------------------------
| 1 | First |
| 2 | Second |
Run Code Online (Sandbox Code Playgroud)
主题表
| ID | subject_Name |
-----------------------------
| 1 | English |
| 2 | stats |
Run Code Online (Sandbox Code Playgroud)
和一个主表,将它们全部组合起来,并知道老师教什么课程的主题
主表
| ID | Teacher_id | class_id | subject_id |
----------------------------------------------------
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
Run Code Online (Sandbox Code Playgroud)
只是为了清楚我做了什么...我甚至为这个问题编写了一个选择查询,即使他没有让我这样做.
我只是sql的初学者,所以我不知道这是否正确,但根据我的说法,如果我需要对数据库进行更改,这是非常有用的.添加课程或科目的示例.
现在根据他的说法,这个设计根本不起作用,他说我甚至不应该把自己视为初学者,而是低于初学者的水平.
所以请善意地告诉我这是对的,如果它不是什么是设计数据库的正确方法.
提前致谢.
看起来很简单
这可能是问题的一部分.大多数数据库问题似乎很简单.但很少有人真正是相当简单.
我可以继续 但这就是为什么我不会雇用你的原因.
你得到了模棱两可,不完整的要求.(这可能不是偶然的.)你没有做足够的事情来澄清它们.
我只是sql的初学者
我们在某些时候都是初学者.
他们想聘请初学者吗?如果没有,那可能是另一个问题.
除了一个小故障似乎没问题,如果你把一个老师分配给一个有错误主题的班级的话,它会在主表中出现故障,你不能在数据库中设置一个约束,恕我直言那里应该有一个中间表来映射类和主题即 ClassSubjectMap
----------------------------------------------------
| CSMapID | class_id | subject_id |
----------------------------------------------------
| 1 | 1 | 1 |
----------------------------------------------------
| 2 | 2 | 2 |
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
然后在Master表中使用此地图ID来映射具有主题的教师,这样就不能将教师分配到工程类教授生物学.除此之外其他表似乎没问题.