第七章 数据库设计 - 上海交通大学计算机科学与工程系(CSE)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
子需 求 概念模式 子需求
子需 求 概念模式
概念模式
概念模式 概念模式
其他策略

逐步扩展
核心需求
需求
需求
核心概念 结构
全局概念结构

混合策略
自底向上的ER图设计
选择局部应用,逐一设计分E-R图 划分实体和属性的两条原则: (1)作为属性,不能再具有需要描述的 性质,属性是不可分的数据项。 (2)属性不能和其他实体具有联系。 合并分E-R图,生成初步的E-R图 解决属性冲突,命名冲突,结构冲突。


1:1,联系集可以去除

数据库的物理设计
物理设计的主要内容包含: 为关系模式选择存取方法。 设计关系、索引等数据文件的物理存储结 构 存取方法包括: 索引方法:决定那些属性要建立索引 聚簇方法:存放在连续的物理块 HASH方法:通过计算找到实际的存放位置
数据库的物理设计(续)

反复性

反复推敲、修改、迭代的过程 结果不是唯一的 在矛盾中求得平衡 小组、团队工作 分段把关

试探性


分步进行


数据库设计概述——工具


手工迭代、优化 辅助工具(CASE)

Oracle: Design 2000 Sybase: Powerdesigner Rational: Rational Rose
作为属性还是实体?

书上214页几个实例
自底向上设计的一个实例:

先设计子系统的E-R图 合并
某工厂管理信息系统
物质管理子系统
销售管理子系统
人事管理子系统
视图的合并

1. 2.
3.

属性冲突: 属性类型,取值范围不同 命名冲突:同名异议,异名同异 结构冲突: 同一对象具有不同的抽象(实体,属性) 实体中属性个数,次序不同 实体联系类型不同 消除冗余

确定数据的存放位置和存贮结构
根据不同DBMS,确定系统的配置 对物理结构进行评价。
数据库设计——Example
设计一个数据库系统,存放有关作者,文学作品, 以及对作品的评论的信息。用户可以对数据库进行查询 来获取有关作者,作品的信息。

设计一个ER模型 转换为关系模型 设计有关约束 实现该系统
视图和触发器:
1)提供有关一本书的所有信息:书名,哪一年写的,作者,哪个 地区,哪个年代。
CREATE VIEW ReadableBookInfo AS SELECT Work.title as title, Work.year as year_written, Author.name as author, WrittenIn.region as region, WrittenIn.era as era FROM Work, Author, WrittenIn, WrittenBy WHERE Work.id = WrittenBy.work and WrittenBy.name = Author.name and WrittenIn.work = Work.id; 2)加入数据库中一本好的书,自动增加一个对这本书好的评论.
数据库设计——Example

该数据库应用系统具有的功能: 查询功能,可以完成上述查询。 借书功能。 还书功能。

自底向上的ER图设计(续)

消除冗余,设计基本的E-R图 冗余数据: 可由基本数据导出. 冗余联系: 可由其它联系导出的联系.


数据抽象与局部视图设计
三种抽象: 分类: 定义某一类概念作为现实世界中的 一组对象的类型 is a member of 聚集:定义某一类型的组成成分 is a part of 概括: 定义类型之间的一种子集关系 is a subset of
数据库设计要求:
根据如下需求,设计数据库关系模式(要求定义完整性 约束并使该模式符合BCNF),并完成相应的 DDL/DML操作。(设:SQL语句中可利用 Current_Date()函数获得系统日期)。 某校图书馆管理系统中储存着馆藏书籍、读者及读者借 阅书籍的信息。每位读者有一张借书证(证号是唯一 的);每本书籍均有一个唯一的书籍序号、并有统一 的分类号及关键词;图书馆记录着读者借阅书籍的日 期、状态及还书日期;同一位读者不会在同一天重复 借阅同一本书籍(书籍序号相同);
逻辑结构的设计——ER到关系

实体集→表


属性→属性 主码→主码
逻辑结构的设计——ER到关系

联系集→表

M:N,联系集必须存在

Key包含参与实体集的主码
将1端的主码属性,引入N端的表中,成为外码 外码参照1端的主码 两个实体集可合并 或一端的主码引入到另一端中,作为外码

