我必须模拟一种情况,我有一个表 Chequing_Account(其中包含预算、iban 编号和帐户的其他详细信息),该表必须与两个不同的表 Person 和 Corporation 相关,这两个表都可以有 0、1 或多个支票帐户。
换句话说我有两个1对多关系,同一张表支票账户
我想听听尊重规范化要求的这个问题的解决方案。我听到的大多数解决方案是:
1) 找到一个 Person 和 Corporation 都属于的公共实体,并在它和 Chequing_Account 表之间创建一个链接表,这在我的情况下是不可能的,即使我想解决一般问题而不是这个特定实例。
2) 创建两个链接表 PersonToChequingAccount 和 CorporationToChequingAccount,它们将两个实体与支票账户相关联。但是我不希望两个人有同一个支票账户,也不希望一个自然人和一个公司共享一个支票账户!看到这张图片
3) 在 Chequing Account 中创建两个指向 Corporation 和 Natural Person 的外键,但是我会因此强制一个人和一个公司可以拥有多个支票账户,但是我必须手动确保每个 ChequingAccount 行不是两个关系都指向公司和自然人,因为支票账户要么属于公司,要么属于自然人。看到这张图片
这个问题还有其他更清洁的解决方案吗?
以一个地址的表示为例,下面是一个完整且非常详细的实现:
这里是一个快速实现(或多或少包含相同的字段,想象前者中的所有字段也包含在第二个中)
如果我要决定哪个更接近规范化和学术上正确的,我会说第一个,但是如果我要开始一个项目,我会选择第二个。
你同意这个考虑吗?如果是,人们如何处理这一事实?