ERD - 具有不同于超类的复合键的子类
ERD - Subclass with composite key that is different than superclass
我正在创建一个 ERD,我的一个子类具有与其超类不同的 PK,可以这样做吗?
我有一个超类 Accounts,它的 PK 是 Username,然后是 BannedAccounts它有 (Foreign Key) AccountsUsername 和 BanDate 作为它的 PK。
我之所以这么做是因为同一个账号可以被多次封禁
是否正确?
这是图表的图像:
https://prnt.sc/vfb56o
是的,这很好,而且这样做很常见。 table BannedAccounts
可以称为 事实 table,因为它形成了帐户数据点的时间序列。另一方面,Accounts
table 是一个 维度 table 因为它用于对事实数据进行分类。
另一种谈论它的方式是将实体分类为弱或强。 Account
可能是一个 强大的实体 因为它不依赖于其他实体的存在。相反,BannedAccounts
是一个弱实体,因为它的存在依赖于Accounts
;没有账号的定义,讨论哪些账号被封禁是没有意义的。
要定义关系,BannedAccounts
是一个 child 而 Accounts
是一个 parent 因为 BannedAccounts
引用 Accounts
的主键。该关系可以进一步分类为strong(或identifying)关系,因为BannedAccounts
的主键包含了整个主键Accounts
。如果 Accounts
的键是复合键(由超过 1 列组成),并且 BannedAccounts
没有在其主键中包含所有这些列,那么该关系将被称为 weak 或 无法识别。
我正在创建一个 ERD,我的一个子类具有与其超类不同的 PK,可以这样做吗?
我有一个超类 Accounts,它的 PK 是 Username,然后是 BannedAccounts它有 (Foreign Key) AccountsUsername 和 BanDate 作为它的 PK。
我之所以这么做是因为同一个账号可以被多次封禁
是否正确?
这是图表的图像: https://prnt.sc/vfb56o
是的,这很好,而且这样做很常见。 table BannedAccounts
可以称为 事实 table,因为它形成了帐户数据点的时间序列。另一方面,Accounts
table 是一个 维度 table 因为它用于对事实数据进行分类。
另一种谈论它的方式是将实体分类为弱或强。 Account
可能是一个 强大的实体 因为它不依赖于其他实体的存在。相反,BannedAccounts
是一个弱实体,因为它的存在依赖于Accounts
;没有账号的定义,讨论哪些账号被封禁是没有意义的。
要定义关系,BannedAccounts
是一个 child 而 Accounts
是一个 parent 因为 BannedAccounts
引用 Accounts
的主键。该关系可以进一步分类为strong(或identifying)关系,因为BannedAccounts
的主键包含了整个主键Accounts
。如果 Accounts
的键是复合键(由超过 1 列组成),并且 BannedAccounts
没有在其主键中包含所有这些列,那么该关系将被称为 weak 或 无法识别。