【Keep Thinking】第四期_项目数据库设计思路_by easy

基于E-R模型的数据库设计

笼统的说项目的数据库设计需要建立一个完备的数据模型,将项目应用投影到数据维度来分析和设计。另外对于初学者一定要熟悉数据里的表、视图、索引、约束条件等相关知识。另外数据模型设计也与我们的开发架构有一定关系。比如数据库选型,开发设计规范等。

基于实体关系建立数据库时,设计流程大致分为5步,画一个草图 或者使用powerdesigner 最差也要viso 画个模型(目前常用的实用化和产品化的数据库设计工具软件有Oracle公司推出的Design和Sybase公司的PowerDesigner,这些工具软件能自动或辅助设计人员完成数据库设计过程中的很多任务,对于开发大型项目效率很高,但对于初学者而言,使用起来还有一定的难度和复杂度。

第一步:需求分析阶段 -> 明确功能需求

进行数据库设计首先要了解与分析项目的功能作用以及用户的应用需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难、最费时的一步,所以做需求分析时一定要有相应的文档记录,因为所有这些东西在后续设计步骤里都是要用到的,(我们做这项目时就是因为当初文档不多需求分析做了,没有整理成文档记录,连DFD图都没画出来,只是我们小组成员讨论并走了一遍,一个月后当我做后续设计时就比较麻烦了)。
需求分析首先要收集资料,并对资料进行分析整理,小组讨论项目功能,画出数据流程图(Data Flow Diagam,DFD),然后建立数据字典(Data Dictionary,DD),并把数据字典图集和数据字典的内容返回客户(或者是你们自己再度讨论,实际应用时应该是反馈客户的。),进行用户确认(or小组确认),最后形成文档资料。需求分析是设计数据库的起点,需求分析的结果是否准确反映了客户的实际要求是否能够满足,项目的功能是否完善,将直接影响到后面各个阶段的设计,并间接决定你最终的成果。

第二步:概念设计阶段 -> 确定实体以及关系

根据第一步的分析,就很明确项目内容,数据库是用来做什么的,比如说,管理学员信息。。首先确定实体。对于一系列的行为,确定所管理信息所涉及到的主题范围。比如说学生是个实体,它有不同的属性:姓名、性别、学号等等,这些实体在数据库构建阶段将会以一张表的形式存在。

建立好E-R图后接下来一小步就是细化行为,从宏观行为开始,现在仔细检查这些行为,看有哪些行为能转为微观行为。比如说,对于管理商店信息:更新商品,更新商店信息,增删等。

最后一小步就是确定相应规则。也可以说是量化关系。(考量关系也是很重要的一步)

第三步:检验之前的设计

在完成设计之前,你需要确保它满足你这个项目的功能。检查你在一开始时所定义的行为,确认你可以获取行为所需要的所有数据:
1、你能找到一个路径来等到你所需要的所有信息吗?
2、设计是否满足了你的需要?
3、所有需要的数据都可用吗?
如果你对以上的问题都回答是,你已经差不多完成设计了

第四步:逻辑设计阶段

将上一步设计E-R图转换成具体DBMS产品支持的数据模型,如关系模型(基本表),形成数据库的模式,并对数据进行优化处理。然后根据实际需要,或基于安全性在基本表(TABLE)的基础上建立必要的视图(VIEW),形成数据库的外模式。

细节:

设计数据库的表属性
数据库设计需要确定有什么表,每张表有什么字段。对于每一字段,你必须决定字段名(字段名可以是字母、数字或符号的任意组合。然而,如果字段名包括了字母、数字或下划线、或并不以字母打头,或者它是个关键字那么当使用字段名称时,必须用双引号括起来---实际设计时选取的字段名都是有意义的英文单词之类的,便于管理员管理),数据类型及大小(要清楚有哪些数据类型,并不是所有数据库都是一样的),是否允许NULL值,以及你是否希望数据库限制字段中所允许的值。

选择约束

尽管字段的数据类型限制了能存在字段中的数据(例如,只能存数字或日期),你或许希望更进一步来约束其允许值。你可以通过指定一个“CHECK”约束来限制任意字段的值(例.constraint chk_Person CHECK (age>0 AND City='Sandnes')应该能看懂吧!)。你可以使用能在WHERE子句中出现的任何有效条件来约束被允许的值,尽管大多数CHECK约束使用BETWEEN或IN条件。

物理设计阶段就过了。。

第五步:数据库的实施以及后续阶段

运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。(这个就不多说了)

 

posted on 2013-08-14 14:19  rub_y  阅读(325)  评论(0)    收藏  举报

导航