一对多的关系。属性和实体?

时间:2013-03-21 20:50:20

标签: database-design

我可能在这里滥用属性这个词。

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

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

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


实施例

第一个例子: 唯一的 Class 只有一个 Semester 与之关联,但是在任何学期都会提供许多课程。

在上面的示例中,我是否应该有一个关于Classes的实体表并包含Semester的列,或者我是否需要为Semester提供一个实体表并列出每个学期提供的类?

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

所以我没有在教授实体表中包括部门,而是计划制作一张表格,显示哪些教授在哪个部门。
但在我的任何阅读中,我都没有看到过那么多。

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

2 个答案:

答案 0 :(得分: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。这样,您的独特课程可以是多个学期的一部分,一个学期可以有多个课程。

希望这就是你要找的东西。希望这会有所帮助。

答案 1 :(得分:0)

多对多关系与两个一对多关系连接到一个'链接表'(david的例子中的semesterclass)相同。许多数据库软件(如Oracle)在您创建多对多关系时为您创建“链接表”(它们通常具有难看的名称!)