外键应该引用哪个表?

4uqofj5v  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(280)

我有一个数据库和下表。

Entity (ID, EntityType),
Tickets (TicketId, ..., (TicketId refers Entity (ID)),
Contacts (ContactId, ..., (ContactId refers Entity (ID)).

我想在另一个表中复制票证数据,

TicketsDup (TicketID, ...).

在ticketsdup表中,ticketid应该引用实体表还是tickets表?
ticketsdup的作用是只存储活动的票证。因此,不活动的票证将从ticketsdup表中删除。但仍将存储在票务表中。用户可以将票据标记为活动的。在这种情况下,必须将票据插入ticketsdup表。此外,修改后的时间必须在票证表中更新。这就是我关心的地方。当插入子行时,mysql会阻止父行更新。这会导致死锁。将实体表引用为ticketsdup表是否错误?我希望这个问题不含糊。

rlcwz9us

rlcwz9us1#

我建议将每个新票证写入store表,然后将其复制到活动表中。所以id字段没有任何问题。
如果活动表中的票证已关闭,则将数据复制到存储表中,并将其从活动表中删除。
如果搜索票证,则首先搜索活动表,然后搜索存储表。
如果存储表中的票证标记为活动,则将其复制回活动表。
但是如果你没有那么多票的话,我只能坐一张table。我在一张table上放了6年的票,而且速度不会变慢。把它们标记为活跃和非活跃。我甚至不删除一张票,只是标记它已删除。

相关问题