数据库表的扩展性

在做数据库设计时,扩展性是一个必须考虑的问题。例如有这样的一个需求:一个地区表,存在地区的层次关系是国家-->省州-->城市。一开始只有前面的两层关系,我也没多想,就直接设计成了如下的结构:
RegionID   Country  State
1              中国       北京
2              中国       江苏
 
这种设计的扩展性很差,数据也冗余,在加上city的话,就会出现
 
RegionID   Country  State    City
1              中国       北京    北京
2              中国       江苏    南京
3              中国       江苏    苏州
 
对于这样的结构,设计时应该通过每条记录间的关系反映层次关系,而不是在一条记录中罗列的反映层次关系。正常的设计应该如下:
 
RegionID   ParentID  Region
1                0           中国
2                0           法国
3                1           江苏
4                3           南京
5                3           苏州
 
这样的设计,表的扩展会好一点,冗余也少很多。
posted @ 2012-09-01 22:31  永动机  阅读(943)  评论(0)    收藏  举报