数据库设计 – 数据库设计:两个1到多个关系到同一个表
我必须建立一个情况,我有一个表Chequing_Account(其中包含预算,iban号码和帐户的其他详细信息),这些表必须与两个不同的表Person和Corporation相关,这两个表可以有0,1个或许多支票账户. 换句话说,我与同一个表Chequing帐户有两个1对多的关系 我想听听这个问题的解决方案,它们遵守规范化要求. 1)找到Person和Corporation都属于的公共实体,并在此和Chequing_Account表之间创建一个链接表,这在我的情况下是不可能的,即使它是我想解决一般问题而不是这个特定实例. 2)创建两个链接表PersonToChequingAccount和CorporationToChequingAccount,它们将两个实体与Chequing Accounts相关联.但是我不希望两个人拥有相同的支票账户,而且我不想让一个自然人和公司分享一个支票账户!看到这个图像 3)在Chequing账户中创建两个指向公司和自然人的外键,但是我会强制执行一个人和一个公司可以拥有许多支票账户但是我必须手动确保每个ChequingAccount行不是两个关系指向公司和自然人,因为一个checquing帐户是公司或自然人.看到这个图像 这个问题还有其他更清洁的解决方案吗? 解决方法关系数据库不是为完美地处理这种情况而构建的.您必须决定什么对您最重要,然后进行权衡.你有几个目标:>保持第三范式 问题是其中一些目标相互竞争. 子打字解决方案 两个外键解决方案 然而,由于实施互斥约束的方式,许多数据建模者会认为这种解决方案不如子打字解决方案.在子输入解决方案中,您可以使用键来强制实现互斥性.在两个外键解决方案中,您使用CHECK约束.我知道有些人对检查限制有不合理的偏见.这些人更喜欢将约束保留在密钥中的解决方案. “非规范化”分区属性解决方案 共享主键域解决方案 因此,您可以看到,实际上不可能拥有遵循所有规则的干净设计,同时保持数据检索的简单性.你必须决定你的权衡取舍. (编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |