EmpNo |名称| 报告给 | 房间 10 | 导演 | 空 | 1个 20 | 高级经理 | 10 | 2个 30 | 打字员 | 20 | (这个人指的是 empno 10 房间) 40 | 程序员 | 30 | 4个
我如何正确地使 EmpNo 30 的房间指他老板的房间,而不是让 EmpNo 40 指他老板的房间?
EmpNo |名称| 报告给 | 房间 10 | 导演 | 空 | 1个 20 | 高级经理 | 10 | 2个 30 | 打字员 | 20 | (这个人指的是 empno 10 房间) 40 | 程序员 | 30 | 4个
我如何正确地使 EmpNo 30 的房间指他老板的房间,而不是让 EmpNo 40 指他老板的房间?
在关系模型中,每一行代表一个表示单个项目的数据集,因此您不会“引用”另一行的值。
一名员工与另一名员工共用一个房间的概念实际上类似于您已经拥有的员工与经理的关系。这可以在表中类似地表示如下:
SharesRoomWith 中的 NULL 表示员工有自己的房间。然后您可以查询员工及其房间的列表:
要得到:
这样做的结果是,如果主管更换房间,则只会在一个位置(房间号)进行更新,而打字员的房间也会反映该更改。
请注意,此设计未完全规范化,因此可能不是理想的解决方案,但至少演示了如何表示该关系。
我不确定我是否完全理解这个问题。你是说打字员总是和他或她的主管在同一个房间里,如果主管移动,打字员也会移动?在这种情况下,将 Typists 房间设置为 NULL,并在需要时使用 SQL 获取他的房间: