二维数据表的形式以表1为例,
表1
浩口镇 | 后湖农场 | 总口农场 | 龙湾 | |
1级 | 356.4 | 34.78 | 2567.9 | 78.5 |
2级 | 234.6 | 66.7 | 345.1 | 52.7 |
3级 | 125.7 | 98.0 | 555.5 | 33.9 |
表1可转换为一维的数据表如下,
表2
等级 | 乡镇名 | 面积 |
1级 | 浩口镇 | 356.4 |
1级 | 后湖农场 | 34.78 |
1级 | 总口农场 | 2567.9 |
1级 | 龙湾 | 78.5 |
...... | ||
3级 | 龙湾 | 33.9 |
用XML对表2描述如下:
<Item Grade="1级" Town="浩口镇">356.4</Item>
<Item Grade="1级" Town="后湖农场">34.78</Item>
<Item Grade="1级" Town="总口农场">2567.9</Item>
......
<Item Grade="3级" Town="龙湾">33.9</Item>
表2是数据库的存储形式,其XML描述方式和从数据库转换为XML的形式相同。不难发现,这种方式的冗余度较高,直接对表1进行描述能否降低冗余度呢?尝试得到下面的结果:
<GradeGroup Name="1级">
<Item Town="浩口镇">356.4</Item>
<Item Town="后湖农场">34.78</Item>
<Item Town="总口农场">2567.9</Item>
<Item Town="龙湾">78.5</Item>
</GradeGroup>
......
<GradeGroup Name="3级">
......
<Item Town="龙湾">33.9</Item>
</GradeGroup>
比较以上两种描述方案,那一种更有效?
1、表1的描述便于统计,如对“1级”的面积求和;表2的描述中Item的顺序如果不按照Grade排列的话,统计面积相似复杂。
2、如果对"浩口镇"各等级面积求和,表1的描述需要在每一个GradeGroup中查找对应的Item,表2的描述中也需要遍历所有Item,两种情况的复杂度相同
3、查找指定级别和乡镇的面积时,如“浩口镇”“1级”的面积,表1的描述的复杂度显然要低于表2的复杂度
4、用XSLT转换为HTML,表1的描述似乎更容易显示为表1的形式
还有没有更好的描述方法