锁定老帖子 主题:如何应对表结构经常变化?
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-31
改来改去确实很头疼,但没办法,为了生存
|
|
返回顶楼 | |
发表时间:2010-01-04
数据库设计需要用心去做
|
|
返回顶楼 | |
发表时间:2010-01-04
字段名动态化...
|
|
返回顶楼 | |
发表时间:2010-01-05
拥抱变化吧, 顺便让客户填写需求变更单
|
|
返回顶楼 | |
发表时间:2010-01-05
业务一直要变化,是否可以考虑在业务层上再抽象出一层,就像 jbpm
|
|
返回顶楼 | |
发表时间:2010-01-08
ywlqi 写道 我比较不喜欢预留字段的方法,看到预留字段的字段名就感觉难受,也想不明白等到业务需要时才“临时”增加字段有什么不可以
效率和安全性? 比如已经有以亿计算的数据时候,改动结构会有什么问题么? |
|
返回顶楼 | |
发表时间:2010-01-08
最后修改:2010-01-08
看来还是场景,或者说是行业的不一样,面临的情况差别很大
如果是银行、金融、电信之类的很成熟的核心业务,变化是不多的,但是,考虑一下像淘宝、腾讯这种很不成熟的业务,很多都是尝试性的东西,基本上一开始就想的很完善是很难的 还有,给客户做系统和做自己的系统,这个心态也完全不一样的 另外,对于互联网应用来说,因为要考虑7X24的问题,数据量很大要动态增加或者修改字段这个实在是很难的一件事情 |
|
返回顶楼 | |
发表时间:2010-01-08
最后修改:2010-01-08
表结构经常变化说明:
1 实体定义中有"易变的"attribute(比如age属性),你应该将其分解出来; 2 实体中杂合了太多的业务规则(比如顾客的消费总额与折扣率),你应该将其分离开来。 |
|
返回顶楼 | |
发表时间:2010-01-10
感觉楼主的第二种方法查询性能会有问题, 难道检索时还要根据位数截串吗? 海量数据怎么办? 此字段索引如何建立?
|
|
返回顶楼 | |
发表时间:2010-01-11
pf_miles 写道 agan??
我的看法是..数据库设计不为了“未来”而设计,所以我反对“预留字段”的方法; 依我个人的经验上讲,表结构做到3范式,并且任何字段都不带结构(只是一个意义单一的值而已),总体来说这样的数据库设计是很好扩展的; “很好扩展”基本上是指如果业务要新增概念,那么只需要通过添加字段或者添加新表完成扩展,而不是更改字段本身或者删除字段(有点“开闭原则”的意思,我觉得不管是对象设计还是数据库设计这点是部分共通的) 看得出来你已经对这些“很好扩展”的扩展进行抱怨了; 确实,如果业务变化很快,那么就算变化朝着正常方向发展(只增不删改),也不免会让人觉得烦; 我觉得这种烦恼很大部分是因为我们不仅在代码中维护了所有的业务概念,同时在关系型数据库表中也维护了一份业务概念——我们要具体到某个字段来存储,表结构实际上非常具体地展现了业务数据——这就导致业务一变,除了代码要变之外,数据库表结构也可能变; 这样我觉得有意思的事情就来了:你需要用数据库进行关系运算么? 数据库表非常具体地展现了所有的业务字段细节,为的是做关系运算,比如连接查询; 简单看了一下你提到的“复杂字段”和后面的“key-value”方案,如果这样的方案能满足你的业务需要,那么说明你的业务是不需要数据库做关系运算的,进而也不需要关系型数据库了...所以这里你不妨考虑一下对象数据库 就像bigTable一样,所有的东西都有一个identity取出来,以一个对象的形式,所有的业务逻辑就只存在于代码中 我也觉得不要为未来而设计预留字段! 我曾经在接收一个系统时,当时的同事预留了很多字段,真的没什么意义!计划永远赶不上变化!扩展并非能通过预留字段来解决问题。 |
|
返回顶楼 | |