一个让我困惑很久的设计问题(希望大家关注!) (30分)

  • 主题发起人 主题发起人 manplx
  • 开始时间 开始时间
M

manplx

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是问题描述:
A表(fa char(4) primary key) 另外有B表已经有一个属性(fb1 int primary key)
问:A表能不能和B表发生二次关系,也就是说:A表能不能二次将其主键迁移到B表,形成B表二个外键?(例如通过PD软件等等)
具体例子如下:
A表为星座表,包含星座名称,星座编号二个字段xzb(xzmc varchar(50) ,xzbh char(4) pk )
B表为男女速配表,包含男的星座编号,女的星座编号,信息三个字段spb(xzbh1 char(4) pk , xzbh2 char(4) pk,message varchar(50))
通过二个人的星座编号确定一个信息.
那么,能不能二次将其主键迁移到男女速配表,形成男女速配表二个外键吗?
我在SQL Server 中创建二个关系,并选择了级联更新和删除后,存储关系时候提示如下:
- 不能创建关系 'FK_spb_xzb1'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY 约束 'FK_spb_xzb1' 引入表 'spb' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。请参阅前面的错误信息。
请大家探讨这个问题!!!!

 
最后关系表B的正式名称应当是男女星座关系对照表吧?
这个表的产生是实际上是男人星座、女人星座两个表组成的,而星座可以对应男人星座、女人星座

星座

男人星座 女人星座
星座和人的关系
在你想要的迁移中,并没有把性别和星座组合的唯一性体现出来。
 
谢谢回答,进一步解释,是这样的,通过ERwin 或者是PD等CASE工具,建表时候,是这样的,先建星座表,包含星座名称,星座编号二个字段xzb(xzmc varchar(50) ,xzbh char(4) primary key )
建男女速配表(spb)时候,开始只建信息一个字段,因为其他二个字段可以通过和星座表发生关系而迁移。
那么,究竟迁移二个字段合理吗?
还有,可以同时写二个触发器,当xzb的xzbh字段更新时候,自动更新spb的xzbh1和xzb2字段吗?我试了一下,写一个可以。。
如果有二个就会有错误,我给出一个sql server的提示错误,供参考
- 不能创建关系 'FK_spb_xzb1'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY 约束 'FK_spb_xzb1' 引入表 'spb' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束
 
试试:
表中一个ID来唯一识别B表中的记录,这个ID是PK,而xzbh1 char(4) pk ,
xzbh2 char(4) pk,两个不做为主键。
 
什么是导致循环或多重级联路径?
 
很遗憾,我在别的地方得到答案了。
 
后退
顶部