两个表互为外键怎么办? [问题点数: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;