一个想法是定义三个表:
CaseTbl Person CasePersonHistory
------------ -------------- ------------------
case_id (PK) person_id (PK) case_id (PK)
case_name etc etc... person_id (PK)
case_descr seq_num (PK)
etc etc... etc etc...
编辑:不能使用case 作为表名...请选择其他内容
CaseTbl 总是有一个 id...这是唯一的描述。 Person 也一样。 CasePersonHistory 提供案例和具有序列号的人之间的多对多关系,其中最高的 seq_num 将是当前拥有该案例的人,所有较低的 seq_nums 是以前拥有该案例的人.
例如,如果
fred's person_id = 54
mikes's person_id = 55
jane's person_id = 56
如果 case_id 是 1,而 Fred 最初有这个案子,然后把它交给了 Mike,然后 Mike 又把它交给了 Jane,那么 CasePersonHistory 看起来像......
CasePersonHistory
------------------
case_id person_id seq_num
-----------------------------------
1 54 1
1 55 2
1 56 3
现在您可以通过根据 case_id 从表中选择并找到序列号的最大值来找出该案例的当前所有者或所有者:
SELECT MAX(seq_num) FROM CasePersonHistory WHERE case_id = 1;
或者让目前拥有此案的人...
SELECT person_id FROM CasePersonHistory WHERE case_id = 1 order by seq_no DESC LIMIT 1
希望有帮助:)