加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

数据库设计 – 数据库设计:两个1到多个关系到同一个表

发布时间:2021-01-01 18:09:21 所属栏目:编程 来源:网络整理
导读:我必需成立一个环境,我有一个表Chequing_Account(个中包括预算,iban号码和帐户的其他具体信息),这些表必需与两个差异的表Person和Corporation相干,这两个表可以有0,1个或很多支票账户. 换句话说,我与统一个表Chequing帐户有两个1对多的相关 我想听听这个题目

我必需成立一个环境,我有一个表Chequing_Account(个中包括预算,iban号码和帐户的其他具体信息),这些表必需与两个差异的表Person和Corporation相干,这两个表可以有0,1个或很多支票账户.

换句话说,我与统一个表Chequing帐户有两个1对多的相关

我想听听这个题目的办理方案,它们遵守类型化要求.
我听过的大大都办理方案是:

1)找到Person和Corporation都属于的民众实体,并在此和Chequing_Account表之间建设一个链接表,这在我的环境下是不行能的,纵然它是我想办理一样平常题目而不是这个特定实例.

2)建设两个链接表PersonToChequingAccount和CorporationToChequingAccount,它们将两个实体与Chequing Accounts相干联.可是我不但愿两小我私人拥有沟通的支票账户,并且我不想让一个天然人和公司分享一个支票账户!看到这个图像

3)在Chequing账户中建设两个指向公司和天然人的外键,可是我会逼迫执行一小我私人和一个公司可以拥有很多支票账户可是我必需手动确保每个ChequingAccount行不是两个相关指向公司和天然人,由于一个checquing帐户是公司或天然人.看到这个图像

这个题目尚有其他更洁净的办理方案吗?

办理要领

相关数据库不是为美满地处理赏罚这种环境而构建的.您必需抉择什么对您最重要,然后举办衡量.你有几个方针:

>保持第三范式
>保持参照完备性
>维护每个帐户属于公司或天然人的束缚.
>保存简朴直接检索数据的手段

题目是个中一些方针彼此竞争.

子打字办理方案
您可以选择一种子范例办理方案,您可以在个中建设包括公司和职员的超范例.这种超范例也许具有子范例的天然键的复合键加上分区属性(譬喻customer_type).就类型化而言,这很好,它应承您逼迫执行参照完备性以及公司和职员彼此排出的束缚.题目是,这使得数据检索越发坚苦,由于当您将帐户插手帐户持有者时,您始终必需按照customer_type举办分支.这也许意味着行使UNION并在查询中包括大量一再SQL.

两个外键办理方案
您可以选择一种办理方案,个中您在帐户表中保存两个外键,一个到公司,一个到一小我私人.此办理方案还应承您保持参照完备性,类型化和互斥性.它还具有与子范例办理方案沟通的数据检索缺陷.现实上,这个办理方案就像子打字办理方案一样,只是你碰着了“更快”分支插手逻辑的题目.

然而,因为实验互斥束缚的方法,许大都据建模者会以为这种办理方案不如子打字办理方案.在子输入办理方案中,您可以行使键来逼迫实现互斥性.在两个外键办理方案中,您行使CHECK束缚.我知道有些人对搜查限定有不公道的成见.这些人更喜好将束缚保存在密钥中的办理方案.

“非类型化”分区属性办理方案
尚有另一种选择,您可以在chequing帐户表上保存一个外键列,并行使另一列来汇报您怎样表明外键列(RoKa的OwnerTypeID列).这根基上通过将分区属性非类型化为子表来消除子范例办理方案中的超范例表. (请留意,按照情势界说,这不是严酷的“非类型化”,由于分区属性是主键的一部门.)这个办理方案看起来很是简朴,由于它停止了有一个特另外表来做或多或少沟通的工作并且它将外键列的数目镌汰到一个.这个办理方案的题目在于它不会停止检索逻辑的分支,并且它不应承您维护声明性引用完备性. SQL数据库无法打点多个父表之一的单个外键列.

共享主键域办理方案
人们偶然处理赏罚这个题目的一种要领是行使单个ID池,这样就不会夹杂任何给定的ID,无论它是属于一个子范例照旧另一个子范例.这也许会在银行营业场景中很天然地施展浸染,由于您不会向公司和天然人发放沟通的银行帐号.这具有停止必要分区属性的利益.您可以行使或不行使超范例表来执行此操纵.行使超范例表应承您行使声明性束缚来逼迫独一性.不然,必需在措施上逼迫执行.此办理方案已类型化,但除非保存超范例表,不然不应承维护声明性参照完备性.它如故无法停止伟大的检索逻辑.

因此,您可以看到,现实上不行能拥有遵循全部法则的干净计划,同时保持数据检索的简朴性.你必需抉择你的衡量弃取.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读