数据库建模问题

时间:2011-06-15 01:28:28

标签: sql sql-server erd

表:
学生
教授
条目(数据库中没有用于条目的物理表入口,此表位于前端,因此如果需要,它可能由多个辅助表组成。只需要创建有效的erd)

Preambula: 一个学生可以与许多教授建立联系 一位教授可以与许多学生建立联系 一个条目可以有0,1或更多的学生或教授。 教授必须与一名或多名学生联系 学生不需要与任何教授建立联系 它应该更像这样(前端条目表):

enter image description here

此表中的任何教授必须在表中具有关联名称。(例如,Wandy与Alex相关联) 学生(但可能)不需要在此表中有相关​​的教授 一排(例如Linda(学生),Kelly(教授),Victor(教授)) 不能以任何方式相互关联。 但如果琳达与大卫有关,那绝对没问题。

问题是我不太明白一个列如何可以有不同表的ID(而且这些是多个!)并且不太了解如何为此构建有效的erd。 我会回答您需要的任何其他问题。非常感谢!

3 个答案:

答案 0 :(得分:1)

如果您只是想要学生和教授之间的关联 - 只需在ERD中建立多对多的关系。在逻辑(关系)模式中,它将创建一个带有Student键和教授表的外键的中间表。 但是从您的示例中看起来您需要为“PeopleEntries”设计数据库,这并不简单。 ERD似乎有以下实体:

  • 学生(身份证,姓名)
  • 教授(ID, 姓名)
  • PeopleEntries(ID,LoveCats, LoveDogs,LoveAnts)

关系(考虑到人们不能多次出现在参赛作品中):

  • 学生很多 - 1 PeopleEntries
  • 教授许多 - 1 PeopleEntries
  • 学生很多 - 很多教授

关系模式将包含表(根据erd关系的外键):

  • 学生(ID,姓名,PeopleEntryID FK
  • 教授(ID,姓名,PeopleEntryID FK
  • PeopleEntries(ID,LoveCats,LoveDogs, LoveAnts)
  • StudentProfessor(StudentID FK , 教授ID FK

我不知道如何实施约束,在概念层面(ER图)不允许来自同一条目的人之间的关联。在物理层面上,您可以在触发器或更新过程中实现逻辑以进行检查。

答案 1 :(得分:0)

根据我的快速理解,

创建包含以下列的表 PERSONNAME 指定 .....

再创建一个表

PERSONNAME LinksTo

在第二个表中,每个人条目将根据关系

有多个记录

答案 2 :(得分:0)

您想要一个联结表:

ID  StudentID   ProfessorID
0    23         34
1    22         34
2    12         33
3    12         34

在上表中,一位教授有3名学生,一名学生有两位教授。

StudentID和ProfessorID应该是避免重复关系的唯一索引。