软件工程数据库设计_第1页
软件工程数据库设计_第2页
软件工程数据库设计_第3页
软件工程数据库设计_第4页
软件工程数据库设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC++数据库编程2012-03-16总目录第一编数据库的设计第二编数据库建模工具第三编MFC下的数据库编程第一编数据库的设计数据库知识回顾数据库有哪些基本操作?创建登录帐户

建表空间建表加约束基本的数据操纵语句有哪些?语法是?增(INSERT)删(DELETE)改(UPDATE)查(SELECT)视图序列同义词索引……存储过程函数包触发器……本编目标了解设计数据库的步骤掌握如何绘制数据库的E-R图理解数据库的规范化-三大范式为什么需要设计数据库1-1修建茅屋需要设计吗?修建大厦需要设计吗?结论:当数据库比较复杂时我们需要设计数据库什么是数据库设计?数据库设计是规划和结构划数据库中的数据对象及这些数据对象之间关系的过程。为什么需要设计数据库1-2良好的数据库设计:节省数据的存储空间能够保证数据的完整性方便进行数据库应用系统的开发糟糕的数据库设计:数据冗余、存储空间浪费内存空间浪费数据更新和插入的异常软件项目开发周期2需求分析阶段:分析客户的业务和数据处理需求;概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;软件测试阶段:……安装部署:……现实世界建模信息世界数据库世界模型转换规范化设计数据库的步骤3-1收集信息:

与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务BBS论坛的基本功能:用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;设计数据库的步骤3-2标识对象(实体-Entity)

标识数据库要管理的关键对象或实体实体一般是名词:用户:论坛普通用户、各版块的版主。用户发的主贴用户发的跟贴(回贴)版块:论坛的各个版块信息什么是实体?实体指表中一行一行的特定数据,但我们在开发时,也常常把整个表也称为一个实体。设计数据库的步骤3-3论坛用户:呢称密码电子邮件生日性别用户的等级备注信息注册日期状态积分主贴发贴人发贴表情回复数量标题正文发贴时间点击数状态:最后回复时间回贴贴子编号回贴人,回贴表情标题正文回贴时间点击数版块版块名称版主本版格言点击率发贴数标识每个实体的属性(Attribute)什么是属性?属性可以理解为实体的特征。属性对应表中的列。设计数据库的步骤3-4标识对象之间的关系(Relationship)跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴;版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况;主贴和版块有主从关系:需要表明发贴是属于哪个版块的;跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的;什么是关系?关系是两个或多个实体之间的联系。绘制E-R图4-1E-R(Entity-Relationship)实体关系图符合含义实体,一般是名词属性,一般是名词关系,一般是动词绘制E-R图4-2管理bbsUser(用户,版主)……出生日期昵称版块名称版主……bbsSection(版块)绘制E-R图4-3映射基数映射基数表示可以通过关系与该实体关联的其他实体的个数。XXXXYYYY一对多XXXXY

YY多对一XXXXYYYY多对多一对一XXXXYYYY客户订单产品1

NM

N绘制E-R图1111M1MMMM用户积分性别用户等级备注信息注册日期版块名称本版留言发贴数状态密码昵称电子邮件生日论坛用户(BBSUser)管理发表发表跟随属于属于点击率版主标题发贴人贴子编号正文点击率版块(BBSSection)发贴(BBSTopic)发贴人正文状态贴子编号所在版块最后回复时间发贴表情回复数量点击率发贴时间标题M跟贴(BBSReply)所在版块发贴时间最后回复时间发贴表情1论坛E-R图

如何将E-R图转换为表5-1将各实体转换为对应的表,将各属性转换为各表对应的列标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列在表之间建立主外键,体现实体之间的映射关系

如何将E-R图转换为表5-2UID主键TID主键RID主键SID主键如何将E-R图转换为表添加各表之间的关系数据规范化6-1仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构DrE.F.codd最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:第一范式(1stNF-FirstNormalFromate)第二范式(2ndNF-SecondNormalFromate)第三范式(3rdNF-ThirdNormalFromate)数据库设计中的问题1.信息重复;2.更新异常;3.插入异常;4.删除异常(丢失有用的信息)…….表设计后,很可能结构不合理,出现数据重复保存,简称数据的冗余第一范式(1stNF)第一范式的目标是确保每列的原子性如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)BuyerIDCountryCity1142中国中国日本美国北京北京东京纽约………BuyerIDAddress1234中国北京市

