2011-06-15 36 views
0

表:
学生
教授
项(有数据库中的条目没有物理表intry然而,这个表是在前端,所以它可能是由多个辅助表,如果由。我们需要他们只需要创建有效的ERD)问题上的数据库建模

Preambula: 一个学生可以有一个关联到很多教授 一位教授可以有一个关联到很多学生 一个条目可以有0,1或更多的学生或教授在里面。需要 教授与一个或更多的学生有任何教授 协会它应该更喜欢这个(前端条目表) 学生不需要相关:

enter image description here

任何教授(例如Wandy与Alex关联) 学生(但可能)不需要在此表中有相关​​的教授 一行(例如Linda(Student),凯利(教授),维克多(教授)) 不能以任何方式相互关联。但是,如果琳达与大卫联系在一起,那绝对没问题。

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

回答

1

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

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

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

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

关系模式会(根据ERD关系外键)包含表:

  • 学生(身份证,姓名,人民邮政编码FK
  • 教授(ID,姓名,PeopleEntryID FK
  • PeopleEntries(ID,LoveCats,LoveDogs, LoveAnts)
  • StudentProfessor(StudentID FK, ProfessorID FK

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

0

按我的理解快,

与下面的列 PERSONNAME 指定 创建一个表.....

再创建一个表

PERSONNAME LinksTo

在第二个表中每个人的条目将有多个记录基于关系

0

你想结合表:

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

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

StudentID和ProfessorID应该一起成为唯一索引以避免重复关系。

+0

学生不需要教授。在这种情况下,我们需要教授。所以我们需要的是一个或另一个,但“其他”(这是教授)应该与学生有联系 – user194076 2011-06-15 02:45:53