惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
量子位
雷峰网
雷峰网
宝玉的分享
宝玉的分享
V
Visual Studio Blog
博客园_首页
小众软件
小众软件
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
S
SegmentFault 最新的问题
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学

博客园 - 足够有晋

ReflectedSchemas应该定期清理否则会占用大量C盘空间 IIS7的应用程序池 iis7 应用程序池回收设置 学习资产项目后的心得 删除SQL日志语句,经测试8G日志文件都可以删除 高效的SQL语句翻页代码 ExtJS Combobox 属性详解和默认值选中(转) 关于document.all.item方法在ie8下报脚本错误的问题 Asp.net iFrame 传值(转) - 足够有晋 Asp.net C#代码操作Excel 调整格式(转) 水晶报表,解决——提示“您请求的报表需要更多信息.”(转) - 足够有晋 - 博客园 VS2008 水晶报表 打印对话框无法下载问题的解决办法(转) - 足够有晋 C# 将数据导出到Excel汇总Webform,Winform(转) 删除表记录中重复的字段(转) 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档 问题的一种解决办法 - 足够有晋 解决Excel导入时必须默认Sheet1工作簿问题 幸福是什么 linq to sql 使用试图做数据源 翻页时出现的异常的一种解决办法 获取表记录的小工具
数据库设计中的一些小经验,拿来分享一下(有血的教训)。
足够有晋 · 2011-12-14 · via 博客园 - 足够有晋

  在以往的数据库设计中遇到一些问题,由于当时缺乏经验造成了一些影响,所以在今后的工作中要加强这些地方的考虑。

1.对价格,温度等有可能变化的数据,在引用的地方只保存了相应的ID,而没有保存具体内容。比如:产品表里面有:名称、价格、类型等字段。订单表里面只存了产品ID,这样当产品价格变化时,再统计时价格就和当初订货价格不一样了。所以在订单表里面需要保存订货时的价格。

2.通过多级关系来获取相应记录。比如:文件表里面有创建人ID对应人员表,人员表里面有部门表ID。这样当过滤部门条件时,直接可以找到部门信息。但是这没有考虑到人员调整部门的情况,如果人员部门变化了,就会造成该人员创建的文件记录都跑到新的部门名下了。所以文件表还必须保存一个部门表的ID。

3.一些当时认为不会变化的数据几年后发生了变化。最明显的就是省市区名称变化。刚开始工作时,一个项目中对区县记录没做基础表,而且数据库里面直接存的就是区县的名称,当时考虑不会变化的,但是过了几年区县规划了,这时就造成就很大的问题,解决这个问题花费了大量人力和时间。此后再做项目时就把所有基础项都建立了相应基础表,使用的地方也都引用外键来处理。

4.对应图片、文件之类的保存在数据库表里面,还是保存的项目的相应文件夹里面,对这个问题一直没有完善的解决办法。存数据库表的一个字段里面,这样好处是备份方便,只有把数据库备份了所有数据都丢不了,缺点是数据库会越来越大,有的项目几个后数据库都有10G以上了。 保存在项目文件夹里面正好相反。

5.一些表建立的是联合主键,这种造成一些操作很麻烦,而且效率也不高。所有以后在建表时都建立唯一自增主键,这样维护起来很方便,对于主从表操作也简便。

  以上都是在SQLServer数据库上的经验,其他数据库没试过。