两个表互为外键怎么办? set forign_key_checks = off;

两个表互为外键怎么办? [问题点数:40分,结帖人thinkermonkey]  

不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主  收藏 
.




thinkermonkey 


关注
thinkermonkey thinkermonkey 本版等级:T1 


结帖率:50% 
楼主   发表于: 2010-03-21 18:39:03  


.
比如:表1(省份):省份编号,省份名称,省会城市编号(fk)
       表2(城市):城市编号,城市名称,省会城市编号(fk)
省会城市编号(fk)和省会城市编号(fk)互为外键,如何插入删除,或者有其它的设计方法,万分感谢!!



   更多   分享到:  .
  .  
 


 
 
 
  


对我有用[0] 丢个板砖[0] 引用 | 举报  | 

 管理  回复次数:9  





.

.
   



ACMAIN_CHM 


关注
ACMAIN_CHM 版主 ACMAIN_CHM 本版等级:T12 


Blank 



 Blank 



 Blank 



 
更多勋章
 
#1 得分:10  回复于: 2010-03-21 18:44:57  

set @@foreign_key_checks=OFF 
临时关闭检查。 
 




对我有用[0] 丢个板砖[0] 引用 | 举报  | 

 管理   




thinkermonkey 


关注
thinkermonkey thinkermonkey 本版等级:T1 


 
#2 得分:0  回复于: 2010-03-21 19:47:39  

这样做好象比较被动,这个是不是屏蔽了所有外键,如果在这期间其它的外键有违返约束插入是不是不会报错啊,如果表1中省会城市暂时为空,以后如何加入呢,因为客户不知道哪个字段还没有加入!
上面这个表两个表可不可以从表设计方法有什么好的改动! 
 




对我有用[0] 丢个板砖[0] 引用 | 举报  | 

 管理   




geneshell 


关注
geneshell geneshell 本版等级:T2 


 
#3 得分:10  回复于: 2010-03-22 10:20:27  

表1(省份):省份编号,省份名称
表2(城市):城市编号,城市名称,省份编号(fk),省会标记

 可以根据省会标记这列来判断是否为省会,如是省会则记1,否则记0 
 

#4 得分:5  回复于: 2010-03-22 10:21:45  

但是在增加省会的时候,要把同省份的其他城市的这个标记清0 


如果有可能重新设计表结构。呵呵 
 

#6 得分:10  回复于: 2010-03-23 10:29:07  

比如:表1(省份):省份编号,省份名称,省会城市编号(fk)
表2(城市):城市编号,城市名称,省会城市编号(fk)
省会城市编号(fk)和省会城市编号(fk)互为外键,如何插入删除,或者有其它的设计方法,万分感谢!!

 *************************

 为什么表2的省会城市编号(fk)要以表1的省会城市编号为外键呢?就保留一个单方向的外键不就行了吗?
表1(省份):省份编号,省份名称,省会城市编号 (fk)
表2(城市):城市编号,城市名称,省会城市编号 (城市编号,省会城市编号为联合主键)

 


写错了,表2的'省会城市编号'应该是'省份编号',如果像‘geneshell’所说的设计,那如果要查一个省会城市,查询量可能要大很多! 
 


写错了,表2的'省会城市编号'应该是'省份编号',如果像‘geneshell’所说的设计,那如果要查一个省会城市,查询量可能要大很多!


 理论上会多花些时间,但是应该感觉不到吧,总共的数据量(表2)应该不到一千条。因为国内城市数也就六七百个吧。  




set forign_key_checks = off;  

 

posted @ 2017-07-07 10:57  sky20080101  阅读(445)  评论(0)    收藏  举报