数据库/数据结构设计时的横表纵表选择

最近在给项目做数据结构设计。
由于介入项目稍晚,原有数据结构已经大体定型,金融行业相关的项目,特别是钱相关的数据,有非常大的不确定性和扩展性要求,因此这几天一直为数据库采用横表纵表头痛。。。

---------------------------------------------------

横表:
    当前主流的/常见的建表模式,将一条数据横向排列,通常是一条数据体现对象的各种属性。正常结构为主键、字段1、字段2、字段3……。

横表的优缺点:
    优点:一条对应一个对象(或对象中部分属性),一目了然,可读性高,符合面向对象思想,同时便于编码阶段使用,开发维护难度低。
    缺点:没有扩展性,当出现需求变更时,只能强硬的增加字段、修改表结构。

---------------------------------------------------

纵表:
    类似于Map,采用键值对的形式存储数据,对应一个实体对象每个属性为一条属性,用于记录每个属性的值。正常结构为主键、字段名、字段值。

纵表的优缺点:
    优点:扩展性优。对象增加属性时,仅增加一条数据即可,对金融行业这种不确定费用项的场合尤其适用。
    缺点:可读性低,可维护性低,不体现面向对象思想。进行查询或统计时编码较复杂,如果设计的不够合理甚至会导致开发瓶颈。

---------------------------------------------------

当前我个人的选择:
    采用横纵结合的形式,主体为横表,主体对象中的不确定部分采用纵表。将一些固定项用横表形式存储,即时变更的数据采用纵表形式存储。
    不过这种横纵结合的形式,有领导说不太好,会导致开发更加复杂,我个人暂时没发现复杂的地方,反而比纯纵表要便于开发很多。。。。。有待开发过程中进行验证。

猜你喜欢

转载自alubio201312090130.iteye.com/blog/2183286
今日推荐