一起学习ERWin
学习软件的方式 学习背景知识----主要部分 指导设计 学习软件的使用 熟练工种 设计需要灵感与创意
ERWin是干什么的? ERWin是一个数据建模工具,它能帮助设计一个信息系统。使用ERWin可以清晰地表示实体间的引用完整性,而且它独立于任何关系数据库。此外它能对建立的模型进行评估,并从该模型产生一个特定数据库的模式。
内容导航 背景知识 逻辑模型的创建 定义实体 定义实体间的关系 模型的规范化 创建物理模型 ERWin的其他特性
背景知识 数据模型和功能模型 高层模型和低层模型 一些基本的标记 命名规定
数据模型和功能模型 同等重要、共同发展。分析功能模型,能揭示新的数据需要,并使该数据能满足功能的要求。讨论数据模型,能分析出新的功能需求。
高层模型和低层模型 高层模型 ER图和Key-based模型,ER图描述主要的实体和它们的关系。Key-based模型描述主要的数据结构以及它们的主键,它比ER图揭示更多的细节。 低层模型 Fully-Attributed 模型和 Transformation 模型,Fully-Attributed 模型是一个3NF数据模型,它包含所有的实体、属性和关系。Transformation 模型是一个基于特定DBMS优化的数据模型,它描述最终的物理数据库设计。
一些基本的标记
命名规定 命名是一个习惯问题,从一开始就应该养成一个好的习惯,有利于模型的简练和清晰。 命名实体和属性 命名应清晰、一致和唯一。 实体名和属性名总是单数。 比如实体名(大写):CUSTOMER,PASSENGER 比如属性名(小写):employee-salary-amount. 前缀修饰和后缀区别 比如,customer-name, customer-address. 尽量使用通用的业务名词。 命名应清晰、一致和唯一。 其他的命名规则下面还会介绍
逻辑模型的创建 创建逻辑模型的第一步是建立ER图 一个ER图实例:食堂管理系统 Key-based模型 主键、候选键、外键的区别 外键的一个命名规则
创建逻辑模型的第一步是建立ER图 ER图包括实体、属性和关系。一般不描述键的信息。ER图能按主题划分,这样可以将一个大的模型划分为小的可管理的模型 。
一个ER图实例:食堂管理系统
Key-based模型 Key-based模型描述主要的数据结构和它们的主键。
一个Key-based模型实例
主键、候选键、外键的区别 候选键可以唯一决定一个元组或记录,被选用的候选键为主键,外键是另一个关系或表的主键。 比如一个球员一般属于一个球队。
主键、候选键、外键的区别(续) 如果一个球员属于一个球队,则球员可认为是一个依赖实体,因为他的识别必须通过球队。但是如果一个球员可以不属于一个球队而存在。这时用另一种风格表示。
player-team-id.team-id 外键的一个命名规则 Rolename + “.” + keyname 用dot分隔,前面是角色名,后面是外键的原名。使用角色名有一个好处是可以和原来的数据模型兼容,因为外键名经常和它对应的主键名不同。角色名可以象其他属性一样使用。 比如: player-team-id.team-id
定义实体 为每个实体和实体的属性选定一个合理的名字,最好按前面的命名规定定义。 因为不同组织和个人有不同的习惯,给定一个详细的定义有助于理解。一般可以按下面的模式来定义: 详细描述 实例 其他信息,比如谁负责、最新修改时间等等 创建业务名词
定义实体间的关系 One-to-One One-to-Many Many-to-Many N-ary Relationship 关系是模型定义中的核心部分。现在分几种情况介绍 One-to-One One-to-Many Many-to-Many N-ary Relationship Recursive Relationship Subtype Relationship ERWin对Normalization的支持
One-to-One 一般将它们合并成一个关系。
One-to-Many
Many-to-Many
Many-to-Many(续) 一般有四种手段来处理引用的完整性:Cascade, Restrict, Set Null, Set Default. 当然,也可以选择<None>, 忽略引用完整性。 定义引用完整性规则依赖于 是父还是子。 所要执行的动作。
Many-to-Many(续)
N-ary Relationship
Recursive Relationship Company-id是COMPANY的唯一标识符,parent-id.company-id是该COMPANY的父公司标识符,注意不是所有公司都有父公司。
Subtype Relationship
Subtype Relationship(续) Complete versus Incomplete Subtype Structures Incomplete Subtype
Subtype Relationship(续) Complete Subtype
Subtype Relationship(续) Inclusive and Exclusive Relationships
Subtype Relationship(续)
模型的规范化 Normalization的主要目的是消除数据冗余、避免更新异常。它的理论基础是Normal Form理论。 Functional Dependence 1NF 2NF 3NF 怎样才是3NF ? 设计中注意的问题
Functional Dependence student-id Student-name Book-name 0001 abc Book1 Book2 Student-id->student-name
1NF 所有属性都是原子的。
2NF 不存在部分依赖。 关键码为(student-id, course-id) Student-name Course-id score 0001 A 01 86 02 90 03 88 关键码为(student-id, course-id) 而student-name部分依赖于student-id. 因此不是2NF.
3NF 不存在传递依赖。 关键码为(course-id, teacher-id) Room-id Room-capacity 01 0001 3202 40 0002 5202 200 0003 4303 50 关键码为(course-id, teacher-id) 而course teacher-id -> room-id. course-id->room-capacity. 因此不是3NF
怎样才是3NF ? 对任何非平凡依赖A1A2…An->B, 或者{A1A2…An}是超键,或者B是主属性。 Course-id Teacher-id Room-id 01 0001 3202 0002 5202 0003 4303 Room-id Room-capacity 3202 40 5202 200 4303 50
设计中的注意问题 违反属性原子性 (违反1NF) 重复属性数据(违反2NF, 3NF) 语义重复
违反属性原子性
重复属性数据
语义重复
ERWin对Normalization的支持 ERWin能检测出各种属性和外键的重复。因此只能说支持一定的NF理论。
创建物理模型 ERWin支持自动将一个逻辑模型转变为一个特定DBMS的数据库模式。 比如,实体变成一个关系表,属性变成一个表列,关键词变成索引。等等。
ERWin的其他特性 ERWin元模型(Metamodel) 宏 使用元模型的主要目的是用于管理生成一个物理数据模型所需的内部信息。 可以在模板中使用宏来编写特定DBMS支持的脚本、触发器、和存储过程等等。
Ok, 下课 获取PowerPoint文档 ftp://166.111.136.3/incoming/_studying/4Senior_大四/软件工程_田金兰/ERWin.ppt