那些不是选项。它们是完全不同的东西,它们需要完全不同的表。痛苦的部分是表格中的数据可能看起来完全相同。以下是区分它们的方法。
关系数据库中的每个表都有一个且只有一个谓词。谓词确定表中行的含义。所以一个数据看起来像这样的表
Name Company
--
Gili Microsoft
Marc Oracle
可能意味着
Person named "Gili" is currently an employee of company "Microsoft".
Person named "Marc" is currently an employee of company "Oracle".
这样的表格会排除顾问,因为他们不是员工。 (无论如何,在美国他们不是。)
但这可能意味着
Person named "Gili" once was an employee of company "Microsoft".
Person named "Marc" once was an employee of company "Oracle".
而且该表也允许
Person named "Gili" once was an employee of company "Oracle".
不同的谓词,不同的表。 (这意味着你必须以不同的方式构造表来捕捉谓词的含义。)
你不能拥有的是一张表,意味着
Person named "Gili" is currently an employee of company "Microsoft".
Person named "Marc" once was an employee of company "Oracle".
一张表中有两个不同的谓词。在关系系统中做不到。
所以,如果你的谓词归结为这个
Person named NAME is currently an employee of company COMPANY.
那么您必须在此人更换雇主时更新 COMPANY。如果你的谓词归结为这个
Person named NAME once was an employee of company COMPANY.
那么您必须在此人更换雇主时插入一个新行。