【发布时间】:2023-03-18 01:37:02
【问题描述】:
目前,我通过名为参与者的联接表在用户和事件之间建立了多对多关系。
user event participant
======== ======== =============
id id user_id
name title event_id
location
我想在活动中添加另一个表来表示用户事务,但我不确定我应该引用联接表还是两个单独的表。
我认为这两个选项是这样的:
user event participant transaction
======== ======== ============= ============
id id user_id id
name title event_id amount
location user_id
event_id
或者这个:
user event participant transaction
======== ======== ============= ============
id id user_id id
name title event_id amount
location participant_id
【问题讨论】:
-
好问题。从数据建模和性能的角度来看,IMO 2 都有效。您将解决方案与另一个解决方案保持一致的唯一原因主要是您查询数据库的方式,就数量和频率而言。例如,如果您的交易查询比您的参与者查询重,请选择解决方案 1。无论如何,我看到大师 @GordonLinoff 回答了,所以我会停在这里;)
-
我个人在这里,如果交易只能通过一个事件发生,那么第二个选项是合适的,如果进一步只允许一个交易,它也可以是
participant表的一部分,与第一个选项您在participant和transaction表中有冗余数据。也同意@Thomas 的观点并等待来自@GordonLinoff 的cmets
标签: sql postgresql database-design