【发布时间】:2013-10-05 18:05:57
【问题描述】:
我需要在我的Oracle 数据库中的Employees 和Hotels 表之间创建一个相交表:
一个Employee 可以在多个Hotels 中工作,一个Hotel 可以有多个Employees。
我认为我可能会不必要地混淆自己。
首先,我首先在Employees 表中的Employee-Hotel-ID 列和Hotels 表中的Hotel-ID 列之间创建一个FK。
但后来我意识到这不允许很多员工在很多酒店工作。
【问题讨论】:
-
好的 - 所以你需要 1) 一张员工表,2) 一张酒店表和 3) 第三张“WorksAt”表来代表你的 N::N 关系。
-
我第二个 paulsm4:s 评论。您正在寻找的是一个 Junction 表:en.wikipedia.org/wiki/Junction_table 只是一个小小的修正,它不是一个 n:n 关系,而是一个 m:n 关系。联结表通常是通过让一个表只有 2 个带有 FK 的主键来完成的。
-
"m:n" 是绝对正确的 :) 并且“连接表”通常会包含其他信息,例如班次# 或工资率(不同酒店的不同员工可能会有所不同)。跨度>
-
感谢您的回复。在这种情况下,我是否将hotelID 和employeeID 作为PK 添加到WorksAt 表中,并将外键添加到相应的表中?
-
@paulsm4,您愿意创建一个简单的连接表作为正式答案吗? (因为你是要回答的人)
标签: database oracle data-modeling