横表就是普通的建表方式,如一个表结构为:
主键、字段1、字段2、字段3。。。
如果变成纵表后,则表结构为:
主键、字段代码、字段值。
而字段代码则为字段1、字段2、字段3。
纵表:
name course score
-----------------------------------------
张三 语文 80
张三 数学 75
张三 外语 60
李四 语文 90
李四 数学 85
李四 外语 70
王五 语文 95
王五 数学 80
王五 外语 75
横表:
姓名 语文 数学 外语
-----------------------------------------
张三 80 75 60
李四 90 85 70
王五 95 80 75
纵表对从数据库到内存的映射效率是有影响的,但细一点说也要一分为二:
纵表的初始映射要慢一些;
纵表的变更的映射可能要快一些,如果只是改变了单个字段时,毕竟横表字段比纵表要多很多。
我想这个还是在讨论如何优化数据库数据结构的问题,而我的意见是:如果有可能,还是不要用数据库的好,呵呵。
另:我亲身遭受过帐务系统表的横表和纵表的问题的折磨,横表使结构一目了然,但几乎不能扩展,当用户部署新业务时捉襟见肘,纵表似乎有无限的扩展性,但代价是有些凌乱,不便于理解,更要命的是数据管理上不够安全,我就知道某地方的帐务系统帐务配置表(纵表)被某位专家级操作者无意删除了一条,就是一条啊!结果......,而横表,你要改他的结构不是那么容易的,不过两者对帐务程序性能的影响几乎没有任何区别。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451781/viewspace-749926/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26451781/viewspace-749926/