一种想法是定义三个表:
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
用于表名...选择别的东西
总是有一个 id ......这CaseTbl
是唯一的描述。对Person
. CasePersonHistory
提供案例和具有序列号的人员之间的多对多关系,其中最高的seq_num
将是当前拥有该案例的人,所有较低seq_num
的 s 是以前拥有该案例的人。
例如,如果
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
希望有帮助:)