数据库的设计主要是用来存储数据,业务层面的数据,要存储到数据库中,有多种实现方式,比较常用的两种实现方式
1) 纵向摆放数据
2)横向摆放数据
1)什么情况下纵向摆放数据
例如:客户资料的存储,因为各个客户的资料千差万别,有些属性是别的客户所没有的属性,这样的话如果横向摆放的话,一个客户增加一个属性,那么这个客户表就要加多一列来存放变化的客户信息,为了一个客户信息的变化而增加一列,不是很好的解决方法,这样数据库的扩展性就大大受到了限制,程序方面也要做相应的变化。维护性,扩展性都不强。
Customer | |||||
ID | CustomerCode | Name | ContactPerson | Address1 | Address2 |
1 | A001 | ACIT | 李小姐 | 越秀区 | 天河区 |
例如上面的表是一个客户表,如果客户在有一个联系人的话就要在加多一个栏位。
所以这样数据摆放不是很好。这种情况就要横向摆放。
CustomerProperty | customer | ||||
ID | Name | ID | CustomerPropertyID | Value | |
1 | 公司名称 | 1 | 公司名称 | ACIT | |
2 | 公司代码 | 2 | 公司代码 | A001 | |
3 | 联系人 | 3 | 联系人 | 李小姐 | |
4 | 地址1 | 4 | 地址1 | 越秀区 | |
5 | 地址2 | 5 | 地址2 | 天河区 |
2)什么情况下横向摆放
当你判断当前的业务需求,在将来一段时间内固定不变的时候,可以考虑横向摆放。
例如 报价系统当两个供应商的价格进行比较的话。几个参数比较固定:金额差,绝对增幅,年度增幅。这种情况下就可以考虑横向摆放
也可以纵向摆放,看你怎么取舍,那一边站的比率比较大,就站在那边。毕竟纵向摆放有一个转换(要进行行列转化。数据库性能上有点损耗。)