版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据建模 数据库设计项目管理1 逻辑数据库设计1.1 项目管理1.1.1 数据需求1.顾问公司一个顾问公司有很多需要管理的项目。2.项目每个项目的详细信息包括项目编号、项目名称、计划开始日期、计划截止日期、实际开始日期、实际截止日期、工程计划费用、工程实际费用、客户编号、经理员工号。每个项目有一个用户和一个经理。在整个项目中,项目编号是唯一的。3.客户客户信息包括客户编号、客户姓名、客户地址(由城市、街道、州和邮政编码组成)、客户电话号、客户传真号、客户网址、联系人姓名、联系人电话、联系人传真号。其中客户编号唯一。4.工作包工作包信息包括工作包编号、计划开始日期、计划截止日期、实际开始日期、实
2、际截止日期、工程计划费用、项目实际费用、项目号。其中,工作包编号是唯一的。5.员工员工中每个成员的详细信息包括员工号、角色开始日期、姓名、地址(街区、城市、州、邮编)、工作电话号码、家庭电话号码、传真号、职位、性别、薪水、入职日期、角色号。在整个项目中,员工号是唯一的。员工包括经理、普通员工。6角色角色由角色编号、角色描述、单价。其中,角色编号唯一。7.文档文档编号、文档题目、文档日期、版本号、工作包号、撰写员工号。其中文档编号唯一。8.文档作者撰写文档的员工包括文档号和员工号。其中文档号和员工号唯一。9.费用费用包含信息为费用编号、支出日期、费用描述、花费金额、工作包号、员工号、费用类型号。
3、其中费用编号为主键。10. 费用类型费用类型包含信息为费用类型号、费用类型描述。其中,费用类型号是唯一的。11. 时间时间信息包含信息为工作包号、员工号、开始工作时间、结束工作时间、工作时间。其中工作包号和员工号唯一。12. 经理是员工种类的一种,管理项目,下属很多员工。包含信息为员工号、姓名、地址(街区、城市、州、邮编)、工作电话号码、家庭电话号码、传真号、职位、性别、薪水、入职日期。在整个业务中,员工号是唯一的。1.1.2 事务需求1.数据库应该支持下述事务(a) 创建和维护记录各项目的详细信息和每个员工的记录。(b) 创建和维护记录客户的详细信息和记录。(c) 创建和维护员工的详细信息。
4、(d) 创建和维护记录文档的详细信息和详细记录。(e) 创建和维护记录角色的信息。(f) 创建和维护记录工作包的详细信息。(g) 创建和维护记录费用类型的信息。(h) 创建和维护记录文档作者的详细信息和详细记录。2.数据应该能够支持下述查询事务(a) 以表单形式列出项目名字、经理名字、客户号、客户电话,按项目编码排序。(b) 以表单形式列出员工的姓名、号码、角色、工作时间,以及他们的项目的详细信息。(c) 以报表形式列出项目的费用以及费用类型。(d) 以报表形式列出项目的文档以及文档作者。1.2使用逻辑数据库设计方法1.2.1 步骤1.1: 标识实体逻辑数据库设计的第一个步骤是标识在数据库中必
5、须表述的主实体。有上面的描述,可以标识如下实体:project(项目)document(文档)client(客户) documentauther(文档作者)workpackage(工作包)expense(费用)employee(员工) 1.2.2 步骤1.2:标识关系标识完实体后,下一步就是标识存在于这些实体间的所有关系。对于房屋租赁公司的实体关系,如图所示。实体关系实体clientplaceprojectprojecthashasemployeeclientemployeeleaderhasmanageapproveworkonemployeemanagerprojectdocumentwo
6、rkpackagedocumentwrittenbydocumentauthorworkpackagecauseproduceexpensedocumentdocumentauthor writedocumentexpensecausedworkpackage图11. 确定关系的多样性约束标识完要创建的关系后,现在应该确定每个关系的多样性约束。实体多样性关系实体多样性client1.1placeproject1.*project1.11.1hashasemployeeclient1.*1.*employee1.11.11.11.11.*leaderhasmanageapproveworkone
7、mployeemanagerprojectdocumentworkpackage1.*1.*1.*0.*1.1document1.1writtenbydocumentauthor1.*workpackage1.*1.1causeproduceexpensedocument1.10.*documentauthor1.*writedocument1.1expense1.1causedworkpackage1.1图22. 使用实体-关系(er)建模在数据库设计阶段,将创建几个er模型。其中员工有自身的一对多的关系,员工和项目是多对多的管理关系,客户和项目是一对多的任命关系,员工和文档通过工作包具有多
8、对多的关系其中工作包产生文档,工作包和费用是一对一的产生关系,文档作者和文档是一对多的编写的关系。故有如下er图。图31.2.3 步骤1.3:标识实体或关系的有关属性下一个步骤是标识与已经标识的实体或关系有关的属性。对于项目管理而言,应该标识如图所示的与实体有关的属性。实体属性clientclientno clientname clientstreet clientcity clientstate clientzipcode clienttel clientfaxno clientwebadd contractname contracttel contractfaxno contractema
9、iladdprojectprojectno,projectname,plannedstartdate,plannedenddate,actualstartdate, actualenddate, projectedcost, actualcost, clientno, manageremployeenoemployeeemno、emname、emaddress(estreet、ecity、estate、ezipcode)、worktel、hometelno、emfaxno、emposition、emsex、emsalary、emtimedocumentdocumentno documentti
10、tle documentdate versionno workpackageno appbyemnoworkpackagewno plannedstartdate plannedenddate actualstartdate actualenddate projectedcost actualcost projectnodocumentauthordocumentno emnoexpenseexpenseno expensedate expensedescription expenseamount workpackageno emno expensetypeno图41.2.4 步骤1.4:确定
11、属性域现在要为上一步在数据字典中所标识的属性添加必要的属性域。1. 合法的电话号码的属性域是一个10位的数字串。1.2.5 步骤1.5:确定候选键、主键和备用键属性这个步骤主要是为实体标识候选键,然后选择其中之一作为主键。在标识主键的过程中,要特别注意实体是强实体还是弱实体。其中的分公司client离开了project将不存在,故client依赖于project为弱实体;employee离开了project还是存在的实体,故employee不依赖于project为强实体;documentauther为强实体。但是expense、document都是依赖于project而存在的,故二者均为弱实体
12、。在标识候选键时,应该注意到各个实体的主键及环境的考虑。如图所示。1.2.6 步骤1.6:特化和泛化实体在employee中包含manager,故可泛化出1个实体。1.2.7 步骤1.7:检查模型的数据冗余现在得到了一个项目管理的逻辑数据模型。但是这个数据模型包含一些应该被删除的冗余。特别需要注意的是:1. 重新检查一对一关系。2. 删除冗余关系。1.2.8 步骤1.8:检查模型是否支持用户事务在这个步骤中,检查已经创建的局部逻辑数据模型是否支持用户所需的事务。检查包括:1.数据模型中是否存在必要的属性。2.如果属性要从多个实体中得到,则两个实体间是否有通路;换而言之,在两个实体间要有已经标识
13、了的关系。1.2.9 步骤2.1:创建表在这个步骤中,从逻辑数据模型创建表达用户视图中所描述的实体和关系的表,这时,要为关系数据库使用数据库设计语言(ddl)。将从逻辑数据模型创建表的全部结构都存档。create table project(projectno char(10) primary key,projectname char(15) not null,plannedstartdate datetime not null,plannedenddate datetime not null,actualstartdate datetime not null,actualenddate da
14、tetime not null,projectedcost char(10) not null;actualcost char(10) not null;clientno char(10) not null;manageremployeeno char(10) not null;)create table employee(emno char(10) not null primary key,emname char(10) not null,emstreet char(10) not null,emcity char(10) not null,emstate char(10) not null
15、,emzipcode char(10) not null,emtel char(10) not null,emposition char(10) not null,emsex char(10) not null,emsalary char(10) not null,roleno char(10)not null,foreign key roleno references role (roleno);create table client(clientno char(10) not null primary key,clientname char(10) not null,clientstree
16、t char(10) not null,clientcity char(10) not null,clientstate char(10) not null,clientzipcode char(10) not null,clienttel char(10) not null,clientfaxno char(10) not null;clientwebadd char(10) not null,contractname char(10) not null,contracttel char(10) not null,contractfaxno char(10) not null;contrac
17、temailadd char(10) not null,);create table role(roleno char(10) not null primary key,roledescription char(50) not null;billingrate char(10) not null;);create table workpackage(wno char(10) not null,plannedstartdate datetime not null,plannedenddate datetime not null,actualstartdate datetime not null,
18、actualenddate datetime not null,projectedcost char(10) not null;actualcost char(10) not null;projectno char(10) not null;);create table document(documentno char(10) primary key,documenttitle char(15) not null,documentdate datetime not null,versionno char(15) not null,workpackageno char(15) not null,
19、appbyemno char(15) not null,foreign key workpackageno references workpackage (workpackageno),foreign key appbyemno references employee (employeeno),);create table documentauther(documentno char(10),emno char(10) not null,foreign key documentno references document (documentno),foreign key emno refere
20、nces employee(emno);create table expense(expenseno char(10) primary key,expensedate datetime not null,expensedescription char(50) not nullexpenseamount char(10) not null,workpackageno char(10) not null,emno char(10) not null,expensetypeno char(10) not null,foreign key workpackageno references workpa
21、ckage (workpackageno),foreign key emno references employee(emno)foreign key expensetypeno references expensetype (expensetypeno);create table expensetype(expensetype no char(10) not null primary key,expensetype description char(50) not null;);create table timebooked(wno char(10) not null,emno char(1
22、0) not null,datestartwork datetime not null,dateendwork datetime not null,timeworked datetime not null,foreign key workpackageno references workpackage (workpackageno),foreign key emno references employee(emno);1.3.0 步骤2.2:用规范化方法检查表结构在这个步骤中,要确保上一步所建的表至少要满足第三范式(3nf)。如果满足不了第三范式,则可能是逻辑数据模型中的某些部分是错误的,或者
23、是从模型产生表的时候产生了错误。1.3.1 步骤2.3:检查模型是否支持用户事务这个步骤与步骤1.8类似,在这个步骤中,除了要检查从实体到表的映射关系并且要确定外键之外,在这个情景下,还可以再次检查从实体到表的映射是否正确地完成,以及所创建的表是否支持标识的用户事务。1.3.2 步骤2.4:检查业务规则业务规则是为了防止数据库不一致而强加的约束。六种完整性约束中,有四种在上一步已经标识了,并且存档在数据字典中。这四种是:需要的数据、属性域的约束、实体完整性和多样性。剩下两种为:参照完整性和其他业务规则。1.参照完整性考虑两点:(1)标识外键是否可以为空(null)。通常,如果关系中子表部分是强
24、制的,那么就不允许为空。如果子表部分是可选的,那么就允许为空。(2)标识现有约束条件,表明外键的插入、更新或者产出情况。通常,要为每个外键明确说明两个动作:一个是on update动作,另一个是on delete动作,用于表明当在父表中更新或删除一条记录时,如何保证参照完整性。2 物理数据库设计2.1步骤3.1:设计基本表在逻辑数据库设计阶段,创建了一些描述逻辑数据模型中的实体关系和关系的基本表的设计包括:对每个表,包括它的属性、主键、备用键、外键和完整性约束。对每个属性,包括它的域、可选的默认值、是否可以为空和是否是派生的。基本表的设计还包括,使用这些信息去定义域、默认值和空指示符。211创
25、建基本表下面利用orcale为例建表,因此可以这样定义:主键,使用primary key子句。备用键,使用unique子句。非空列,使用notnull子句。外键,使用foreignkey子句。其他列或表约束,使用check和constraint子句。2.2.2 建立空表 create table project(project no char(10) primary key,projectname char(15) not null,plannedstartdate datetime not null,plannedenddate datetime not null,actualstartda
26、te datetime not null,actualenddate datetime not null,projectedcost char(10) not null;actualcost char(10) not null;clientno char(10) not null;manageremployeeno char(10) not null;)create table employee(emno char(10) not null primary key,emname char(10) not null,emstreet char(10) not null,emcity char(1
27、0) not null,emstate char(10) not null,emzipcode char(10) not null,emtel char(10) not null,emposition char(10) not null,emsex char(10) not null,emsalary char(10) not null,roleno char(10)not null,foreign key roleno references role (roleno);create table client(clientno char(10) not null primary key,cli
28、entname char(10) not null,clientstreet char(10) not null,clientcity char(10) not null,clientstate char(10) not null,clientzipcode char(10) not null,clienttel char(10) not null,clientfaxno char(10) not null;clientwebadd char(10) not null,contractname char(10) not null,contracttel char(10) not null,co
29、ntractfaxno char(10) not null;contractemailadd char(10) not null,);create table role(roleno char(10) not null primary key,roledescription char(50) not null;billingrate char(10) not null;);create table workpackage(wno char(10) not null,plannedstartdate datetime not null,plannedenddate datetime not nu
30、ll,actualstartdate datetime not null,actualenddate datetime not null,projectedcost char(10) not null;actualcost char(10) not null;projectno char(10) not null;);create table document(documentno char(10) primary key,documenttitle char(15) not null,documentdate datetime not null,versionno char(15) not
31、null,workpackageno char(15) not null,appbyemno char(15) not null,foreign key workpackageno references workpackage (workpackageno),foreign key appbyemno references employee (employeeno),);create table documentauther(documentno char(10),emno char(10) not null,foreign key documentno references document (documentno),foreign key emno references employee(emno);create table expense(expenseno char(10) primary key,expensedate datetime not null,expensedescription char(50) not nullexpenseamount char(10) not null,w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水痘患儿的饮食与护理建议
- 气管插管患儿的体温管理
- 护理工作创新思维与实践
- 护理部在产科中的服务
- 护理课件学习者参与度评价
- 2026年大模型成本效益分析每任务0.04美元性价比
- 2025年前台服务规范考核卷
- 2026年区块链技术在智能物流装备租赁与管理中的应用
- 2026年数字孪生未来十年关键技术攻关方向与挑战
- 2026年飞地经济合作与产业共建模式分析报告
- 安徽省江南十校2026届高三上学期综合素质检测英语试卷(含音频)
- 2026山东青岛新泊控股集团有限公司社会招聘10人笔试模拟试题及答案解析
- 2026年预包装食品购销合同(1篇)
- 2026云南昆明巫家坝商业运营管理有限公司校园招聘8人考试备考题库及答案解析
- 【新教材】人教PEP版(2024)四年级下册英语 Unit 1 Class rules 教案
- 露天矿山节后复工安全培训
- (2025年)医学基础知识考试试题库与答案
- 《2025年新湘教版六年级下册小学信息科技备课教案》
- 2026年甘肃省公信科技有限公司面向社会招聘80人(第一批)笔试模拟试题及答案解析
- 金属冶炼培训
- 2026年中级消控岗位能力测试题目及答案
评论
0/150
提交评论