美国纽约市英国利物浦日本东京市……第二范式(2ndNF)如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)第二范式要求每个表只描述一件事情SelectCourse字段例子学号姓名年龄课程名称001张三19C++实战成绩90学分5…

…Student字段例子学号姓名001张三Course字段例子课程名称学分C++实战5年龄19SelectCourse字段例子学号课程姓名001C++实战成绩90第三范式(3rdNF)如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)Student字段例子学号姓名年龄001李四18所在学院中兴软件学院地点南昌学院电话8185901Student字段例子学号姓名年龄001李四18所在学院中兴软件College字段例子学院名称中兴软件学院地点南昌学院电话8185901规范化实例7-1假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)公司定期制定一个工资报表,如图-1所示规范化实例7-2工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师60191140.00小计2945.00A2立交桥1001齐光明工程师6515975.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00图-1某公司的工资表规范化实例7-3工程号工程名称职工号姓名职务小时工资率工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1001齐光明工程师6513A1花园大厦1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014图-2某公司的项目工时表规范化实例7-41.表中包含大量的冗余,可能会导致数据异常:更新异常例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行添加异常若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)删除异常例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据规范化实例7-52.采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。一张表描述了多件事情,如图-3所示。应用范式规范化设计工程号工程名称职工号姓名职务小时工资率工时图-3函数依赖图工程信息员工信息项目工时信息应用第二范式规范化工程号工程名称职工号姓名职务小时工资率工程号职工号工时图-4

应用第二范式工程表员工表项目工时表满足第三范式吗?

应用第三范式规范化工程号工程名称职工号姓名职务职务小时工资率工程号职工号工时工程表员工表职务表工时表规范化和性能的关系为满足某种商业目标,数据库性能比规范化数据库更重要通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列(如成绩总分),以方便查询进行规范化的同时,还需要综合考虑数据库的性能。总结8-1在需求分析阶段,设计数据库的一般步骤为:收集信息标识对象标识每个对象的属性标识对象之间的关系在概要设计阶段和详细设计阶段,设计数据库的步骤为:绘制E-R图将E-R图转换为表格应用三大范式规范化表格总结8-2为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式。第一范式(1NF)的目标:确保每列的原子性。第二范式(2NF)的目标:确保表中的每列,都和主键相关第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关满足范式要求的数据库设计是结构清晰的,同时可避免数据冗余和操作异常。这并意味着不符合范式要求的设计一定是错误的,在数据库表中存在1:1或1:N关系这种较特殊的情况下,合并导致的不符合范式要求反而是合理的。第二篇数据库建模工具REWinVISIOPowerDesignerRose√√37PowerDesigner简易教程38大纲PowerDesigner简介及功能说明PowerDesigner的4种模型及相互转换PowerDesigner环境说明PowerDesigner操作说明将CDM对象转换为PDM对象正向工程与逆向工程数据库相关操作生成报表使用步骤PowerDesigner小结39PowerDesigner简介PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。它可与许多流行的数据库设计软件,例如:VC,Delphi,VB等相配合使用来缩短开发时间和使系统设计更优化。40DataArchitect:这是一个强大的数据库设计工具,使用DataArchitect可利用实体-关系图为一个信息系统创建"概念数据模型"-CDM(ConceptualDataModel)。并且可根据CDM产生基于某一特定数据库管理系统的"物理数据模型"-PDM(PhysicalDataModel)。还可优化PDM,产生为特定DBMS创建数据库的SQL语句并可以文件形式存储以便在其他时刻运行这些SQL语句创建数据库。另外,DataArchitect还可根据已存在的数据库反向生成PDM、CDM及创建数据库的SQL脚本。PowerDesigner的功能(1)41ProcessAnalyst:

这部分用于创建功能模型和数据流图,创建“处理层次关系”。AppModeler:

为客户/服务器应用程序创建应用模型。ODBCAdministrator:

此部分用来管理系统的各种数据源。PowerDesigner的功能(2)42PowerDesigner的4种模型概念数据模型(CDM)物理数据模型(PDM)面向对象模型(OOM)业务程序模型(BPM)43概念数据模型(CDM)概念数据模型(CDM)

