日期:2014-05-17  浏览次数:20741 次

小弟请教一个关于外键设计的问题~
如果要设计4张表:省、市、区、街道,那么是每个表持有他上级的外键好,还是持有他所有上级的外键好?
比如:街道拥有区、市、省3个外键好还是街道只拥有区这1个外键好?麻烦说下理由吧。。。

------解决方案--------------------
下级表如果没有持有上级表数据的外键,则无法从下级访问上级数据,比如你获取一个武汉市(市级表),要通过武汉市这条数据访问该市所在的省份数据(省级表),则不能达到目的。如果持有外键,则需要维护数据的一致性,如果上级主键变了,你这个主键也要跟着变。其实我建议还是有外键好,毕竟变的可能性不是很大。
------解决方案--------------------
这个也和楼主的业务有关系了,如果并不从接到越级去查省、市表就只保持其上级表的主键即可。
------解决方案--------------------
探讨

引用:

下级表如果没有持有上级表数据的外键,则无法从下级访问上级数据,比如你获取一个武汉市(市级表),要通过武汉市这条数据访问该市所在的省份数据(省级表),则不能达到目的。如果持有外键,则需要维护数据的一致性,如果上级主键变了,你这个主键也要跟着变。其实我建议还是有外键好,毕竟变的可能性不是很大。


那比如说街道,是街道这张表是创建3个外键(区、市、省)好,还是只……

------解决方案--------------------
当然只保留上一级的外键即可。这样可以将数据的耦合度降到最低。