简单数据库设计实例.doc
《简单数据库设计实例.doc》由会员分享,可在线阅读,更多相关《简单数据库设计实例.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .数据库设计实例数据库设计是数据库应用系统设计的一个组成局部,其核心是针对于特定的应用环境,设计合理的数据模型,创立数据库及其应用系统,使之能够有效地存储和处理数据,以满足用户的应用需求。从实用角度出发,数据库设计可分为如下几个步骤:第一步:创立概念数据模型u 确定实体和关系u 确定属性u 规X化数据第二步:生成物理数据模型第三步:验证设计为便于学习者理解和掌握,下面结合具体的实例来讲解和展示数据库设计的详细过程。假定我们要开发一个小型的ERP系统,以管理公司内部资源,其应用业务场景描述如下:v512工作室由IT业界专业人士组成,在提供高端IT培训业务的同时,还自主制作并免费发布大量公益性
2、学习资源,工作室以公司形式运营,目前共拥有18名员工,这些员工分属于4个部门,且员工之间存在上下级管理关系。方案将来根据业务的开展设立更多的部门,聘用更多的员工。为保证质量,工作室对其成员的各项专业技能进展了级别评定。8.5.1确定实体和关系1. 确定高级别的活动要确定本ERP系统数据库设计中的实体和实体间关系,首先应明确要基于该数据库执行的高级别活动,这里所谓的高级别活动是指从用户的视角出发,确定本数据库设计中系统所涉及到的业务活动。比方,存储和维护员工的个人信息等。在前述的应用业务场景中,v512工作室需要考虑的高级别活动包括:- 聘用新员工- 辞退现有员工- 维护员工的个人信息- 增设新
3、部门- 裁撤现有部门- 维护部门信息- 维护工作室业务相关的技能信息- 维护各员工的业务技能掌握情况2. 确定实体接下来要确定的是,针对上述的高级别活动需要记录和维护有关哪些事物的信息,这些事物将被转换为实体。其中,员工相关信息可抽象为“Employee实体、部门相关信息可抽象为“Department实体、技能相关信息抽象为“Skill实体,为规X和方便起见,这些实体均采用英文命名,并尽量在名称中表达其含义。3. 确定关系进一步对上述高级活动进展分析,以确定实体间存在何种关系。具体包括:- Employee-Department实体之间存在隶属关系员工必须且只能隶属于某一个特定的部门,一个部门
4、可以包含0多名员工,此为一对多关系。这种从两个方向上对同一个关系的细化描述被称为关系的角色,每个关系都对应两种角色。- Employee-Department实体之间存在管理关系每一名员工可以管理01各部门,每个部门必须由一名员工负责管理其管理者不必须隶属于本部门,此为一对一关系。- Employee-Skill实体之间存在掌握关系每一名员工均应掌握1多项业务技能,每项技能可能被0多名员工掌握,此为多对多关系。- Employee-Employee实体之间存在管理关系每位员工由01位上级员工负责管理,有的员工可能没有上司比方公司经理,但有的话只能有一位直接上级。上级员工可以管理0多位为下级员工
5、。经分析而得的上述实体间关系如图8-14所示。图8-14数据库设计实例CDM之14. 将多对多关系更改为实体前文中已讲过,在多对多关系中,可能会出现有属性与关系相关联、而不是单纯的与实体相关联的情况,将这样的属性添加到任何一个实体中都是不合理的,此时应将该关系转换为、或者说定义为实体。我们这里的Employee与Skill实体之间就存在这种情况员工所掌握的技能工程及其评定等级信息就与两个实体之间的多对多关系相关联,因此将此多对多关系定义为“人力资源HR实体,转换后的实体-关系如图8-15所示。图8-15数据库设计实例CDM之2在实际的数据库应用设计中,更简单而可行的处理原那么是,将一切多对多关
6、系均转换为实体,而不必逐个对其进展细化分析,这样可以很好地解决违背数据库规X化第二X式的问题。5. 分解活动接下来,需要对前述的高级别业务活动做进一步分析,看是否可以将其中的局部或全部工程分解为相对低级别、或者说更细致的业务活动,比方,其中“维护工作室业务相关的技能信息这一高级别的活动可继续分解为:- 添加新的技能工程- 删除不再使用的技能工程- 维护/更新现有技能工程的详细详细最后一项高级活动“维护各员工的业务技能掌握情况也可以进展类似的分解。需要说明的是高级业务活动确实定以及这里的细化分解并没有一成不变的标准,这就好比实现某一预期功能的编程工作是没有标准答案的有的只是参考实现,其目的都是为
7、后续确实定业务规那么和实体属性等步骤提供便利,如果业务逻辑不是很复杂的话也可以一步完成,具体由数据库设计者自行把握即可。6. 确定业务规那么接下来要做的是,对前述业务活动进展再次分析,确定其应遵守的具体规那么。比方,一名员工必须且只能隶属于某一个部门就是一个业务规那么。业务规那么通常可以表示为一对一、一对多和多对多关系,或者相应的约束条件,这些规那么将来会表达到数据库的构造之中。本实例中相关的业务规那么如下:- 员工必须隶属于某一个部门- 员工编号一经确定不得更改- 员工的XX、性别、职务、所属部门等其它个人信息可以更改- 员工所掌握的技能工程及其评定等级可以更改- 每个部门允许设置0多部和前
8、述业务活动确实定及分解情况类似,业务规那么确实定以满足实际业务需要为准,注意不要搞得过于繁琐而失去其实用价值,具体详略程度需设计者根据经历自行把握,也可以待后续环节暴露出问题后再追溯回来,进展迭代处理。8.5.2确定属性首先,根据前述分析的业务活动的需要确定所有要记录和维护的数据条目,然后再将这些数据条目做为属性关联到相应的实体或关系中,比方:- 员工实体员工编号、员工XX、性别、职务、上司工号、工资、出生日期、所属部门- 部门实体部门编号、部门名称、部门经理、部门地址、- 技能实体技能编号、技能名称- 人力资源实体员工编号、技能编号、掌握程度设置属性后的实体-关系如图8-16所示。图8-16
9、数据库设计实例CDM之3其中,带有下划线的属性为所在实体的标识符。为实体或关系设置属性时,应尽量采用规X的命名规那么属性的名称应表达其含义、且应遵循统一的命名格式,以便于将来的使用和维护,比方,假定部门编号使用缩略名称dept_name,那么部门名称等相应的其它属性就不应该使用完整名称,如department_name,而应是其名称保持一致,如dept_name。在本阶段,设计者只需根据自己的经历和判断进展设计即可,而不必强求数据属性与实体间的关联关系一定是正确或合理的, 后续的环节还将对现有的数据模型进展规X化处理,以发现可能存在的问题并进展修正。8.5.3规X化数据前文中已经讲过,规X化数
10、据的目的在于防止出现数据冗余和操作异常,进而节省存储空间并更好地确保数据的一致性,实际上就是对所设计的数据模型进展一系列的规X化测试判断其是否满足指定的X式要求、发现问题并进展整改的过程。在进展数据的规X化测试之前,应先简单地罗列出各实体中的数据,并为每个实体确定一个唯一的标识符、以唯一地标识实体集中的每一个实体,标识符可以是一个属性、也可以由多个属性组合而成。实际上这一工作我们已经完成了,参见图8-16,其中,使用下划线标记的即为标识符属性,HR实体多对多关系转换而成的实体的标识符由其所依赖的两个实体的标识符emp_id和skill_id组合而成。1. 第一X式测试根据第一X式的要求,检查各
11、实体的属性是否存在多值的情况,这里的“多值指的是同一个属性在同一个实体上可以有几个不同的取值,如果有那么应将这样的属性从其所属的实体中删除掉,并用这些删除掉的属性创立新的实体和关系。在我们的设计实例中,假定一个部门可以有0多个,那么Department实体中的phone属性就存在多值的情况,解决方法是,将phone属性从Department实体中删除,并创立一个单独的Phone实体严格来说是实体集。此时,Department实体和Phone实体间存在一对多的关联关系每个部门可以有0多个,每个必须也只能隶属于某一个特定的部门。修正后的实体-关系如图8-17所示。图8-17 数据库设计实例CDM之
12、42. 第二X式测试第二X式要求各实体中所有非标识符属性都必须完全依赖于实体的标识符,如果存在非标识符属性局部依赖而不是完全依赖于该实体的标识符的情况,那么应从当前实体中删除这些属性、并将之参加到适合的实体中,其相关原理分析及具体做法前文中已有详细讲解。实际上,由于单个属性做为标识符的实体中不可能出现非标识符属性对标识符局部依赖的情况,我们只需检查那些由多个属性联合组成标识符的实体。本设计实例中,只有HR实体中存在两个属性emp_id和skill_id组合构成标识符的情况,而其skill_level属性确实完全依赖于这二者,故本设计已符合第二X式的要求。3. 第三X式测试第二X式要XX体中的属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 数据库 设计 实例
限制150内