CDM表现数据库的全部逻辑的结构,与任何的软件或数据储藏结构无关。一个概念模型经常包括在物理数据库中仍然不实现的数据对象。它给运行计划或业务活动的数据一个正式表现方式。概念数据模型是最终用户对数据存储的看法,反映了用户的综合性信息需求。不考虑物理实现细节,只考虑实体之间的关系。CDM是适合于系统分析阶段的工具。44物理数据模型(PDM)PDM叙述数据库的物理实现。

藉由PDM,你考虑真实的物理实现的细节。它进入帐户两个软件或数据储藏结构之内拿。你能修正PDM适合你的表现或物理约束。主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。PDM是适合于系统设计阶段的工具。45面向对象模型(OOM)面向对象模型(OOM)

一个OOM包含一系列包,类,接口,和他们的关系。这些对象一起形成所有的(或部份)一个软件系统的逻辑的设计视图的类结构。一个OOM本质上是软件系统的一个静态的概念模型。你使用PowerDesigner面向对象模型建立面向对象模型.(OOM)你能为纯粹地对象-导向的靠模切目的建立一个OOM,产生Java文件或者PowerBuilder文件,或你能使用一个来自OOM的物理数据模型(PDM)对象,来表示关系数据库设计分析。46业务程序模型(BPM)业务程序模型(BPM)

BPM描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。

BPM是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。

47CDMPDMOOM三者转换关系

CDM是一般的开始48PowerDesigner环境说明对象浏览器:对象浏览器可以用分层结构显示你的工作空间。输出窗口:显示操作的结果。结果列表:用于显示生成、覆盖和模型检查结果,以及设计环境的总体信息。图表窗口:用于组织模型中的图表,以图形方式显示模型中各对象之间的关系。49PowerDesigner环境示意图对象浏览器图表窗口输出窗口结果列表50PowerDesigner基本操作关于业务规则业务规则是业务活动中必须遵循的规则,是业务信息之间约束的表达式,它反映了业务信息数据之间的彝族完整性约束.每当信息实体中包含的信息发生变化的时候,系统都会检查这些信息是否违反特定的业务规则。当你使用业务规则约束CDM的时候,他们不被转变为可执行的代码。业务规则可能被实现为PDM的约束。5152如何创建业务规则从创建数据库的作用看,似乎只有约束(Constraint)和确认(Validation)是有意义的(生成完整性约束)建立规则后,再从实体中去选取相应的规则进行应用(也可手动键入约束,主键或外键亦可看成是一些特殊的约束)可以通过预览(Preview)查看生成的SQL脚本检查内容53一些重要操作关于数据项目:一个数据项目是一个基本信息。创建实体:DB相关的主键属性就是Identifiers。定义实体间的角色与联系定义和使用域:一个域定义你能适用于多个数据项目的标准数据结构。当你修正一个域时,你将更新全部与域关联的数据项目。当你作任何变化的时候,这导致数据一致化特性比较容易。这样,就可以创建一些自己常用的域,来应用到数据对象上,就不会导致相同的用途,但是数据类型和长度不一致。定义和使用继承54将CDM对象转换为PDM对象Tools->GeneratePhysicalDataModel数据库类型选择名称定义:设定组成物理对象名称规则错误检查无误后生成相应的PDM自动产生继承关系的父子实体(Table)55正向工程正向工程:你能直接地从PDM产生一个数据库,或产生一个能在你的数据库管理系统环境中运行的数据库脚本。可以生成数据库脚本,如果选择ODBC方式,则可以直接连接到数据库,从而直接产生数据库表以及其他数据库对象。Database->GenerateDatabaseDatabase->ModifyDatabase56逆向工程逆向工程:将已存在的数据库产生进新的PDM之内。数据来源可能是从脚本文件或一个开放数据库连接数据来源。当你逆向工程使用脚本的时候,你能使用一个单一脚本文件或一些脚本文件。File->ReverseEngineer->Database57数据库相关操作Database菜单包含主要的数据库操作连接数据库(Connect)产生数据库(GenerateDatabase)同步数据库(ModifyDatabase)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论