设为首页 - 加入收藏 华夏网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 2017 2018 什么 市场
当前位置: 主页 > 编程 > 正文

数据库 – 如何在“菱形”关系系统中保持外键关系的一致性

发布时间:2021-01-19 15:15 所属栏目:[编程] 来源:网络整理
导读:考虑这种情况:从销售人员处购买汽车.销售人员在陈列室(仅在一个陈列室)工作.陈列室隶属于制造商,仅销售该制造商生产的汽车.同时,Car是特定型号,而型号由制造商制造. 限制R:汽车模型的制造商必须与汽车销售员的陈列室附属制造商的制造商相同. 该图显示了明显

考虑这种情况:从销售人员处购买汽车.销售人员在陈列室(仅在一个陈列室)工作.陈列室隶属于制造商,仅销售该制造商生产的汽车.同时,Car是特定型号,而型号由制造商制造.

限制R:汽车模型的制造商必须与汽车销售员的陈列室附属制造商的制造商相同.

该图显示了明显的外键关系.

---->  Manufacturer  <----
     |                        |
     |                        |
 Showroom                     |
     ^                        |
     |                      Model
     |                        ^
Salesperson                   |
     ^                        |
     |                        |
     ---------  Car  ----------

你如何执行限制R?您可以添加外键关系Car – >制造商.然而,汽车的制造商可以通过在“钻石”周围以这种或那种方式连接表来建立,所以这肯定不会被规范化吗?然而,我不知道如何强制执行约束.

解决方法

如果我正确地理解了这个问题,那就应该接近了.

这里有一些关键的细节

--
-- Keys for SalesPerson
--
alter table SalesPerson
  add constraint PK_salesperson primary key (PersonID),add constraint AK1_salesperson unique (ManufacturerID,ShowRoomNo,PersonID),add constraint FK1_salesperson foreign key (PersonID)
                           references Person (PersonID),add constraint FK2_salesperson foreign key (ManufacturerID,ShowRoomNo)
                         references ShowRoom (ManufacturerID,ShowRoomNo)
;

--
-- keys for Sale table
--
alter table Sale
  add constraint PK_sale primary key (SaleID),add constraint FK1_sale foreign key (BuyerID)
                    references Person (PersonID),add constraint FK2_sale foreign key (ManufacturerID,ModelName,ShowRoomNo)
                references CarDisplay (ManufacturerID,ShowRoomNo),add constraint FK3_sale foreign key (ManufacturerID,SalesPersonID)
               references SalesPerson (ManufacturerID,PersonID)
;

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章