N:1,联系集可以去除
CREATE TABLE Period ( region varchar(64), era varchar(32), primary key(region, era) );
CREATE TABLE Work ( id number(5) primary key, title varchar(255), year number(5), length number(8) check (length >= 0) ); CREATE TABLE WroteCriticism ( url varchar(255) references Criticism(url), name varchar(128) references Author(name), primary key (url, name) );
E-R模型
转换成关系模型: (符合BCNF和4NF) Criticism(publication, url, synopsis, title)
Author(name, birth, death, description)
Period(region, era) Works(id, title, year, length) WrittenIn(work, region, era) Criticized(work, url) WroteCriticism(author, url) LivedIn(name, region, era) WrittenBy(author, work) 函数依赖关系: Criticism: url -> publication, synopsis, title Author: name -> birth, death, description

需求收集和分析 概念结构设计


存什么,对现实世界的模拟 关系(联系)如何,概念数据模型 E/R图、OO定义

Байду номын сангаас

逻辑结构设计 物理结构设计 物理实现
数据库设计概述——基本步骤


需求收集和分析 概念结构设计 逻辑结构设计

转换成逻辑数据模型(与DBMS模型相关) 数据库的模式(database schema) 用户子模式(视图模式)
CREATE TABLE Criticized ( url varchar(255) references Criticism(url), work number(5) references Work(id), primary key (url, work) ); CREATE TABLE WrittenBy ( work number(5) references Work(id), name varchar(128) references Author(name), primary key (work, name) );
第七章 数据库设计
数据库设计概述

数据库设计的成果

建立数据库

构造最优的数据库模式
有效地存储、处理数据,满足用户的需求

应用系统


数据库是信息系统的核心和基础

存储、维护、检索数据
数据库设计概述

知识结构



数据库的基本知识和数据库设计技术 计算机科学的基础知识和程序设计的方法和 技巧 软件工程的原理和方法 应用领域的知识
数据库设计概述——过程
数据库设计概述——基本步骤




需求收集和分析 概念结构设计 逻辑结构设计 物理结构设计 物理实现
数据库设计概述——基本步骤

需求收集和分析



用户/用途 用户关心什么 用户要什么结果

概念结构设计 逻辑结构设计 物理结构设计 物理实现
数据库设计概述——基本步骤
数据库设计概述——特点

硬件、软件、界面 数据(结构)、处理(行为) 数据库模式是公用的、共享的,影响整 个应用的质量

三分技术,七分管理,十二分基础数据.
数据库设计概述——方法


软件工程的思想和方法 新奥尔良方法

需求分析 概念分析 逻辑设计 物理设计
数据库设计概述——特性
定义关系模式:
CREATE TABLE LivedIn ( region varchar(64), era varchar(32), name varchar(128) references Author(name), primary key (region, era, name), foreign key (region, era) references Period(region, era) ); CREATE TABLE WrittenIn ( region varchar(64), era varchar(32), work number(5) references Work(id), primary key (region, era, work), foreign key (region, era) references Period(region, era) );
Works: id -> title, year, length
定义关系模式: (考虑需要的各种约束条件)
CREATE TABLE Author ( name varchar(128) primary key, birth int, death int, description clob );
CREATE TABLE Criticism ( title varchar(255), critic varchar(128), url varchar(255) primary key, synopsis clob, publication varchar(255), unique (title, critic) );
CREATE TRIGGER GoodReviewsTrig AFTER INSERT ON Work
WHEN (NEW.title LIKE '%computer%') INSERT INTO Criticism VALUES (‘it is a great book', 'Keith Ito' , 'http://www.stanford.edu/~keithito/' , 'I thought that it was the

运行DDL 装入测试数据 应用程序
概念结构设计——ER图
概念结构设计的方法 自顶向下 自底向上:经常用的方法。 逐步扩张 混合策略
自顶向下

定义全局概念结构的框架,逐步细化.
需求 全局概念模式
概念模式
概念模式
自底向上

定义局部应用的概念结构,再集成,形成全 局概念结构.
数据库设计——Example

统计该图书馆中数据库类(关键词中为“数据库”) 书籍的藏书情况(含书名、分类号、出版社、作者、馆 藏数)。 统计已借阅(尚未归还)5本(或以上)书籍的读者 的证号、姓名、单位及借阅的册数。 列出所有从未被借阅过的书籍(按分类号计算)的 书名、分类号、出版社、作者及馆藏册数。 列出借书证号为‘95001’的读者所借阅过的、书名中 含有‘数据库’的图书的书名、分类号、借阅次数,并 按借阅次数进行排序(次数多的排列在前)。


物理结构设计 物理实现
数据库设计概述——基本步骤



需求收集和分析 概念结构设计 逻辑结构设计 物理结构设计


数据怎么存,物理数据模型 根据DBMS产品、环境特点 影响数据库的性能

物理实现
数据库设计概述——基本步骤




需求收集和分析 概念结构设计 逻辑结构设计 物理结构设计 物理实现
相关文档
最新文档