数据建模和数据库设计概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 多对多(Many-to-many)
– A和B的一个值都和对方的多个值有关. – 利用交叉实体解决. – 举例: 雇员和技能.
实体关系模型子集
ITEM #* id o price o quantity in made up of ORDER #* id * date ordered o date shipped taken by the sales rep for
数据库设计
• 将一个模型转换成可使用的软件. • 为你的设计合并规则,判别等. • 下面是数据库设计的一些关键因素:
– 性能 – 与应用集成 – 和其他系统的集成 – 文档和交互性 – 可伸缩性 – 避免重蹈覆辙
数据模型
Model of system in client's mind Entity model of client's model
列中的值必须与所定义的数据类型匹配. 值必须与商业原则匹配.
定义一个主键
• 一个主键(PK)值要求唯一且非空. • 每行值由一列或多列唯一的标识(组 合主键)决定. S_ITEM Table • 一个候选键也可成为一个主键 .
ORD_ID ITEM_ID PRODUCT_ID PRICE QUANTITY QUANTITY_SHIPPED 100 100 100 1 2 7 1011 10013 41010 135 380 8 500 400 250 500 400 250
101
1
30421
16
15
15
复合主键
定义一个外键
• 一个外键(FK)在一张表中是一列或多 列的组合,它将参照同一张表中或其 他表中的一个主键(PK)或唯一键(UK) 的值. • 外键(FK)是基于数据值的且是纯逻辑 的. • 外键值必须和相关的列值或空值相匹 配. • 如果一个外键是一个主键的Leabharlann Baidu部分那
定义一个外键:举例
DEPT_ID列是S_EMP的一个外键, 它参 考 S_DEPT 表里的 ID 列的值而存在 . Foreign Key
S_EMP Table
ID 1 2 3 4 5 LAST_NAME Velasquez Ngao Nagayama Quick-To-See Ropeburn FIRST_NAME Carmen LaDoris Midori Mark Audry ... DEPT_ID 50 41 31 10 50 ...
• 场景
– “. . . 分配一个或多哥客户给一个销售
实体关系模型规范
实体 Soft box Singular, unique name Uppercase Synonym in parentheses 属性 Singular name Lowercase Mandatory marked with "*" Optional marked with "o" assigned to EMPLOYEE #* id last name the sales * o first name rep to
– 设计索引 – 建立视图定义 – 规划物理存储空间 – 优化完整性规则
数据库设计步骤
利用实体关系图的组件生成一张表的实 例图 . 1 S_CUSTOMER Table
2 3 Column name Key type Nulls/ Unique FK table FK column Datatype Max length ID Name Phone Sales_rep_id
managed by
the manager of
关系类型
• 一对一(One-to-one)
– A的一个值最多和B的一个值有关. – 很少. – 举例: 丈夫和妻子.
• 多对一(Many-to-one)
– A的一个值可与B的多个值有关,但B的一个值最多和A 的一个值有关. – 相当普遍. – 举例: 乘客和飞机.
• 对于强制关系,确保用NN标记.
小结
• 遵循系统开发周期. • 构建你的实体关系模型.
– 实体, 属性, 关系,和UID
• 利用实例图设计数据库.
– 将每个组件映射到图表中.
系统开发周期
• 数据库开发
– 使一个自顶向下的系统化方法. – 将商业信息转换成一个可操作的数据库. – 由五步组成.
• 一旦设计完成,通过执行SQL命令构建你的 数据库.
系统开发的步骤
Strategy and Analysis Design Build and Document Transition Production
S_DEPT Table Primary Key
ID 10 31 41 50 NAME Finance Sales Operations Administration REGION_ID 1 1 1 1
Primary Key
数据库设计
• 表名和列名应分别映射实体和属性. • 建立你自己的命名规范. • 其他需求
第二范式
第三范式
所有属性都必须依赖于它的实体的 UID.
非UID的属性列彼此都应是独立的.
完整性约束
• 确保数据一致性 • 应由数据库服务器和应用软件执行 • 对应于键
类型 实体 参考 列 用户定义的
– 主键 , 唯一键, 外键 描述
主键必须是非空的且值是唯一的。
外键值必须与主键值匹配 或为空值.
• 在实体关系模型中将每个实体的属性映射 成表中的列名. • 记录强制列并用NN标记. • 添加数据到每列中. • 不要将SQL的保留字作为列名.
步骤 3: 将唯一标识符映射成外键
• 将唯一标识符映射成主键(FK). • 标记非空和唯一键. • 候选唯一标识符也应标记上非空和唯 一键,但是只能选择一个作为主键. • 通过一个关系为每个唯一标识符添加 一个外键.
UID bar relationship is part of the entity抯 unique identifier.
EMPLOYEE #* id * last name o first name
规范化
优点 • 最小化数据冗余 • 减少完整性问题 • 确认丢失的实体,联系和表 规则 描述
第一范式 所有属性都必须是单值的
• 举例
– 每个ORDER能且只能对应一个 CUSTOMER. – 每个CUSTOMER 可以是一个或多个 Mandatory - Must be Optionality - May be ORDER的客户. ORDER CUSTOMER
#* id * date ordered o date shipped
PK NN,U NN
FK
4
S_EMP ID NUM 7 CHAR 25 CHAR 20 NUM 7
步骤1: 将实体映射成表
• 生成一张表的实例图.
– 表名 – 列名 – 键类型 – 空值和唯一性参照 – 外键信息 – 列数据类型和最大长度 – 数据实例
• 在图的上部记录表名.
步骤 2: 将属性映射成列
数据建模和数据库设计概述
讲师:林强
目标
• • • • • 描述系统开发步骤. 列出并定义数据关系的基本类型. 定义关系型数据库和它的组件. 认识实体关系图(E-R图) 将一个E-R图转换成关系型数据库设计.
概述
• • • • 认真考虑数据库中的各个组件. 完成系统开发周期. 设计数据库. 利用良好的数据设计满足管理数据的需求.
for
the client for
#* * o
id name phone
Degree - One or more
Degree - One and only one
递归关系
• 如果一个实体和它自身建立一种联系那么 我们称为递归关系. • 利用一个‘猪耳朵’标记表示一个关系
EMPLOYEE #* id * last name o first name (#)* user id o start date
– 定义主键、外键约束类型. – 定义非空和唯一性参考. – 增加数据.
步骤 4: 将关系映射成外键
• 对于多对一的联系
– 在一边定位主键,在其它多表的多边定位外键 – 用FK标记外键.
• 对于强制性关系,确保标记为非空 (NN).
步骤 4: 将关系匹配为外键
• 对于一对一的联系用U标记
– 若关系对双方都是可选的, 那么可将FK放任何 一方的表中. – 若关系是强制的,那么可将FK放在 强制的一端.
• 联系(Relationship)
– 实体间的关系
实体关系模型
基于商业规范或描述生成一个实体关系 图.
CUSTOMER #* id * name o phone assigned to EMPLOYEE #* id last name the sales * o first name rep to
• 实体(Entity)
E-R模型概念
– 现实世界中我们感兴趣的和可区分的客 观事物 – 例如: customers, sales representatives, orders
• 属性(Attribute)
– 对一个实体的描述 – 例如: name, phone, identification number
Server
Table model of entity model Tables on disk
实体关系模型的优点
• 在头脑中将概念联系起来 • 可有效的收集并记录一个组织的信息 需求 • 提供了一个易于理解的系统映射图 • 易于开发和优化 • 明确定义信息需求的范围 • Separate the information required by a business from the activities performed by the business
CUSTOMER #* id * name o phone
唯一标识符 (UID) Primary marked with "#" Secondary marked with "(#)"
实体关系:例子
• 句法
– Each 资源实体 {可能 | 一定} 与目标实体有 关系 {一个且只有一个 | 一个或多个}.