好的,这是我的问题的细分。我有两张桌子:
员工和Taken_Treatments。以下是每个表的列列表:
员工表:
Taken_Treatments:
我有5名员工和7次治疗。
现在问题是:我解雇了一名员工,因此我必须从员工表中删除他的条目。我已经处理了外键约束以及问题开始的地方:我有三个选择:
对于员工表,在同一个表中雇用和解雇员工不是一个好习惯。此外,在Taken_treatments表上,我不能为员工提供空值,我也不希望既不用另一个员工ID更新表,也不想用被解雇的医生删除Taken_Treatment条目。
所以,我想这样做:我不想永久地删除员工,而是想把他放到另一张桌子上(比如前雇员)所以Taken_Treatment条目保持不变(比如存档),这样的事情是可能的吗? - 谢谢 -
答案 0 :(得分:1)
对不起,我这里没有明确的回答。你正处于一个相当大的冰山一角 - 一个典型的时态数据库问题,加上可能的第四和第五范式问题。在数据库设计阶段必须解决这类问题。
如何设计表格取决于数据库的总体目的和目标。主要问题:
“修复”取决于欲望/要求,正如您所看到的那样,它很快变得复杂。假设您需要长时间保留数据并假设营业额,我建议在Employees表中添加“Started”和“Departed”等日期时间列,以便您确定他们何时是“活跃”员工(如果{ {1}},他们是前雇员。您没有在Taken_Treatment中指出“治疗时间”栏,这是您的业务的相关属性吗? ......以及设计问题上的问题。
答案 1 :(得分:1)
因为您希望Taken_Treatment
条目保持不变(这意味着它们仍然指向被解雇的EmployeeID
,直到您更新它们),您无法从表中删除已解雇的员工。外键不能引用多个列,例如您似乎要求使用Former_Employees表。
我建议一个简单的TerminationDate
列,对于活跃的员工通常为空,或者如果您不能使用空值,则建议引用EmployeeID的Terminated_Employees
表。