没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
2 / 88
目录
数据库设计 Step by Step (1)——扬帆启航 .................................................................................... 3
数据库设计 Step by Step (2)——数据库生命周期 ........................................................................ 8
数据库设计 Step by Step (3)——基本 ER 模型构件 .................................................................... 15
数据库设计 Step by Step (4)——高级 ER 模型构件 .................................................................... 21
数据库设计 Step by Step (5)——理解用户需求 .......................................................................... 27
数据库设计 Step by Step (6) —— 提取业务规则 ....................................................................... 34
数据库设计 Step by Step (7)——概念数据建模 ........................................................................... 38
数据库设计 Step by Step (8)——视图集成 .................................................................................. 46
数据库设计 Step by Step (9)——ER-to-SQL 转化 .......................................................................... 53
数据库设计 Step by Step (10)——范式化 ..................................................................................... 70
数据库设计 Step by Step (11)——通用设计模式 ......................................................................... 80
3 / 88
数据库设计 Step by Step (1)——扬帆启航
引言:一直在从事数据库开发和设计工作,也看了一些书籍,算是略有心 得。很久之前就
想针对关系数据库设计进行整理、总结,但因为种种原因迟迟没有动手,主要还是惰性使然。
今天也算是痛下决心开始这项卓绝又令我兴奋的工作。 这将是一个系列的文章,我将以讲
座式的口吻展开讨论(个人偷懒,这里的总结直接拿去公司培训新人用)。
系列的第一讲我们先来回答下面几个问题
数据库是大楼的根基
大多数程序员都很急切,在了解基本需求之后希望很快的进入到编码阶段(可能只有产出代
码才能反映工作量),对于数据库设计思考得比较少。
这给系统留下了许多隐患。许多软件系统的问题,如:输出错误的数据,性能差或后期维护
繁杂等,都与前期数据库设计有着密切的关系。到了这个时候再想修改数据库设计或进行优
化等同于推翻重来。
我经常把软件开发比作汽车制造。汽车制造会经过图纸设计,模型制作,样车制造,小批量
试生产,最后是批量生产等步骤。整个过程环环相扣,后一过程是 建立在前一过程正确的
前提基础之上的。如果在图纸设计阶段发现了一个纰漏,我们可以重新进行图纸设计,如果
到了样车制造阶段发现这个错误,那么我们就要把 从图纸设计到样车制造的阶段重来,越
到后面发现设计上的问题,所付出的代价越大,修改的难度也越大。
数据库是整个应用的根基,没有坚实的根基,整个应用也就岌岌可危了。
强大的数据库面对不良设计也无能为力
现代数据库管理系统(DBMS)提供了方便的图形化界面工具,通过这些工具可以很方便的
创建表、定义列,但我们设计出的结构好吗?
关系数据库有许多非常好的特性,但设计不当会使这些特性部分或完全的丧失。
我们来看看以下几个数据库不良设计造成的场景:
1. 数据一致性的丧失
一个订单管理系统,维护着客户和客户下的订单信息。使用该系统的用户在接到客户修改收
货地址的电话后,在系统的客户信息页面把该客户的收货地址进行了修改,但原先该客户的
订单还是送错了地址。
2. 数据完整性的丧失
公司战略转移,准备撤出某地区。系统操作人员顺手把该地区的配置信息在系统中进行删除,
系统提示删除成功。随后问题就来了,客服人员发现该地区的历史订单页面一打开就出错。
3. 性能的丧失
4 / 88
一个库存管理系统,仓库管理员使用该系统记录每一笔进出货情况,并能查看当前各货物的
库存情况。在系统运行几个月后,仓库管理员发现打开当前库存页面变得非常慢,而且整个
趋势是越来越慢。
上面这些场景都是由于数据库设计不当造成的,根源包括:设计时引入了冗余字段,没有设
计合理的约束,对性能没有进行充足设计等,上面的例子也只是沧海一粟。
数据库平台无关性
我在这个系列博客里讨论的数据库设计不针对任何一个关系数据库产品。无论你使用的是
Oracle,SQL Server,Sybase,亦或是开源数据库如:MySQL,SQLite 等,都可以用来实践我
们这里讨论的设计方法和设计理念,设计是这个系列博文的核心和灵魂。
注:在文中我会选用一个数据库产品来进行演示,大家可以选用自己熟悉的数据库产品来实
验。本文最后会给出一些免费数据库产品的链接,大家可以下载学习。
一起学习共同进步
无论你是数据库设计师,应用架构师,软件工程师,数据库管理员(DBA),软件项目经理,
软件测试工程师等项目组成员,都能从该系列博文中有所收获。大家一起讨论,共同进步。
内容涉及领域
我对这一系列博文现在的设想是涉及数据库设计的整个过程。从需求分析开始,到数据库建
模(概念数据建模),进行范式化,直至转化为 SQL 语句。
在我们一头扎进数据库设计之前,我们先了解一下除了关系型数据库之外的数据存储方式。
平面文件(Flat File)
包括以.txt 和.ini 结尾的文件。
eg: 一个.ini 文件的内容:
------------------------------------------------------------
[WebSites]
MyBlog=http://www.cnblogs.com/DBFocus
[Directorys]
Image=E:\DBFocus Project\Img
5 / 88
Text=E:\DBFocus Project\Documents
Data=E:\DBFocus Project\DB
------------------------------------------------------------
优点:
文件的存储形式非常简单,普通的编辑器都能对其进行打开、修改
缺点:
无法支持复杂的查询
没有任何验证功能
对平面文件中间的内容进行插入、删除操作其实是重新生成了一个新文件
适用场景:
存放小量,修改不频繁的数据,如应用配置信息
Windows 注册表
错误的修改 Windows 注册表会引起系统的紊乱,故不建议把很多数据存放在注册表中。
Windows 注册表为树形结构,存放着一些系统配置信息和应用配置信息。
通过把不同的配置存放在注册表的不同分支上,使得应用程序公共配置信息与用户个人配置
信息分离。
eg:某文档版本管理系统,能通过配置与本主机上安装的文件比较器建立关联进行文档比较。
这 是 一 个 公 共 配 置 信 息 , 文 件 比 较 器 路 径 可 以 存 放 在 注 册 表 的
HKEY_LOCAL_MACHINE\SOFTWARE 分支下。
同时该文档版本管理系统能记录用户最近打开的 10 个文档路径。这是用户个人配置信息,
对于不同的 Windows 用户最近打开的 10 个文档可以不同,这些配置信息可存放在注册表的
HKEY_CURRENT_USER\Software 分支下。
Excel 表单(Spreadsheets)
优点:
Excel 非常普及,用户对于 Spreadsheet 的表现形式非常熟悉
可以进行简单统计,方便出各种图表
缺点:
不适用于许多 Spreadsheet 之间关系复杂的情况
无法应对复杂查询
数据验证功能弱
适用场景:
数据量不是非常大的办公自动化环境
XML
XML 是一种半结构化的数据。相比于超文本标记语言(HTML),其标签是可以自行定义的,
即可扩展的。
eg:一个 XML 文件内容
剩余87页未读,继续阅读
shadow_wu82
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页