数据库设计规则

弄清楚应用程序是什么性质的

  • 事务处理型(OLTP):应用程序的最终用户更关注数据的增删改查。
  • 分析型(OLAP):应用程序的最终用户更关注数据的分析、报表、趋势预测等功能。这一类数据库的插入、更新操作比较少。他们的主要目的是更快速地查询、分析数据。
  • 结论:如果你认为插入、更新、删除数据这些操作在你的程序中更为突出的话,那就设计一个规范化的表否则的话就去创建一个扁平的、不规范化的数据库结构。

把数据按照逻辑意义分成不同的块

这个规则其实就是 “三范式” 中的第一范式。违反这条规则的一个标志就是,你的查询使用了很多字符串解析函数,例如:substring、charindex。

图1如果要搜索Raju,除了遍历,还要把每个遍历的结果都拆分开了进行对比。因此,图2的设计会更好。
这里写图片描述
(拆分需要符合逻辑,不可过度使用)

对重复、不统一的数据进行重构

例如图1的数据,容易造成数据的混乱,因此换成图2的方法会更好管理数据。
这里写图片描述

这里写图片描述

字段不可再分

图1的课程不好管理,最好使用图2的方法。
这里写图片描述

这里写图片描述

所有字段必须完整地依赖主键而不是部分依赖

Syllabus:课程
Standard:课程级别

课程与课程级别有关,如果更改学生课程的话按照第一种方法需要把每个学生的课程都更改一遍。

这里写图片描述

仔细选择派生列

如下图所示,平均值可从表中数据获得。如果要开发事务处理型(OLTP)的应用程序(注重增删改查),就要尽量避免使用派生字段如平均值,除非迫切的性能要求,需要经常求和、计算等情况。
这里写图片描述

多维数据

OLAP项目主要是解决多维数据问题,下图的销售额是包含了三个维度的交叉。
这里写图片描述
正常而言,应该先创建一个简单的主要销售表,再通过外键把其他不同维度的表连接起来,如下图所示。
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值