我出席了一次面试,根据我的说法很顺利,但面试官没有这样说。他问了几个我正确回答的问题和2个实际问题。其中一个与数据库有关。
问题是这样的
学校由几个班级组成,每个班级学习由几位教师教授的不同科目。你必须设计数据库,以便人们可以知道哪个老师教什么课程?
看起来很简单,我设计了它。
类似的东西:
教师表
| ID | Teacher_Name |
-----------------------------
| 1 | Ankit |
| 2 | Jack |
班级表
| ID | class_Name |
-----------------------------
| 1 | First |
| 2 | Second |
主题表
| ID | subject_Name |
-----------------------------
| 1 | English |
| 2 | stats |
和一个主表,将它们全部组合起来,并了解教师教授哪个课程的主题
主表
| ID | Teacher_id | class_id | subject_id |
----------------------------------------------------
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
只是为了清楚我做了什么......我甚至为这个问题写了一个选择查询,即使他没有让我这样做。
我只是sql的初学者所以我不知道这是否正确但是根据我的说法,如果我需要对数据库进行更改,这是非常有用的。添加课程或科目的示例。
现在根据他的说法,这个设计根本不起作用,他说我甚至不应该把自己当作初学者而是低于初学者的水平。
所以请善意地告诉我这是否正确,如果它不是什么是设计数据库的正确方法。
提前感谢。
答案 0 :(得分:6)
看起来很简单
这可能是问题的一部分。大多数数据库问题出现非常简单。但实际上很少有 非常简单。
我可以继续。但这就是我不会雇用你的原因。
您的要求含糊不清,不完整。 (这可能不是偶然的。)你做得不够明确。
我只是sql的初学者
我们在某些时候都是初学者。
他们想聘请初学者吗?如果没有,那可能是另一个问题。
答案 1 :(得分:5)
除了一个小故障似乎很好,如果你把一个老师分配给一个有错误主题的类,那么它在主表中的故障,你不能在数据库中设置一个约束,恕我直言那里应该有一个中间表来映射课程和科目,即ClassSubjectMap
----------------------------------------------------
| CSMapID | class_id | subject_id |
----------------------------------------------------
| 1 | 1 | 1 |
----------------------------------------------------
| 2 | 2 | 2 |
----------------------------------------------------
然后在Master表中使用此地图ID来映射具有主题的教师,这样就不能将教师分配到工程类教授生物学。除此之外,其他表似乎没问题。
答案 2 :(得分:4)
答案 3 :(得分:0)
也许您不希望明确存储有关特定教师可以教授哪些科目的信息。实际上,我们在教育过程中有一个真正的应用,我们没有存储这些信息,我们还没有非常需要它来实现。因此,我猜你也可以不用它,因为没有提供限制用户将教师分配给科目和课程的要求。
我认为你想要限制的是,每个科目只有一名老师教授特定班级。所以我会选择一些简单的东西,例如名为“Courses”的表,列{id,teacher_id,subject_id,class_id,semester_num},以及{subject_id,class_id,semester_num}的唯一约束,在此处将教师作为属性。< / p>