1

我可能在这里误用了属性一词。

我正在为服务学习部门设计一个数据库。

我对一对多的关系感到困惑。
假设我们有一个从一个 A多个 B的关系。
似乎存在一对多关系,例如上面的关系,您需要的关于A的唯一信息是它的名称,以及与之关联的实体列表。

我觉得我可能想多了,但我掌握了如何处理多对多关系而不是一对多关系的想法。对于如何处理这些情况,我将不胜感激。


例子

第一个例子: 一个独特的班级只有一个学期与之相关,但任何学期都提供许多班级。

在上面的例子中,我应该有一个关于课程的实体表并包含一个学期的列,还是我需要一个学期的实体表并列出每个学期提供的课程?

另一个例子: 每个教授是一个部门的一部分,每个部门都与许多教授相关联。

所以我没有在教授实体表中包括系,而是计划制作一个表来显示哪些教授在哪些系中。
但在我的任何阅读中,我都没有看到过这样的情况。

我希望专家或任何非新手都能清楚我的困惑。任何帮助深表感谢。

4

2 回答 2

2

关于您的班级和学期问题,您可能正在寻找交叉引用或映射表。(我也可能没有使用正确的术语!)

但是假设你有三个表:

SEMESTER
---------
ID (int)
Year (int)
Session (nvarchar)  -- values like 01, 02, 03 or Spring, Fall, etc.

CLASS
--------
ID (int)
Name (nvarchar)
Details (nvarchar)
...

SEMESTERCLASS
-------------
ID (int)
SemesterID (int)
ClassID (int)

所以 SemesterClass 表将 Semester 映射到 Class。这样,您的独特课程可以成为多个学期的一部分,并且一个学期可以有多个课程。

希望这是您正在寻找的。希望这会有所帮助。

于 2013-03-21T20:58:29.347 回答
0

多对多关系与连接到一个“链接表”的两个一对多关系相同(大卫示例中的学期课程)。当您创建多对多关系时,许多数据库软件(例如 Oracle)会为您创建“链接表”(它们通常具有难看的名称!)

于 2013-03-21T21:05:44.127 回答