【原创】不定字段的数据库表设计思路

有个同事问我一个问题,简单的描述就是,如何动态的给表实体增加列。举个例子,有一个商品表:
[code]id,名称,价格,描述,产地[/code]
建表如下:

create table product(
n_id number,
c_mc varchar(10),
n_jg number(10,2),
c_ms varchar(200),
。。。。。。
)

 假如未来需要增加新的属性,怎么办呢?表已经建好,难道要动态的增加列吗?我曾经面临过这个问题,实体要动态的增加属性,增加的又是未知类型未知长度,怎么办呢?
参考我曾经收藏的一篇文章吧:

http://www.tuicool.com/articles/RF7f2y

 
说下我的看法:
1.在数据库中,避免在业务逻辑中执行动态的ddl,如创建表,修改表等。
2.避免动态创建列,或者说避免横向扩展,本着一个原则,只要表创建了,就不应该由业务逻辑来修改它,只能由dba或者在升级的时候修改。
3.非要扩展,也应该纵向扩展,以记录的形式迂回实现,因为这样扩展性好。如果动态增加列,假如属性增加到几十万,根本没有这么宽的表了,而纵向扩展不存在这个问题。简单的说就是列转行。

posted on 2014-03-19 10:02  迷途@书童  阅读(1718)  评论(0编辑  收藏  举报

导航