数据库关系问题

时间:2012-10-18 18:15:36

标签: sql database database-design entity erd

我在确定我有以下情况的关系时遇到了问题

  • 老师可以查看很多论文
  • 一篇论文可由4位老师审核
  • 老师可以创建论文
  • 论文可以具有状态(正在审核,批准)
  • 同时也是教师的科目主管将选择教师审阅论文。
  • 教师可以有多种类型(即可以是论文的作者,评论者,科目主管等)

我已经确定了以下表格:

  • 教师
  • 纸张
  • TeacherType

现在教师可以是多种类型,许多教师可以有相同的类型,关系是多对多,这将被分成一对多,所以会有一个表TEACHER_TYPE(联结表)。我必须以不同的方式识别教师的每一卷,我将如何使用它,例如一位教师撰写一篇论文,同时由另一位老师审阅论文。那么我将使用TEACHER_TYPE中的主键以不同方式记录审阅和创作过程吗?或者教师表中的相同ID有不同的方法吗?

2 个答案:

答案 0 :(得分:0)

乍一看,似乎缺少的一件事是一个链接或关联表来表示教师和论文之间的多对多关系。该表看起来像......

review         <-- this name can be descriptive of the purpose (review)
----------         but is also often just the name of the association
fk_paper_id    <-- foreign key to paper
fk_teacher_id  <-- foreign key to teacher performing review
review_status  <-- one or more columns indicating the status of this review

教师类型可能只是教师和/或论文的属性。

由于教师(科目主管等)之间存在等级,也可以表示为教师的属性,而不是单独的类型。该表可以自引用...例如,员工表....

employee
--------------
pk_employee_id
name, etc
fk_manager_id     <-- foreign key referencing back to the managing employee

答案 1 :(得分:0)

我会制作第4张桌子PAPER_TEACHER,这会让你的问题变得更容易。

TABLE TEACHER T_ID 表纸P_ID TABLE TEACHER_TYPE T_ID和TT_Type 表PAPER_TEACHER T_ID,P_ID和PT_Status

SELECT *   来自PAPER t1  INNER JOIN PAPER_TEACHER t2 on t1.P_ID = t2.P_ID AND t2.PT_status =“正在审核中”  在t2.T_ID = t3.T_ID上的INNER JOIN TEACHER t3  INNER JOIN TEACHRE_TYPE t4 on t3.T_ID = = t4.T_ID AND t4.TT_Type =“reviewer”

在你要求PP_status的地方,你可以使用各种各样的东西。