第 7章 数据建模
1,使用 UML进行数据库设计
数据库建模
?传统方法,E-R图。仅对数据建模,不能对行为建模,
如触发器、存储过程等建模。
?UML方法:类图。用类图描述数据库模式,用类描述
数据表,用类的操作来描述触发器和存储过程。
2,数据库设计阶段及概念
设计阶段
1)概念设计阶段
把用户的信息要求统一到一个整体逻辑结构中,结构能表达
用户的要求,独立于任何数据库管理系统( DBMS)软件和硬件。
2)逻辑设计阶段
把概念设计阶段得到的结果转换为与选用的 DBMS所支持的数
据模型相符合的逻辑结构。(对关系数据库,结果是一组关系
模式的定义,是能被某一 DBMS接受的数据库定义。)
3)物理设计阶段
对给定的逻辑数据模型选取一个最适合应用要求的物理结构。
(物理结构包括:存储记录格式、存储记录安排、存取方法等。
2,数据库设计阶段及概念 概念与版型
数据库中的概念 构造类型(版型) 对应的 UML元素
数据库 <<database>> 组件(构件)
模式 (表及表关系集合) <<Schema>> 包
表 <<Table>> 类
视图 <<View>> 类
域 <<Domain>> 类
索引 <<Index>> 操作
主键 <<PK>> 操作
外键 <<FK>> 操作
唯一性约束 (唯一键) <<Unique>> 操作
检查约束 (一般域约束) <<Check>> 操作
触发器约束 <<Trigger>> 操作
存储过程 <<SP>> 操作
表之间非确定性关系 <<Non-Identifying>> 关联、聚合
表之间确定性关系 <<Identifying>> 组合
3,数据库设计步骤
Table2中外键( COL_0)不允许空
...操作,..
3,数据库设计步骤
CREATE TABLE Table2 (
COL_2 VARCHAR ( 10 ) NOT NULL,
COL_3 VARCHAR ( 20 ) NOT NULL,
COL_4 VARCHAR ( 10 ) NOT NULL UNIQUE,
COL_0 VARCHAR ( 20 ) NOT NULL,
CONSTRAINT PK_Table21 PRIMARY KEY NONCLUSTERED (COL_2)
)
GO
CREATE TABLE Table1 (
COL_0 VARCHAR ( 20 ) NOT NULL,
COL_1 NUMERIC ( 5 ) NOT NULL,
CONSTRAINT PK_Table10 PRIMARY KEY NONCLUSTERED (COL_0)
)
GO
ALTER TABLE Table2 ADD CONSTRAINT FK_Table20 FOREIGN KEY (COL_0)
REFERENCES Table1 (COL_0)
GO
3,数据库设计步骤
外键可以为空
3,数据库设计步骤
CREATE TABLE Table1 (
COL_0 VARCHAR ( 20 ) NOT NULL,
COL_1 NUMERIC ( 5 ) NOT NULL,
CONSTRAINT PK_Table10 PRIMARY KEY NONCLUSTERED (COL_0)
)
GO
CREATE TABLE Table2 (
COL_2 VARCHAR ( 10 ) NOT NULL,
COL_3 VARCHAR ( 20 ) NOT NULL,
COL_4 VARCHAR ( 10 ) NOT NULL UNIQUE,
COL_0 VARCHAR ( 20 ),
CONSTRAINT PK_Table21 PRIMARY KEY NONCLUSTERED (COL_2)
)
GO
ALTER TABLE Table2 ADD CONSTRAINT FK_Table20 FOREIGN KEY (COL_0)
REFERENCES Table1 (COL_0)
GO
3,数据库设计步骤
外键是主键的一部分
3,数据库设计步骤
CREATE TABLE Table1 (
COL_0 VARCHAR ( 20 ) NOT NULL,
COL_1 NUMERIC ( 5 ) NOT NULL,
CONSTRAINT PK_Table10 PRIMARY KEY NONCLUSTERED (COL_0)
)
GO
CREATE TABLE Table2 (
COL_2 VARCHAR ( 10 ) NOT NULL,
COL_3 VARCHAR ( 20 ) NOT NULL,
COL_4 VARCHAR ( 10 ) NOT NULL UNIQUE,
COL_0 VARCHAR ( 20 ) NOT NULL,
CONSTRAINT PK_Table21 PRIMARY KEY NONCLUSTERED (COL_0,
COL_2)
)
GO
ALTER TABLE Table2 ADD CONSTRAINT FK_Table20 FOREIGN KEY (COL_0)
REFERENCES Table1 (COL_0)
GO
4,对象模型和数据模型的相互转换
对象模型 → 数据模型
?类 → 表
?类关系 → 表关系( → 关联表)
在 Rose 2003中,可以把逻辑视图下包直接转换为数据模型。
...操作,..
4,对象模型和数据模型的相互转换
对象模型 → 数据模型:类 → 表、类关系 → 表关系( → 关联表)
4,对象模型和数据模型的相互转换
对象模型 → 数据模型,类 → 表、类关系 → 表关系( → 关联表)
4,对象模型和数据模型的相互转换
数据模型 → 对象模型:对构造型为 <<Schema>>的包元素转换,
即表 → 类、表关系 → 类关系
在 Rose 2003中,可以把逻辑视图下构造型为 <<Schema>>的包内
容转换为对象模型。
...操作,..
4,对象模型和数据模型的相互转换
数据模型 → 对象模型:对构造型为 <<Schema>>的包元素转换,
即表 → 类、表关系 → 类关系
4,对象模型和数据模型的相互转换
数据模型 → 对象模型,对构造型为 <<Schema>>的包元素转换,
即表 → 类、表关系 → 类关系