纵表和横表的相互转换

参考 https://www.cnblogs.com/wy123/p/6677073.html

https://blog.****.net/rongtaoup/article/details/82179055

https://blog.****.net/zhq651/article/details/52966912

 

1. ’“横表”,特点是,一个ID对应所有的值信息,以行Key-Value1-Value2-Value3的方式存储

纵表和横表的相互转换

2. 竖表(纵表),特点是每行仅存储该ID的某一个类别字段的值,以行的方式存储Key-Value的方式存储

纵表和横表的相互转换

3. 横表转竖表要点:对于横表里的一条数据,在转成竖表时,首先选定并去掉要在竖表中分行展示的字段(假设拿出了n个字段),再给此时的横表新增两个字段(一个用来记录去掉的字段名,一个用来记录该条数据对应的字段值)。这时原来横表里的1条数据在这里转成了竖表里的n条数据,每条数据中没有被去掉的字段值都重复出现,被去掉的字段在新增的两个字段里展示其字段名和字段值

例如下面的例子,横表转竖表时只转了水耗、电耗、热耗三个字段

纵表和横表的相互转换

                                               (横表)

 

纵表和横表的相互转换

                                                                                (竖表)

 

       横表的优点:横标的有点事显示的较为清晰直观,同时在字段的选择上更为科学合理,具体的字段可以根据具体情况划分字段类型,
  横表的缺点:不方便扩展和公用,也就是说设计了一张横标,只能在固定的某一种特定的相对不变的场景下使用,
        比如加字段,或者类似的业务想公用一张横表,都有局限

  竖表的优点:最大的特点是可以灵活扩展存储的内容,同时具有一定的公用性
        因为竖表的存储结构不受字段个数的限制,可以存储具有一定共性的业务数据。
  竖表的缺点:竖表的字段类型要兼容,比如横标可以根据具体的值设计成varchar,decimal,datetime等,
        横标为了兼容以上字段类型,只能设计成varchar的,可能会浪费一定的空间

       结论:应该把不容易改动表结构的设计成横表,把容易经常改动不确定的表结构设计成纵表。