数据库设计 - 具有不同属性的相同实体

时间:2017-09-06 14:10:24

标签: database database-design

我正在研究货币交易平台。

发件人始终是具有特定属性的注册用户。

接收者可以是已经在平台上注册的用户(具有相同的属性)或平台外的用户(在这种情况下,他们的银行账户详细信息需要保存在不同的表中)。

我遇到的问题是有一个帮助识别接收器的外键。

首先,我知道一个外键不能引用多个表,所以我在transaction表中添加了两个可以为空的外键,并引用这两种用户类型。

这样,至少有一个外键有一个值,有助于识别哪种类型的用户是接收者。

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

更安全的方法是将用户表组合到一个表中,该表包含已注册和未注册用户的记录。然后,您的交易表将只有一个外部密钥供收件人使用。

您需要将根据用户是否注册而不同的字段分解为单独的配置文件表。 users最终可能包含registered_profilesunregistered_profiles表的双重外键。但是,这比transactions表中的双外键更可靠,因为如果用户同时拥有这两个外键,您就知道总是喜欢注册的配置文件。

一般而言,您希望不确定性的范围尽可能地受到限制。无论收件人是注册还是未注册,交易都无关紧要 - 这只对用户有用。