我可能在这里滥用属性这个词。
我正在为服务学习部门设计一个数据库。
我对一对多关系感到困惑 假设我们有从一个到多个B 的关系 似乎存在一对多的关系,例如上面的关系,您需要关于 A 的唯一信息是其名称,以及与之关联的实体列表。
我觉得我可能会过度思考这一点,但我掌握了如何处理多对多关系而不是一对多关系的想法。对于如何处理这些情况,我将不胜感激。
第一个例子: 唯一的 Class 只有一个 Semester 与之关联,但是在任何学期都会提供许多课程。
在上面的示例中,我是否应该有一个关于Classes的实体表并包含Semester的列,或者我是否需要为Semester提供一个实体表并列出每个学期提供的类?
另一个例子: 每个教授都是 Department 的一部分,每个部门都与许多教授有关。
所以我没有在教授实体表中包括部门,而是计划制作一张表格,显示哪些教授在哪个部门。
但在我的任何阅读中,我都没有看到过那么多。
我希望专家或任何非新手都能清楚我的困惑。非常感谢任何帮助。
答案 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)在您创建多对多关系时为您创建“链接表”(它们通常具有难看的名称!)