数据库设计中数据摆放的方法
2010-04-10 17:45
225 查看
数据库的设计主要是用来存储数据,业务层面的数据,要存储到数据库中,有多种实现方式,比较常用的两种实现方式
1) 纵向摆放数据
2)横向摆放数据
1)什么情况下纵向摆放数据
例如:客户资料的存储,因为各个客户的资料千差万别,有些属性是别的客户所没有的属性,这样的话如果横向摆放的话,一个客户增加一个属性,那么这个客户表就要加多一列来存放变化的客户信息,为了一个客户信息的变化而增加一列,不是很好的解决方法,这样数据库的扩展性就大大受到了限制,程序方面也要做相应的变化。维护性,扩展性都不强。
例如上面的表是一个客户表,如果客户在有一个联系人的话就要在加多一个栏位。
所以这样数据摆放不是很好。这种情况就要横向摆放。
2)什么情况下横向摆放
当你判断当前的业务需求,在将来一段时间内固定不变的时候,可以考虑横向摆放。
例如 报价系统当两个供应商的价格进行比较的话。几个参数比较固定:金额差,绝对增幅,年度增幅。这种情况下就可以考虑横向摆放
也可以纵向摆放,看你怎么取舍,那一边站的比率比较大,就站在那边。毕竟纵向摆放有一个转换(要进行行列转化。数据库性能上有点损耗。)
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 | 天河区 |
当你判断当前的业务需求,在将来一段时间内固定不变的时候,可以考虑横向摆放。
例如 报价系统当两个供应商的价格进行比较的话。几个参数比较固定:金额差,绝对增幅,年度增幅。这种情况下就可以考虑横向摆放
也可以纵向摆放,看你怎么取舍,那一边站的比率比较大,就站在那边。毕竟纵向摆放有一个转换(要进行行列转化。数据库性能上有点损耗。)
相关文章推荐
- 方法多维数据仓库(八):数据仓库中数据库设计的基本模型
- 数据仓库数据库设计方法---关系模型和多维模型比较分析
- 对数据库数据操作,工厂方法设计模式(Factory Method)
- 数据仓库数据库设计方法---关系模型和多维模型比较分析
- 存储动态数据时,数据库的设计方法
- C#一次性向数据库插入上万条数据的方法
- javascript 用Activex方法调用数据库中的数据,只可用于IE
- 篮球赛场数据统计系统数据库设计实例
- mysql数据库删除数据库以及从数据库中拷贝数据表的方法
- Oracle 数据库迁移数据的建议方法(ASM 到 本地硬盘,或者本地硬盘到 ASM)
- 数据库设计方法
- 数据库设计指南(四)保证数据的完整性
- 关于数据库数据导出、生成脚本方法
- 数据库——mysql数据导入导出方法
- 当只需要查找一列数据的时候 用这种方法减少数据库的访问
- 删除数据库中重复数据的几个方法
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- SharePoint 2010 Reporting Services 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥 解决方法
- 从数据库中取出数据导入到xml中的方法
- 数据库连接,查询和插入数据的方法