为简单起见,假设我们有这两个表:
CREATE TABLE `tbl_companies` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `tbl_workers` (
`id` int(11) NOT NULL,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
还有2张表用来存储公司和工人之间的关系
CREATE TABLE `tbl_companies_workers` (
`company_id` int(11) NOT NULL,
`worker_id` int(11) NOT NULL,
PRIMARY KEY (`company_id `, `worker_id `)
);
CREATE TABLE `tbl_companies_workers_history` (
`company_id` int(11) NOT NULL,
`worker_id` int(11) NOT NULL,
`start` date NOT NULL,
`end` date DEFAULT NULL,
PRIMARY KEY (`company_id `, `worker_id `)
)
使用此架构,可以轻松显示类似以下内容:“John Smith 从 2010 年到 2012 年在 MyComp 工作”。但是,如果从 de DB 中删除 MyComp,则该信息也会被删除。即使公司被删除,我也希望能够显示相同的信息。
是否有可能在不失去参照完整性的情况下实现这一目标?最好的方法是什么?我一直在寻找一些信息,我找到了 this和this,但我仍然不清楚。
提前致谢。