我正在建模一个关系数据库,其中以下模式用于描述两个表:ERD Model。MySQL外键依赖关系解析
指定的规则是:
- 的办公室有一个经理
- 每名工作人员被分配到一个办公室
为了模拟这种我用ERD MySQL工作台创建,其中提供了以下DDL。
我的问题是,为了强制办公室必须有一个经理,办公室表中的外键不可空。同样,员工表中代表他们工作的办公室的外键对于每个员工都是必需的,因此而不是可以为空。这在模型中对我来说很有意义,但是对于实现来说,它使得不可能插入数据,因为每个数据都依赖于表中元组的存在。
我能想到的唯一答案是使键可以为空,以便一个人可以暂时存在而没有另一个。
这是解决问题的正确方法吗?数据库最终将被归一化为3NF或BCNF。
感谢您的回复。我确实考虑过这个。因此,如果我使用复合主键(Staff_ID + Office_Id)创建中间表,那么我将如何将一位经理分配到办公室。我可以将管理器外键保留在办公室表格中,但让它在交叉引用表中引用一行吗?再次感谢 –
如果您使用中间表,您将从Office中删除“管理器”字段,并将中间表的外键添加到“职员”和“办公室”。如果您在中间表中使用复合主键,则您可以在每个办公室插入多个管理员。您可以使用Office_Id作为唯一的主键,以便每个Office在中间表中只有一条记录。虽然如果你这样做,那么你根本不需要中间表,并且可以使用Office表中的管理员字段,因为办公室到管理员是1:1。 –