小编den*_*ini的帖子

数据库设计:同一张表的两个一对多关系

我必须模拟一种情况,我有一个表 Chequing_Account(其中包含预算、iban 编号和帐户的其他详细信息),该表必须与两个不同的表 Person 和 Corporation 相关,这两个表都可以有 0、1 或多个支票帐户。

换句话说我有两个1对多关系,同一张表支票账户

我想听听尊重规范化要求的这个问题的解决方案。我听到的大多数解决方案是:

1) 找到一个 Person 和 Corporation 都属于的公共实体,并在它和 Chequing_Account 表之间创建一个链接表,这在我的情况下是不可能的,即使我想解决一般问题而不是这个特定实例。

2) 创建两个链接表 PersonToChequingAccount 和 CorporationToChequingAccount,它们将两个实体与支票账户相关联。但是我不希望两个人有同一个支票账户,也不希望一个自然人和一个公司共享一个支票账户!看到这张图片

http://i41.tinypic.com/35i6kbk.png

3) 在 Chequing Account 中创建两个指向 Corporation 和 Natural Person 的外键,但是我会因此强制一个人和一个公司可以拥有多个支票账户,但是我必须手动确保每个 ChequingAccount 行不是两个关系都指向公司和自然人,因为支票账户要么属于公司,要么属于自然人。看到这张图片

http://i40.tinypic.com/1rpv9z.png

这个问题还有其他更清洁的解决方案吗?

database-design

21
推荐指数
1
解决办法
3万
查看次数

数据库贯穿式设计与快速和肮脏的设计比较

以一个地址的表示为例,下面是一个完整且非常详细的实现:

地址表示

这里是一个快速实现(或多或少包含相同的字段,想象前者中的所有字段也包含在第二个中)

地址表示快速

如果我要决定哪个更接近规范化和学术上正确的,我会说第一个,但是如果我要开始一个项目,我会选择第二个。

你同意这个考虑吗?如果是,人们如何处理这一事实?

  1. 从一个简单的数据库开始,一到时候就将其改进为更规范化/学术化的数据库。
  2. 从尽可能接近学术数据库的内容开始
  3. 坚持快速而肮脏的解决方案

database-design database-recommendation

3
推荐指数
1
解决办法
591
查看次数