ERD - 具有不同于超类的复合键的子类

ERD - Subclass with composite key that is different than superclass

我正在创建一个 ERD,我的一个子类具有与其超类不同的 PK,可以这样做吗?

我有一个超类 Accounts,它的 PK 是 Username,然后是 BannedAccounts它有 (Foreign Key) AccountsUsernameBanDate 作为它的 PK。

我之所以这么做是因为同一个账号可以被多次封禁

是否正确?

这是图表的图像: https://prnt.sc/vfb56o

是的,这很好,而且这样做很常见。 table BannedAccounts 可以称为 事实 table,因为它形成了帐户数据点的时间序列。另一方面,Accounts table 是一个 维度 table 因为它用于对事实数据进行分类。

另一种谈论它的方式是将实体分类为Account 可能是一个 强大的实体 因为它不依赖于其他实体的存在。相反,BannedAccounts是一个弱实体,因为它的存在依赖于Accounts;没有账号的定义,讨论哪些账号被封禁是没有意义的。

要定义关系,BannedAccounts 是一个 childAccounts 是一个 parent 因为 BannedAccounts 引用 Accounts 的主键。该关系可以进一步分类为strong(或identifying)关系,因为BannedAccounts的主键包含了整个主键Accounts。如果 Accounts 的键是复合键(由超过 1 列组成),并且 BannedAccounts 没有在其主键中包含所有这些列,那么该关系将被称为 weak 无法识别