數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用
本文關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用,由筆耕文化傳播整理發(fā)布。
數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用
《數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用》課程教學(xué)大綱
英文名稱:Principle and Application of Database System
課程類型:專業(yè)必修課
學(xué)時(shí)/學(xué)分:48+16/3.5
授課對(duì)象:網(wǎng)絡(luò)工程專業(yè)本科生
先修課程:《數(shù)據(jù)結(jié)構(gòu)》、《操作系統(tǒng)原理》、《離散數(shù)學(xué)》
課程簡(jiǎn)介:
《數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用》是網(wǎng)絡(luò)工程專業(yè)的必修課,是現(xiàn)代軟件技術(shù)的重要支撐,也是諸多研究方向如分布式數(shù)據(jù)庫(kù)、并行數(shù)據(jù)庫(kù)系統(tǒng)、決策支持系統(tǒng)、大數(shù)據(jù)等的基礎(chǔ)。通過(guò)對(duì)本課程的學(xué)習(xí),使學(xué)生掌握數(shù)據(jù)庫(kù)的基本原理和應(yīng)用方法,并為后續(xù)課程的學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ)。
教學(xué)目的和要求:
1. 從內(nèi)容上,了解和掌握數(shù)據(jù)庫(kù)管理技術(shù)發(fā)展的過(guò)程,數(shù)據(jù)庫(kù)系統(tǒng)的基本概念、體系結(jié)構(gòu)和全局結(jié)構(gòu)。掌握關(guān)系模型的關(guān)系運(yùn)算理論,關(guān)系數(shù)據(jù)庫(kù)SQL語(yǔ)言的全貌和使用技術(shù)。了解和掌握關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論以及數(shù)據(jù)庫(kù)設(shè)計(jì)的全過(guò)程,能進(jìn)行數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì)和簡(jiǎn)單應(yīng)用程序的設(shè)計(jì)。了解數(shù)據(jù)庫(kù)系統(tǒng)的保護(hù)措施。了解并發(fā)控制的原理、措施和封鎖的方法和規(guī)則。了解具有對(duì)象特征的數(shù)據(jù)庫(kù)的基本概念以及數(shù)據(jù)庫(kù)的新技術(shù)。
2. 從能力方面,要求學(xué)生掌握數(shù)據(jù)庫(kù)基本理論及設(shè)計(jì)方法,了解典型數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu),培養(yǎng)學(xué)生使用、評(píng)價(jià)和為實(shí)際環(huán)境選擇數(shù)據(jù)庫(kù)系統(tǒng)的能力,使學(xué)生奠定構(gòu)建軟件平臺(tái)和進(jìn)行應(yīng)用開發(fā)的基礎(chǔ)。
3. 從教學(xué)方法上,采用啟發(fā)、引導(dǎo)的教學(xué)方法,結(jié)合多媒體教學(xué)方式,提高學(xué)生學(xué)習(xí)興趣。
教學(xué)內(nèi)容:
第1章 緒論(8學(xué)時(shí))
1、教學(xué)內(nèi)容:
§1.1 數(shù)據(jù)庫(kù)的常用術(shù)語(yǔ)
§1.2 計(jì)算機(jī)數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展
§1.3 數(shù)據(jù)模型
§1.4 數(shù)據(jù)庫(kù)系統(tǒng)的模式結(jié)構(gòu)
§1.5 DBMS的功能
§1.6 數(shù)據(jù)庫(kù)系統(tǒng)的組成
2、教學(xué)重點(diǎn):數(shù)據(jù)庫(kù)基本概念、概念模型、數(shù)據(jù)模型、數(shù)據(jù)庫(kù)管理系統(tǒng)功能、數(shù)據(jù)庫(kù)體系結(jié)構(gòu)。
3、難點(diǎn):數(shù)據(jù)庫(kù)體系結(jié)構(gòu)。
第2章 關(guān)系數(shù)據(jù)庫(kù)(10學(xué)時(shí))
1、教學(xué)內(nèi)容:
§2.1 關(guān)系模型的基本概念
§2.2 關(guān)系代數(shù)
2、教學(xué)難點(diǎn):關(guān)系模型基本概念、關(guān)系完整性、關(guān)系代數(shù)。
3、教學(xué)難點(diǎn):關(guān)系代數(shù)。
第3章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言—SQL(10學(xué)時(shí))
1、教學(xué)內(nèi)容:
§3.1 SQL概述
§3.2 SQL的數(shù)據(jù)定義
§3.3 SQL的數(shù)據(jù)查詢
§3.4 SQL的數(shù)據(jù)更新
§3.5 SQL的視圖
2、教學(xué)重點(diǎn):數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新、視圖。
3、教學(xué)難點(diǎn):數(shù)據(jù)查詢。
第4章 數(shù)據(jù)庫(kù)的安全性與完整性(2學(xué)時(shí))
1、教學(xué)內(nèi)容
§4.1數(shù)據(jù)庫(kù)安全性概述
§4.2數(shù)據(jù)庫(kù)的安全性控制
§4.3視圖機(jī)制
§4.4審計(jì)
§4.5數(shù)據(jù)加密
§4.6數(shù)據(jù)庫(kù)完整性
2、教學(xué)重點(diǎn):安全性控制方法、數(shù)據(jù)庫(kù)完整性含義
3、教學(xué)難點(diǎn):安全性控制方法
第5章 關(guān)系模式的規(guī)范化設(shè)計(jì)理論(10學(xué)時(shí))
1、教學(xué)內(nèi)容:
§5.1 問(wèn)題的提出
§5.2 關(guān)系模式的函數(shù)依賴
§5.3 關(guān)系模式的規(guī)范化
§5.4 關(guān)系模式的分解特性
2、教學(xué)重點(diǎn):函數(shù)依賴、關(guān)系模式的規(guī)范化。
3、教學(xué)難點(diǎn):函數(shù)依賴、關(guān)系模式的規(guī)范化。
第6章 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)施(2學(xué)時(shí))
1、教學(xué)內(nèi)容
§6.1數(shù)據(jù)庫(kù)設(shè)計(jì)概述
§6.2需求分析
§6.3概念結(jié)構(gòu)設(shè)計(jì)
§6.4邏輯結(jié)構(gòu)設(shè)計(jì)
§6.5物理結(jié)構(gòu)設(shè)計(jì)
§6.6數(shù)據(jù)庫(kù)的實(shí)施和維護(hù)
2、教學(xué)重點(diǎn):數(shù)據(jù)庫(kù)設(shè)計(jì)步驟。
3、教學(xué)難點(diǎn):數(shù)據(jù)庫(kù)設(shè)計(jì)步驟。
第7章 關(guān)系系統(tǒng)及其查詢優(yōu)化(2學(xué)時(shí))
1、教學(xué)內(nèi)容:
§7.1關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢優(yōu)化
§7.2 代數(shù)優(yōu)化
§7.3 物理優(yōu)化
2、教學(xué)重點(diǎn):代數(shù)優(yōu)化、物理優(yōu)化。
3、教學(xué)難點(diǎn):物理優(yōu)化。
第8章 數(shù)據(jù)庫(kù)恢復(fù)(2學(xué)時(shí))
1、教學(xué)內(nèi)容
§8.1事務(wù)的基本概念
§8.2 數(shù)據(jù)庫(kù)恢復(fù)概述
§8.3故障的種類
§8.4恢復(fù)的實(shí)驗(yàn)技術(shù)
§8.5恢復(fù)策略
§8.6具有檢查點(diǎn)的恢復(fù)技術(shù)
§8.7數(shù)據(jù)庫(kù)鏡像
2、教學(xué)重點(diǎn):事務(wù)、在、故障、恢復(fù)的實(shí)現(xiàn)技術(shù)
3、教學(xué)難點(diǎn):恢復(fù)的實(shí)現(xiàn)技術(shù)
第9章 并發(fā)控制(2學(xué)時(shí))
1、教學(xué)內(nèi)容
§9.1并發(fā)控制概述
§9.2 封鎖
§9.3封鎖協(xié)議
§9.4活鎖和死鎖
§9.5并發(fā)調(diào)度的可串行性
§9.6兩段鎖協(xié)議
§9.7封鎖的粒度
2、教學(xué)重點(diǎn):并發(fā)產(chǎn)生的問(wèn)題、封鎖、封鎖協(xié)議
3、教學(xué)難點(diǎn):封鎖協(xié)議
實(shí)驗(yàn)內(nèi)容:
實(shí)驗(yàn)一 認(rèn)識(shí)DBMS(2學(xué)時(shí))
1、實(shí)驗(yàn)?zāi)康?/p>
(1)通過(guò)對(duì)某個(gè)DBMS的安裝與使用,初步了解DBMS的工作環(huán)境和系統(tǒng)夠架。在此推薦SQL Server。
(2)了解DBMS的安裝。
(3)搭建今后的實(shí)驗(yàn)平臺(tái)。
2、實(shí)驗(yàn)內(nèi)容
(1)了解SQL Server的運(yùn)行環(huán)境。
(2)了解SQL Server的安裝與使用。
(3)認(rèn)識(shí)SQL Server的企業(yè)管理器。
實(shí)驗(yàn)二 數(shù)據(jù)庫(kù)建立(2學(xué)時(shí))
1、實(shí)驗(yàn)?zāi)康?/p>
(1)理解數(shù)據(jù)庫(kù)的含義。
(2)掌握在SQL Server中創(chuàng)建數(shù)據(jù)庫(kù)的各種方法以及對(duì)數(shù)據(jù)庫(kù)的各種操作。
(3)掌握在SQL Server中創(chuàng)建數(shù)據(jù)表的各種方法以及對(duì)數(shù)據(jù)表的各種操作。
2、實(shí)驗(yàn)內(nèi)容
(1)建立一數(shù)據(jù)庫(kù)STUDENT,學(xué)會(huì)建立數(shù)據(jù)庫(kù)的各種方法
(2)掌握打開和修改數(shù)據(jù)庫(kù)的操作
(3)在STUDENT中建立S表、COURSE表、SC表,學(xué)會(huì)建表的各種方法。
(4)掌握對(duì)表的各種操作命令。
實(shí)驗(yàn)三 數(shù)據(jù)庫(kù)完整性(2學(xué)時(shí))
1、實(shí)驗(yàn)?zāi)康?/p>
(1)理解數(shù)據(jù)庫(kù)完整性的含義。
(2)理解關(guān)系數(shù)據(jù)庫(kù)三類完整性的含義。
(3)掌握關(guān)系數(shù)據(jù)庫(kù)三類完整性的設(shè)置方法。
2、實(shí)驗(yàn)內(nèi)容
根據(jù)實(shí)驗(yàn)實(shí)驗(yàn)三建立的數(shù)據(jù)庫(kù)和數(shù)據(jù)表完成以下內(nèi)容:
(1)實(shí)體完整性的設(shè)置。
(2)參照完整性設(shè)置。
(3)用戶定義完整性的設(shè)置。
實(shí)驗(yàn)四 交互式SQL(4學(xué)時(shí))
1、實(shí)驗(yàn)?zāi)康?/p>
(1)理解交互式SQL的含義。
(2)掌握交互式SQL中的數(shù)據(jù)定義、數(shù)據(jù)更新、數(shù)據(jù)查詢。
2、實(shí)驗(yàn)內(nèi)容
在RDBMS—SQL Server中建立一個(gè)數(shù)據(jù)庫(kù),進(jìn)行實(shí)驗(yàn)所要求的各種操作,所有的SQL操作均在此建立的新庫(kù)里進(jìn)行。
實(shí)驗(yàn)五 數(shù)據(jù)庫(kù)設(shè)計(jì)(6學(xué)時(shí))
1、實(shí)驗(yàn)?zāi)康?/p>
(1)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的含義。
(2)通過(guò)實(shí)踐,掌握所學(xué)的數(shù)據(jù)庫(kù)設(shè)計(jì)方法和步驟。
(3)學(xué)會(huì)在一個(gè)實(shí)際的RDBMS軟件平臺(tái)上創(chuàng)建數(shù)據(jù)庫(kù)。
(4)練習(xí)基于數(shù)據(jù)庫(kù)支持的管理信息系統(tǒng)的開發(fā)方法。
2、實(shí)驗(yàn)內(nèi)容
學(xué)生選課管理信息系統(tǒng)。
教學(xué)環(huán)境條件:
多媒體教學(xué)
考核方式:
閉卷考試
課程評(píng)價(jià)標(biāo)準(zhǔn):
學(xué)業(yè)成績(jī)=平時(shí)成績(jī)*20%+主卷成績(jī)*80%
教材
1、主要教材:
《數(shù)據(jù)庫(kù)系統(tǒng)概論》第五版,王珊、薩師煊主編,高等教育出版社,2014.9。
2、參考教材:
[1]《數(shù)據(jù)庫(kù)系統(tǒng)教程》(第3版),施伯樂、丁寶康、汪衛(wèi)編著,高等教育出版社,2008.5
[2]《數(shù)據(jù)庫(kù)系統(tǒng)教程(第3版)習(xí)題解答及上機(jī)指導(dǎo)》,丁寶康、董建全、汪衛(wèi)、曾宇昆編著,高等教育出版社,2008
[3]《數(shù)據(jù)庫(kù)系統(tǒng)概論學(xué)習(xí)指導(dǎo)與習(xí)題解答》,王珊,高等教育出版社,2015.2
大綱制定人:
大綱審核人:
《數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用》課程簡(jiǎn)介
一、教學(xué)計(jì)劃安排
本課程總學(xué)時(shí)64。理論學(xué)時(shí)48,實(shí)驗(yàn)學(xué)時(shí)16,共3.5學(xué)分。
二、教材
《數(shù)據(jù)庫(kù)系統(tǒng)概論》第5版,王珊、薩師煊主編.北京,高等教育出版社,2014年9月
三、教學(xué)參考資料
1、教學(xué)參考書
[1]《數(shù)據(jù)庫(kù)系統(tǒng)概論(第5版)實(shí)驗(yàn)指導(dǎo)與習(xí)題解析》.王珊.高等教育出版社,2015.2
[2]《數(shù)據(jù)庫(kù)系統(tǒng)教程》(第3版).施伯樂,丁寶康,汪衛(wèi)編著.高等教育出版社,2008.5
[3]《數(shù)據(jù)庫(kù)系統(tǒng)教程(第3版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo)》.丁寶康,汪衛(wèi),張守志編著.高等教育出版社,2009.10
2、參考網(wǎng)站
[1] (需要密碼的留下郵箱)
[2]
四、課程內(nèi)容簡(jiǎn)介
本課程是網(wǎng)絡(luò)工程專業(yè)的專業(yè)基礎(chǔ)課,先修課程是:《C語(yǔ)言》、《數(shù)據(jù)結(jié)構(gòu)》《離散數(shù)學(xué)》、《操作系統(tǒng)》。
數(shù)據(jù)庫(kù)技術(shù)是計(jì)算機(jī)科學(xué)技術(shù)中發(fā)展最快的領(lǐng)域之一,也是應(yīng)用最廣的技術(shù)之一,它以成為計(jì)算機(jī)信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ),數(shù)據(jù)庫(kù)系統(tǒng)是計(jì)算機(jī)學(xué)科體系中重要的系統(tǒng)軟件!數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用》是網(wǎng)絡(luò)工程專業(yè)的專業(yè)課程之一。
本課程系統(tǒng)地闡述了數(shù)據(jù)庫(kù)系統(tǒng)的理論、技術(shù)和方法。重點(diǎn)是數(shù)據(jù)庫(kù)的基本概念、E-R圖、關(guān)系代數(shù)、SQL命令、關(guān)系數(shù)據(jù)理論。教學(xué)目的是掌握數(shù)據(jù)庫(kù)系統(tǒng)的基本原理、技術(shù)和方法,掌握數(shù)據(jù)庫(kù)設(shè)計(jì)的方法和步驟,了解數(shù)據(jù)庫(kù)的研究?jī)?nèi)容及數(shù)據(jù)庫(kù)新技術(shù)的發(fā)展。
六、附錄
數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟,按照規(guī)范設(shè)計(jì)的方法,考慮數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)開發(fā)全過(guò)程,將數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下六個(gè)階段:
l 需求分析;
l 概念結(jié)構(gòu)設(shè)計(jì);
l 邏輯結(jié)構(gòu)設(shè)計(jì);
l 物理結(jié)構(gòu)設(shè)計(jì);
l 數(shù)據(jù)庫(kù)實(shí)施;
l 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)。
數(shù)據(jù)庫(kù)設(shè)計(jì)開始之前,首先必須選定參加設(shè)計(jì)的人員,包括系統(tǒng)分析人員、數(shù)據(jù)庫(kù)設(shè)計(jì)人員和程序員、用戶和數(shù)據(jù)庫(kù)管理員。系統(tǒng)分析和數(shù)據(jù)庫(kù)設(shè)計(jì)人員是數(shù)據(jù)庫(kù)設(shè)計(jì)的核心人員,他們將自始至終參與數(shù)據(jù)庫(kù)設(shè)計(jì),他們的水平?jīng)Q定了數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量。用戶和數(shù)據(jù)庫(kù)管理員在數(shù)據(jù)庫(kù)設(shè)計(jì)中也是舉足輕重的,他們主要參加需求分析和數(shù)據(jù)庫(kù)的運(yùn)行維護(hù),他們的積極參與不但能加速數(shù)據(jù)庫(kù)設(shè)計(jì),而且也是決定數(shù)據(jù)庫(kù)設(shè)計(jì)的質(zhì)量的重要因素。程序員則在系統(tǒng)實(shí)施階段參與進(jìn)來(lái),分別負(fù)責(zé)編制程序和準(zhǔn)備軟硬件環(huán)境。
如果所設(shè)計(jì)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)比較復(fù)雜,還應(yīng)該考慮是否需要使用數(shù)據(jù)庫(kù)設(shè)計(jì)工具和CASE工具以提高數(shù)據(jù)庫(kù)設(shè)計(jì)質(zhì)量并減少設(shè)計(jì)工作量,以及選用何種工具!
第一、 需求分析
需求分析簡(jiǎn)單地說(shuō)就是分析用戶的要求。需求分析是設(shè)計(jì)數(shù)據(jù)庫(kù)的起點(diǎn),需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影響到后面各個(gè)階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用。
1.1 需求分析的任務(wù)
需求分析的任務(wù)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。新系統(tǒng)必須充分考慮今后可能的擴(kuò)充和改變,不能僅僅按當(dāng)前應(yīng)用需求來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)。
調(diào)查的重點(diǎn)是“數(shù)據(jù)”和“處理”,通過(guò)調(diào)查、收集與分析,獲得用戶對(duì)數(shù)據(jù)庫(kù)如下要求:
(1)信息要求。指用戶需要從數(shù)據(jù)庫(kù)中獲得信息的內(nèi)容與性質(zhì)。由信息要求可以導(dǎo)出數(shù)據(jù)要求,即在數(shù)據(jù)庫(kù)中需要存儲(chǔ)哪些數(shù)據(jù)。
(2)處理要求。指用戶要完成什么處理功能,對(duì)處理的響應(yīng)時(shí)間有什么要求,處理方式是批處理還是聯(lián)機(jī)處理。
(3)安全性與完整性要求。
確定用戶的最終需求是一件很困難的事,這是因?yàn)橐环矫嬗脩羧鄙儆?jì)算機(jī)知識(shí),開始時(shí)無(wú)法確定計(jì)算機(jī)究竟能為自己做什么,不能做什么,因此往往不能準(zhǔn)確地表達(dá)自己的需求,所提出的需求往往不斷地變化。另一方面,設(shè)計(jì)人員缺少用戶的專業(yè)知識(shí),不易理解用戶的真正需求,甚至誤解用戶的需求。因此設(shè)計(jì)人員必須不斷深入地與用戶交流,才能逐步確定用戶的實(shí)際需求。
1.2 需求分析的方法
進(jìn)行需求分析首先是調(diào)查清楚用戶的實(shí)際要求,與用戶達(dá)成共識(shí),然后分析與表達(dá)這些需求。
調(diào)查用戶需求的具體步驟是:
(1)調(diào)查組織機(jī)構(gòu)情況。包括了解該組織的部門組成情況、各部門的職責(zé)等,為分析信息流程做準(zhǔn)備。
(2)調(diào)查各部門的業(yè)務(wù)活動(dòng)情況。包括了解各個(gè)部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,輸出結(jié)果的格式是什么,這是調(diào)查的重點(diǎn)。
(3)在熟悉了業(yè)務(wù)活動(dòng)的基礎(chǔ)上,協(xié)助用戶明確對(duì)新系統(tǒng)的各種要求,包括信息要求、處理要求、完全性與完整性要求,這是調(diào)查的又一個(gè)重點(diǎn)。
(4)確定新系統(tǒng)的邊界。對(duì)前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計(jì)算機(jī)完成或?qū)?lái)準(zhǔn)備讓計(jì)算機(jī)完成,哪些活動(dòng)由人工完成。由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。
在調(diào)查過(guò)程中,可以根據(jù)不同的問(wèn)題和條件,使用不同的調(diào)查方法。常用的調(diào)查方法有:
(1)跟班作業(yè)。通過(guò)親身參加業(yè)務(wù)工作來(lái)了解業(yè)務(wù)活動(dòng)的情況。這種方法可以比較準(zhǔn)確地理解用戶的需求,但比較耗費(fèi)時(shí)間。
(2)開調(diào)查會(huì)。通過(guò)與用戶座談來(lái)了解業(yè)務(wù)活動(dòng)情況及用戶需求。座談時(shí),參加者之間可以相互啟發(fā)。
(3)請(qǐng)專人介紹。
(4)詢問(wèn)。對(duì)某些調(diào)查中的問(wèn)題,可以找專人詢問(wèn)。
(5)設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫。如果調(diào)查表設(shè)計(jì)得合理,這種方法是很有效,也易于為用戶接受。
(6)查閱記錄。查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄。
做需求調(diào)查時(shí),往往需要同時(shí)采用上述多種方法。但無(wú)論使用何種調(diào)查方法,都必須有用戶的積極參與和配合。
在調(diào)查了解了用戶需求以后,還需要進(jìn)一步分析和表達(dá)用戶的需求。在眾多的分析方法中結(jié)構(gòu)化分析方法(Structured Analysis,簡(jiǎn)稱SA方法)是一種簡(jiǎn)單實(shí)用的方法。SA方法從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用自頂向下、逐層分解的方式分析系統(tǒng)。
1.3 數(shù)據(jù)字典
數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理的關(guān)系,數(shù)據(jù)字典則是系統(tǒng)中各類數(shù)據(jù)描述的集合,是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要成果。數(shù)據(jù)字典在數(shù)據(jù)庫(kù)設(shè)計(jì)中占有很重要的地位。
數(shù)據(jù)字典通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過(guò)程五個(gè)部分。其中數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位,若干個(gè)數(shù)據(jù)項(xiàng)可以組成一個(gè)數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)字典通過(guò)對(duì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義來(lái)描述數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容。
(1)數(shù)據(jù)項(xiàng)
數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。對(duì)數(shù)據(jù)項(xiàng)的描述通常包括以下內(nèi)容:
數(shù)據(jù)項(xiàng)描述={數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說(shuō)明,別名,數(shù)據(jù)類型,長(zhǎng)度,取值范圍,
取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系,數(shù)據(jù)項(xiàng)之間的聯(lián)系}
其中“取值范圍”、“與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系”(例如該數(shù)據(jù)項(xiàng)等于另幾個(gè)數(shù)據(jù)項(xiàng)的和,該數(shù)據(jù)項(xiàng)值等于另一數(shù)據(jù)項(xiàng)的值等)定義了數(shù)據(jù)的完整性約束條件,是設(shè)計(jì)數(shù)據(jù)檢驗(yàn)功能的依據(jù)。
可以用關(guān)系規(guī)范化理論為指導(dǎo),用數(shù)據(jù)依賴的概念分析和表示數(shù)據(jù)項(xiàng)之間的聯(lián)系。即按實(shí)際語(yǔ)義,寫出每個(gè)數(shù)據(jù)項(xiàng)之間的數(shù)據(jù)依賴,它們是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)階段數(shù)據(jù)模型優(yōu)化的依據(jù)。
(2)數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。一個(gè)數(shù)據(jù)結(jié)構(gòu)可以由若干個(gè)數(shù)據(jù)項(xiàng)組成,也可以由若干個(gè)數(shù)據(jù)結(jié)構(gòu)組成,或由若干個(gè)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)混合組成。對(duì)數(shù)據(jù)結(jié)構(gòu)的描述通常包括以下內(nèi)容:
數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說(shuō)明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}
(3)數(shù)據(jù)流
數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂。?duì)數(shù)據(jù)流的描述通常包括以下內(nèi)容:
數(shù)據(jù)流描述={數(shù)據(jù)流名,說(shuō)明,數(shù)據(jù)流來(lái)源,數(shù)據(jù)流去向,
組成:{數(shù)據(jù)結(jié)構(gòu)},平均流量,高峰期流量}
其中“數(shù)據(jù)流來(lái)源”是說(shuō)明該數(shù)據(jù)流來(lái)自哪個(gè)過(guò)程。“數(shù)據(jù)流去向”是說(shuō)明該數(shù)據(jù)流將到哪個(gè)過(guò)程去。“平均流量”是指在單位時(shí)間(每天、每周、每月等)里的傳輸次數(shù)。“高峰期流量”則是指在高峰時(shí)期的數(shù)據(jù)流量。
(4)數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方,也是數(shù)據(jù)流的來(lái)源和去向之一。它可以是手工文檔或手工憑單,也可以是計(jì)算機(jī)文檔。對(duì)數(shù)據(jù)存儲(chǔ)的描述通常包括以下內(nèi)容:
數(shù)據(jù)存儲(chǔ)描述={數(shù)據(jù)存儲(chǔ)名,說(shuō)明,編號(hào),輸入的數(shù)據(jù)流,輸出的數(shù)據(jù)流,
組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取頻度,存取方式}
其中“存取頻度”指每小時(shí)或每天或每周存取幾次、每次存取多少數(shù)據(jù)等信息。“存取方式”包括是批處理還是聯(lián)機(jī)處理;是檢索還是更新;是順序檢索還是隨機(jī)檢索等。另外,“輸入的數(shù)據(jù)流”要指出其來(lái)源,“輸出的數(shù)據(jù)流”要指出其去向。
(5) 處理過(guò)程
處理過(guò)程的具體處理邏輯一般用判定表或判定樹來(lái)描述。數(shù)據(jù)字典中只需要描述處理過(guò)程的說(shuō)明性信息,通常包括以下內(nèi)容:
處理過(guò)程描述={處理過(guò)程名,說(shuō)明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},
處理:{簡(jiǎn)要說(shuō)明}}
其中“簡(jiǎn)要說(shuō)明”中主要說(shuō)明該處理過(guò)程的功能及處理要求。功能是指該處理過(guò)程用來(lái)做什么(而不是怎么做),處理要求包括處理頻度要求,如單位時(shí)間里處理多少事務(wù)、多少數(shù)據(jù)量、響應(yīng)時(shí)間要求等。這些處理要求是后面物理設(shè)計(jì)的輸入及性能評(píng)價(jià)的標(biāo)準(zhǔn)。
可見,數(shù)據(jù)字典是關(guān)于數(shù)據(jù)庫(kù)中數(shù)據(jù)的描述,即元數(shù)據(jù),而不是數(shù)據(jù)本身。
數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中不斷修改、充實(shí)、完善的。
明確地把需求收集和分析作為數(shù)據(jù)庫(kù)設(shè)計(jì)的第一階段是十分重要的。這一階段收集到的基礎(chǔ)數(shù)據(jù)(用數(shù)據(jù)字典來(lái)表達(dá))和一組數(shù)據(jù)流程圖(Data Flow Diagram,簡(jiǎn)稱DFD)是下一步進(jìn)行概念設(shè)計(jì)的基礎(chǔ)。
最后,要強(qiáng)調(diào)兩點(diǎn):
(1)需求分析階段的一個(gè)重要而困難的任務(wù)是收集將來(lái)應(yīng)用所涉及的數(shù)據(jù),設(shè)計(jì)人員應(yīng)充分考慮到可能的擴(kuò)充和改變,使設(shè)計(jì)易于更改,系統(tǒng)易于擴(kuò)充,這是第一點(diǎn)。
(2)必須強(qiáng)調(diào)用戶的參與,這是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)的特點(diǎn)。數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)和廣泛的用戶有密切的聯(lián)系,許多人要使用數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的設(shè)計(jì)和建立又可能對(duì)更多人的工作環(huán)境產(chǎn)生重要影響。因此用戶的參與是數(shù)據(jù)庫(kù)設(shè)計(jì)不可分割的一部分。在數(shù)據(jù)分析階段,任何調(diào)查研究沒有用戶的積極參加是寸步難行的。設(shè)計(jì)人員應(yīng)該和用戶取得共同的語(yǔ)言,幫助不熟悉計(jì)算機(jī)的用戶建立數(shù)據(jù)庫(kù)環(huán)境下的共同概念,并對(duì)設(shè)計(jì)工作的最后結(jié)果承擔(dān)共同的責(zé)任。
第二、 概念結(jié)構(gòu)設(shè)計(jì)
將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì)。它是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵。
2.1 概念結(jié)構(gòu)
在需求分析階段所得到的應(yīng)用需求應(yīng)該首先抽象為信息世界的結(jié)構(gòu),才能更好地、更準(zhǔn)確地用某一DBMS實(shí)現(xiàn)這些需求。
概念結(jié)構(gòu)的主要特點(diǎn)是:
(1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求。是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。
(2)易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見,用戶的積極參與是數(shù)據(jù)庫(kù)的設(shè)計(jì)成功的關(guān)鍵。
(3)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時(shí),容易對(duì)概念模型修改和擴(kuò)充。
(4)易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。
概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它比數(shù)據(jù)模型更獨(dú)立于機(jī)器、更抽象,從而更加穩(wěn)定。
描述概念模型的有力工具是E-R模型。有關(guān)E-R模型的基本概念已在第一章介紹。下面將用E-R模型來(lái)描述概念結(jié)構(gòu)。
2.2 概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟
設(shè)計(jì)概念結(jié)構(gòu)通常有四類方法:
l 自頂向下。即首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。
l 自底向上。即首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來(lái),得到全局概念結(jié)構(gòu)。
l 逐步擴(kuò)張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。
l 混合策略。即將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。
其中最經(jīng)常采用的策略是自底向上方法。即自頂向下地進(jìn)行需求分析,然后再自底向上地設(shè)計(jì)概念結(jié)構(gòu)。
這里只介紹自底向上設(shè)計(jì)概念結(jié)構(gòu)的方法。它通常分為兩步:第1步是抽象數(shù)據(jù)并設(shè)計(jì)局部視圖,第2步是集成局部視圖,得到全局的概念結(jié)構(gòu)。
2.3 數(shù)據(jù)抽象與局部視圖設(shè)計(jì)
概念結(jié)構(gòu)是對(duì)現(xiàn)實(shí)世界的一種抽象。所謂抽象是對(duì)實(shí)際的人、物、事和概念進(jìn)行人為處理,抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。
2.4 視圖的集成
各子系統(tǒng)的分E-R圖設(shè)計(jì)好以后,下一步就是要將所有的分E-R圖綜合成一個(gè)系統(tǒng)的總E-R圖。
(1)合并分E-R圖,生成初步E-R圖
(2)消除不必要的冗余,設(shè)計(jì)基本E-R圖
第三、 邏輯結(jié)構(gòu)設(shè)計(jì)
概念結(jié)構(gòu)是獨(dú)立于任何一種數(shù)據(jù)模型的信息結(jié)構(gòu)。邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。
從理論上講,設(shè)計(jì)邏輯結(jié)構(gòu)應(yīng)該選擇最適于相應(yīng)概念結(jié)構(gòu)的數(shù)據(jù)模型,然后對(duì)支持這種數(shù)據(jù)模型的各種DBMS進(jìn)行比較,從中選出最合適的DBMS。但實(shí)際情況往往是已給定了某種DBMS,設(shè)計(jì)人員沒有選擇的余地。目前DBMS產(chǎn)品一般支持關(guān)系、網(wǎng)狀、層次三種模型中的某一種,對(duì)某一種數(shù)據(jù)模型,各個(gè)機(jī)器系統(tǒng)又有許多不同的限制,提供不同的環(huán)境與工具。所以設(shè)計(jì)邏輯結(jié)構(gòu)時(shí)一般要分三步進(jìn)行:
(1)將概念結(jié)構(gòu)轉(zhuǎn)換為一般的關(guān)系、網(wǎng)狀、層次模型;
(2)將轉(zhuǎn)換來(lái)的關(guān)系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換;
(3)對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化。
3.1 E-R圖向關(guān)系模型的轉(zhuǎn)換
E-R圖向關(guān)系模型的轉(zhuǎn)換要解決的問(wèn)題是如何將實(shí)體和實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,如何確定這些關(guān)系模式的屬性和碼。
關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合。E-R圖則是由實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系三個(gè)要素組成的。所以將E-R圖轉(zhuǎn)換為關(guān)系模型實(shí)際上就是要將實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,這種轉(zhuǎn)換一般遵循如下原則:
一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。
對(duì)于實(shí)體間的聯(lián)系則有以下不同的情況:
(1)一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。如果與某一端實(shí)體對(duì)應(yīng)的關(guān)系模式合并,則需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。
(2)一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。
(3)一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。
(4)三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。
(5)具有相同碼的關(guān)系模式可合并。
形成了一般的數(shù)據(jù)模型后,下一步就是向特定的RDBMS的模型轉(zhuǎn)換。設(shè)計(jì)人員必須熟悉所用RDBMS的功能與限制。這一步是依賴于機(jī)器的,不能給出一個(gè)普遍的規(guī)則,但對(duì)于關(guān)系模型來(lái)說(shuō),這種轉(zhuǎn)換通常都比較簡(jiǎn)單,不會(huì)有太多的困難。
3.2 數(shù)據(jù)模型的優(yōu)化
數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的結(jié)果不是唯一的。為了進(jìn)一步提高數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能,還應(yīng)該根據(jù)應(yīng)用需要適當(dāng)?shù)匦薷、調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),這就是數(shù)據(jù)模型的優(yōu)化。關(guān)系數(shù)據(jù)模型的優(yōu)化通常以規(guī)范化理論為指導(dǎo),方法為:
(1)確定數(shù)據(jù)依賴。在1.3“數(shù)據(jù)字典”一節(jié)中已講到用數(shù)據(jù)依賴分析和表示數(shù)據(jù)項(xiàng)之間的聯(lián)系,寫出每個(gè)數(shù)據(jù)項(xiàng)之間的數(shù)據(jù)依賴。如果需求分析階段沒有來(lái)得及做,可以現(xiàn)在補(bǔ)做,即按需求分析階段所得到的語(yǔ)義,分別寫出每個(gè)關(guān)系模式內(nèi)部各屬性之間的數(shù)據(jù)依賴以及不同關(guān)系模式屬性之間的數(shù)據(jù)依賴。
(2)對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系,具體方法已在2.4中講解。
(3)按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,考察是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式。
(4)按照需求分析階段得到的處理要求,分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對(duì)某些模式進(jìn)行合并或分解。
必須注意的是,并不是規(guī)范化程度越高的關(guān)系就越優(yōu)。例如,當(dāng)查詢經(jīng)常涉及到兩個(gè)或多個(gè)關(guān)系模式的屬性時(shí),系統(tǒng)經(jīng)常進(jìn)行連接運(yùn)算。連接運(yùn)算的代價(jià)是相當(dāng)高的,可以說(shuō)關(guān)系模型低效的主要原因就是連接運(yùn)算引起的。這時(shí)可以考慮將這幾個(gè)關(guān)系合并為一個(gè)關(guān)系。因此在這種情況下,第二范式甚至第一范式也許是合適的。
又如,非BCNF的關(guān)系模式雖然從理論上分析會(huì)存在不同程度的更新異;蛉哂,但如果在實(shí)際應(yīng)用中對(duì)此關(guān)系模式只是查詢,并不執(zhí)行更新操作,則就不會(huì)產(chǎn)生實(shí)際影響。所以對(duì)于一個(gè)具體應(yīng)用來(lái)說(shuō),到底規(guī)范化到什么程度,需要權(quán)衡響應(yīng)時(shí)間和潛在問(wèn)題兩者的利弊決定。
(5)對(duì)關(guān)系模式進(jìn)行必要的分解, 提高數(shù)據(jù)操作的效率和存儲(chǔ)空間的利用率。常用的兩種分解方法是水平分解和垂直分解。
水平分解是把(基本)關(guān)系的元組分為若干子集合,定義每個(gè)子集合為一個(gè)子關(guān)系,以提高系統(tǒng)的效率。 根據(jù)“80/20原則”,一個(gè)大關(guān)系中,經(jīng)常被使用的數(shù)據(jù)只是關(guān)系的一部分,約20%,可以把經(jīng)常使用的數(shù)據(jù)分解出來(lái),形成一個(gè)子關(guān)系。 如果關(guān)系R上具有n個(gè)事務(wù),而且多數(shù)事務(wù)存取的數(shù)據(jù)不相交,則R可分解為少于或等于n個(gè)子關(guān)系,使每個(gè)事務(wù)存取的數(shù)據(jù)對(duì)應(yīng)一個(gè)關(guān)系。
垂直分解是把關(guān)系模式R的屬性分解為若干子集合,形成若干子關(guān)系模式。垂直分解的原則是,經(jīng)常在一起使用的屬性從R中分解出來(lái)形成一個(gè)子關(guān)系模式。垂直分解可以提高某些事務(wù)的效率,但也可能使另一些事務(wù)不得不執(zhí)行連接操作,從而降低了效率。因此是否進(jìn)行垂直分解取決于分解后R上的所有事務(wù)的總效率是否得到了提高。垂直分解需要確保無(wú)損連接性和保持函數(shù)依賴,即保證分解后的關(guān)系具有無(wú)損連接性和保持函數(shù)依賴性。這可以用第五章中的模式分解算法對(duì)需要分解的關(guān)系模式進(jìn)行分解和檢查。
規(guī)范化理論為數(shù)據(jù)庫(kù)設(shè)計(jì)人員判斷關(guān)系模式優(yōu)劣提供了理論標(biāo)準(zhǔn),可用來(lái)預(yù)測(cè)模式可能出現(xiàn)的問(wèn)題,使數(shù)據(jù)庫(kù)設(shè)計(jì)工作有了嚴(yán)格的理論基礎(chǔ)。
3.3 設(shè)計(jì)用戶子模式
將概念模型轉(zhuǎn)換為全局邏輯模型后,還應(yīng)該根據(jù)局部應(yīng)用需求,結(jié)合具體DBMS的特點(diǎn),設(shè)計(jì)用戶的外模式。
目前關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)一般都提供了視圖(View)概念,可以利用這一功能設(shè)計(jì)更符合局部用戶需要的用戶外模式。
定義數(shù)據(jù)庫(kù)全局模式主要是從系統(tǒng)的時(shí)間效率、空間效率、易維護(hù)等角度出發(fā)。由于用戶外模式與模式是相對(duì)獨(dú)立的,因此在定義用戶外模式時(shí)可以注重考慮用戶的習(xí)慣與方便。包括:
(1)使用更符合用戶習(xí)慣的別名
在合并各分E-R圖時(shí),曾做了消除命名沖突的工作,以使數(shù)據(jù)庫(kù)系統(tǒng)中同一關(guān)系和屬性具有唯一的名字。這在設(shè)計(jì)數(shù)據(jù)庫(kù)整體結(jié)構(gòu)時(shí)是非常必要的。用View機(jī)制可以在設(shè)計(jì)用戶View時(shí)重新定義某些屬性名,使其與用戶習(xí)慣一致,以方便使用。
(2)可以對(duì)不同級(jí)別的用戶定義不同的View,以保證系統(tǒng)的安全性。
假設(shè)有關(guān)系模式產(chǎn)品(產(chǎn)品號(hào),產(chǎn)品名,規(guī)格,單價(jià),生產(chǎn)車間,生產(chǎn)負(fù)責(zé)人,產(chǎn)品成本,產(chǎn)品合格率,質(zhì)量等級(jí)),可以在產(chǎn)品關(guān)系上建立兩個(gè)視圖:
為一般顧客建立視圖:
產(chǎn)品1(產(chǎn)品號(hào),產(chǎn)品名,規(guī)格,單價(jià))
為產(chǎn)品銷售部門建立圖:
產(chǎn)品2(產(chǎn)品號(hào),產(chǎn)品名,規(guī)格,單價(jià),車間,生產(chǎn)負(fù)責(zé)人)
顧客視圖中只包含允許顧客查詢的屬性;銷售部門視圖中只包含允許銷售部門查詢的屬性。生產(chǎn)領(lǐng)導(dǎo)部門則可以查詢?nèi)慨a(chǎn)品數(shù)據(jù)。這樣就可以防止用戶非法訪問(wèn)本來(lái)不允許他們查詢的數(shù)據(jù),保證了系統(tǒng)的安全性。
(3)簡(jiǎn)化用戶對(duì)系統(tǒng)的使用
如果某些局部應(yīng)用中經(jīng)常要使用某些很復(fù)雜的查詢,為了方便用戶,可以將這些復(fù)雜查詢定義為視圖,用戶每次只對(duì)定義好的視圖進(jìn)行查詢,大大簡(jiǎn)化了用戶的使用。
第四、數(shù)據(jù)庫(kù)的物理設(shè)計(jì)
數(shù)據(jù)庫(kù)在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),它依賴于給定的計(jì)算機(jī)系統(tǒng)。為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用要求的物理結(jié)構(gòu)的過(guò)程,就是數(shù)據(jù)庫(kù)的物理設(shè)計(jì)。
數(shù)據(jù)庫(kù)的物理設(shè)計(jì)通常分為兩步:
(1)確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫(kù)中主要指存取方法和存儲(chǔ)結(jié)構(gòu);
(2)對(duì)物理結(jié)構(gòu)進(jìn)行評(píng)價(jià),評(píng)價(jià)的重點(diǎn)是時(shí)間和空間效率。
如果評(píng)價(jià)結(jié)果滿足原設(shè)計(jì)要求,則可進(jìn)入到物理實(shí)施階段,否則,就需要重新設(shè)計(jì)或修改物理結(jié)構(gòu),有時(shí)甚至要返回邏輯設(shè)計(jì)階段修改數(shù)據(jù)模型。
4.1 數(shù)據(jù)庫(kù)的物理設(shè)計(jì)的內(nèi)容和方法
不同的數(shù)據(jù)庫(kù)產(chǎn)品所提供的物理環(huán)境、存取方法和存儲(chǔ)結(jié)構(gòu)有很大差別,能供設(shè)計(jì)人員使用的設(shè)計(jì)變量、參數(shù)范圍也很不相同,因此沒有通用的物理設(shè)計(jì)方法可遵循,只能給出一般的設(shè)計(jì)內(nèi)容和原則。希望設(shè)計(jì)優(yōu)化的物理數(shù)據(jù)庫(kù)結(jié)構(gòu),使得在數(shù)據(jù)庫(kù)上運(yùn)行的各種事務(wù)響應(yīng)時(shí)間小、存儲(chǔ)空間利用率高、事務(wù)吞吐率大。為此首先對(duì)要運(yùn)行的事務(wù)進(jìn)行詳細(xì)分析,獲得選擇物理數(shù)據(jù)庫(kù)設(shè)計(jì)所需要的參數(shù)。其次,要充分了解所用RDBMS的內(nèi)部特征,特別是系統(tǒng)提供的存取方法和存儲(chǔ)結(jié)構(gòu)。
對(duì)于數(shù)據(jù)庫(kù)查詢事務(wù),需要得到如下信息:
l 查詢的關(guān)系;
l 查詢條件所涉及的屬性;
l 連接條件所涉及的屬性;
l 查詢的投影屬性。
對(duì)于數(shù)據(jù)更新事務(wù),需要得到如下信息:
l 被更新的關(guān)系;
l 每個(gè)關(guān)系上的更新操作條件所涉及的屬性;
l 修改操作要改變的屬性值。
除此之外,還需要知道每個(gè)事務(wù)在各關(guān)系上運(yùn)行的頻率和性能要求。例如,事務(wù)T必須在10秒鐘內(nèi)結(jié)束,這對(duì)于存取方法的選擇具有重大影響。
上述這些信息是確定關(guān)系的存取方法的依據(jù)。
應(yīng)注意的是,數(shù)據(jù)庫(kù)上運(yùn)行的事務(wù)會(huì)不斷變化、增加或減少,以后需要根據(jù)上述設(shè)計(jì)信息的變化調(diào)整數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。
通常對(duì)于關(guān)系數(shù)據(jù)庫(kù)物理設(shè)計(jì)的內(nèi)容主要包括 :
l 為關(guān)系模式選擇存取方法;
l 設(shè)計(jì)關(guān)系、索引等數(shù)據(jù)庫(kù)文件的物理存儲(chǔ)結(jié)構(gòu)。
下面就介紹這些設(shè)計(jì)內(nèi)容和方法。
4.2 關(guān)系模式存取方法選擇
數(shù)據(jù)庫(kù)系統(tǒng)是多用戶共享的系統(tǒng),對(duì)同一個(gè)關(guān)系要建立多條存取路徑才能滿足多用戶的多種應(yīng)用要求。物理設(shè)計(jì)的任務(wù)之一就是要確定選擇哪些存取方法,即建立哪些存取路徑。
存取方法是快速存取數(shù)據(jù)庫(kù)中數(shù)據(jù)的技術(shù)。數(shù)據(jù)庫(kù)管理系統(tǒng)一般都提供多種存取方法。常用的存取方法有三類。第一類是索引方法,目前主要是B+樹索引方法;第二類是聚簇(Cluster)方法;第三類是HASH方法。
B+樹索引方法是數(shù)據(jù)庫(kù)中經(jīng)典的存取方法,使用最普遍。
(一)索引存取方法的選擇
所謂選擇索引存取方法實(shí)際上就是根據(jù)應(yīng)用要求確定對(duì)關(guān)系的哪些屬性列建立索引、哪些屬性列建立組合索引、哪些索引要設(shè)計(jì)為唯一索引等。一般來(lái)說(shuō):
1. 如果一個(gè)(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮在這個(gè)(或這組)屬性上建立索引(或組合索引);
2. 如果一個(gè)屬性經(jīng)常作為最大值和最小值等聚集函數(shù)的參數(shù),則考慮在這個(gè)屬性上建立索引;
3. 如果一個(gè)(或一組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn),則考慮在這個(gè)(或這組)屬性上建立索引;
關(guān)系上定義的索引數(shù)并不是越多越好,系統(tǒng)為維護(hù)索引要付出代價(jià),查找索引也要付出代價(jià)。例如,若一個(gè)關(guān)系的更新頻率很高,這個(gè)關(guān)系上定義的索引數(shù)不能太多。因?yàn)楦乱粋(gè)關(guān)系時(shí),必須對(duì)這個(gè)關(guān)系上有關(guān)的索引做相應(yīng)的修改。
二、聚簇存取方法的選擇
為了提高某個(gè)屬性(或?qū)傩越M)的查詢速度,把這個(gè)或這些屬性(稱為聚簇碼)上具有相同值的元組集中存放在連續(xù)的物理塊稱為聚簇。
聚簇功能可以大大提高按聚簇碼進(jìn)行查詢的效率。例如要查詢信息系的所有學(xué)生名單,設(shè)信息系有500名學(xué)生,在極端情況下,這500名學(xué)生所對(duì)應(yīng)的數(shù)據(jù)元組分布在500個(gè)不同的物理塊上。盡管對(duì)學(xué)生關(guān)系已按所在系建有索引,由索引很快找到了信息系學(xué)生的元組標(biāo)識(shí),避免了全表掃描,然而再由元組標(biāo)識(shí)去訪問(wèn)數(shù)據(jù)塊時(shí)就要存取500個(gè)物理塊,執(zhí)行500次I/O操作。如果將同一系的學(xué)生元組集中存放,則每讀一個(gè)物理塊可得到多個(gè)滿足查詢條件的元組,從而顯著地減少了訪問(wèn)磁盤的次數(shù)。
聚簇功能不但適用于單個(gè)關(guān)系,也適用于經(jīng)常進(jìn)行連接操作的多個(gè)關(guān)系。即把多個(gè)連接關(guān)系的元組按連接屬性值聚集存放,聚簇中的連接屬性稱為聚簇碼。這就相當(dāng)于把多個(gè)關(guān)系按“預(yù)連接”的形式存放,從而大大提高連接操作的效率。
一個(gè)數(shù)據(jù)庫(kù)可以建立多個(gè)聚簇,一個(gè)關(guān)系只能加入一個(gè)聚簇。
選擇聚簇存取方法,即確定需要建立多少個(gè)聚簇,每個(gè)聚簇中包括哪些關(guān)系。
下面先設(shè)計(jì)候選聚簇,一般來(lái)說(shuō):
(1)對(duì)經(jīng)常在一起進(jìn)行連接操作的關(guān)系可以建立聚簇;
(2)如果一個(gè)關(guān)系的一組屬性經(jīng)常出現(xiàn)在相等比較條件中,則該單個(gè)關(guān)系可建立聚簇;
(3)如果一個(gè)關(guān)系的一個(gè)(或一組)屬性上的值重復(fù)率很高,則此單個(gè)關(guān)系可建立聚簇。即對(duì)應(yīng)每個(gè)聚簇碼值的平均元組數(shù)不太少。太少了,聚簇的效果不明顯。
然后檢查候選聚簇中的關(guān)系,取消其中不必要的關(guān)系。
(1)從聚簇中刪除經(jīng)常進(jìn)行全表掃描的關(guān)系;
(2)從聚簇中刪除更新操作遠(yuǎn)多于連接操作的關(guān)系;
(3)不同的聚簇中可能包含相同的關(guān)系,一個(gè)關(guān)系可以在某一個(gè)聚簇中,但不能同時(shí)加入多個(gè)聚簇。要從這多個(gè)聚簇方案(包括不建立聚簇)中選擇一個(gè)較優(yōu)的,即在這個(gè)聚簇上運(yùn)行各種事務(wù)的總代價(jià)最小。
必須強(qiáng)調(diào)的是,聚簇只能提高某些應(yīng)用的性能,而且建立與維護(hù)聚簇的開銷是相當(dāng)大的。對(duì)已有關(guān)系建立聚簇,將導(dǎo)致關(guān)系中元組移動(dòng)其物理存儲(chǔ)位置,并使此關(guān)系上原有的索引無(wú)效,必須重建。當(dāng)一個(gè)元組的聚簇碼值改變時(shí),該元組的存儲(chǔ)位置也要做相應(yīng)移動(dòng),聚簇碼值要相對(duì)穩(wěn)定,以減少修改聚簇碼值所引起的維護(hù)開銷。
因此,當(dāng)通過(guò)聚簇碼進(jìn)行訪問(wèn)或連接是該關(guān)系的主要應(yīng)用,與聚簇碼無(wú)關(guān)的其他訪問(wèn)很少或者是次要的,這時(shí)可以使用聚簇。尤其當(dāng)SQL語(yǔ)句中包含有與聚簇碼有關(guān)的ORDER BY,GROUP BY,UNION,DISTINCT等子句或短語(yǔ)時(shí),使用聚簇特別有利,可以省去對(duì)結(jié)果集的排序操作;否則很可能會(huì)適得其反。
(三)HASH存取方法的選擇
有些數(shù)據(jù)庫(kù)管理系統(tǒng)提供了HASH存取方法。選擇HASH存取方法的規(guī)則如下:
如果一個(gè)關(guān)系的屬性主要出現(xiàn)在等連接條件中或主要出現(xiàn)在相等比較選擇條件中,而且滿足下列兩個(gè)條件之一,則此關(guān)系可以選擇HASH存取方法:
(1)如果一個(gè)關(guān)系的大小可預(yù)知,而且不變;
(2)如果關(guān)系的大小動(dòng)態(tài)改變,而且數(shù)據(jù)庫(kù)管理系統(tǒng)提供了動(dòng)態(tài)HASH存取方法。
4.3 確定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)
確定數(shù)據(jù)庫(kù)物理結(jié)構(gòu)主要指確定數(shù)據(jù)的存放位置和存儲(chǔ)結(jié)構(gòu),包括確定關(guān)系、索引、聚簇、日志、備份等的存儲(chǔ)安排和存儲(chǔ)結(jié)構(gòu);確定系統(tǒng)配置等。
確定數(shù)據(jù)的存放位置和存儲(chǔ)結(jié)構(gòu)要綜合考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三方面的因素。這三個(gè)方面常常是相互矛盾的,因此需要進(jìn)行權(quán)衡,選擇一個(gè)折中方案。
1. 確定數(shù)據(jù)的存放位置
為了提高系統(tǒng)性能,應(yīng)該根據(jù)應(yīng)用情況將數(shù)據(jù)的易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開存放。
例如,目前許多計(jì)算機(jī)都有多個(gè)磁盤,因此可以將表和索引放在不同的磁盤上,在查詢時(shí),由于兩個(gè)磁盤驅(qū)動(dòng)器并行工作,可以提高物理I/O讀寫的效率;也可以將比較大的表分放在兩個(gè)磁盤上,以加快存取速度,這在多用戶環(huán)境下特別有效;還可以將日志文件與數(shù)據(jù)庫(kù)對(duì)象(表、索引等)放在不同的磁盤上以改進(jìn)系統(tǒng)的性能。此外,數(shù)據(jù)庫(kù)的數(shù)據(jù)備份和日志文件備份等只在故障恢復(fù)時(shí)才使用,而且數(shù)據(jù)量很大,可以存放在磁帶上。
由于各個(gè)系統(tǒng)所能提供的對(duì)數(shù)據(jù)進(jìn)行物理安排的手段、方法差異很大,因此設(shè)計(jì)人員應(yīng)仔細(xì)了解給定的RDBMS提供的方法和參數(shù),針對(duì)應(yīng)用環(huán)境的要求,對(duì)數(shù)據(jù)進(jìn)行適當(dāng)?shù)奈锢戆才拧?/p>
2. 確定系統(tǒng)配置
DBMS產(chǎn)品一般都提供了一些系統(tǒng)配置變量、存儲(chǔ)分配參數(shù),供設(shè)計(jì)人員和DBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值。但是這些值不一定適合每一種應(yīng)用環(huán)境,在進(jìn)行物理設(shè)計(jì)時(shí),需要重新對(duì)這些變量賦值,以改善系統(tǒng)的性能。
系統(tǒng)配置變量很多,例如:同時(shí)使用數(shù)據(jù)庫(kù)的用戶數(shù),同時(shí)打開的數(shù)據(jù)庫(kù)對(duì)象數(shù),內(nèi)存分配參數(shù),緩沖區(qū)分配參數(shù)(使用的緩沖區(qū)長(zhǎng)度、個(gè)數(shù)),存儲(chǔ)分配參數(shù),物理塊的大小,物理塊裝填因子,時(shí)間片大小,數(shù)據(jù)庫(kù)的大小,鎖的數(shù)目,等等。這些參數(shù)值影響存取時(shí)間和存儲(chǔ)空間的分配,在物理設(shè)計(jì)時(shí)就要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)性能最佳。
在物理設(shè)計(jì)時(shí)對(duì)系統(tǒng)配置變量的調(diào)整只是初步的,在系統(tǒng)運(yùn)行時(shí)還要根據(jù)系統(tǒng)實(shí)際運(yùn)行情況做進(jìn)一步的調(diào)整,以期切實(shí)改進(jìn)系統(tǒng)性能。
4.4 評(píng)價(jià)物理結(jié)構(gòu)
數(shù)據(jù)庫(kù)物理設(shè)計(jì)過(guò)程中需要對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須對(duì)這些方案進(jìn)行細(xì)致的評(píng)價(jià),從中選擇一個(gè)較優(yōu)的方案作為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。
評(píng)價(jià)物理數(shù)據(jù)庫(kù)的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手,對(duì)估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計(jì)。
第五、 數(shù)據(jù)庫(kù)的實(shí)施和維護(hù)
完成數(shù)據(jù)庫(kù)的物理設(shè)計(jì)之后,設(shè)計(jì)人員就要用RDBMS提供的數(shù)據(jù)定義語(yǔ)言和其他實(shí)用程序?qū)?shù)據(jù)庫(kù)邏輯設(shè)計(jì)和物理設(shè)計(jì)結(jié)果嚴(yán)格描述出來(lái),成為DBMS可以接受的源代碼,再經(jīng)過(guò)調(diào)試產(chǎn)生目標(biāo)模式。然后就可以組織數(shù)據(jù)入庫(kù)了,這就是數(shù)據(jù)庫(kù)實(shí)施階段。
5.1 數(shù)據(jù)的載入和應(yīng)用程序的調(diào)試
數(shù)據(jù)庫(kù)實(shí)施階段包括兩項(xiàng)重要的工作,一項(xiàng)是數(shù)據(jù)的載入,另一項(xiàng)是應(yīng)用程序的編碼和調(diào)試。
一般數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)量都很大,而且數(shù)據(jù)來(lái)源于部門中的各個(gè)不同的單位,數(shù)據(jù)的組織方式、結(jié)構(gòu)和格式都與新設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)有相當(dāng)?shù)牟罹,組織數(shù)據(jù)錄入就要將各類源數(shù)據(jù)從各個(gè)局部應(yīng)用中抽取出來(lái),輸入計(jì)算機(jī),再分類轉(zhuǎn)換,最后綜合成符合新設(shè)計(jì)的數(shù)據(jù)庫(kù)結(jié)構(gòu)的形式,輸入數(shù)據(jù)庫(kù)。因此這樣的數(shù)據(jù)轉(zhuǎn)換、組織入庫(kù)的工作是相當(dāng)費(fèi)力費(fèi)時(shí)的工作。
特別是原系統(tǒng)是手工數(shù)據(jù)處理系統(tǒng)時(shí),各類數(shù)據(jù)分散在各種不同的原始表格、憑證、單據(jù)之中。在向新的數(shù)據(jù)庫(kù)系統(tǒng)中輸入數(shù)據(jù)時(shí),還要處理大量的紙質(zhì)文件,工作量就更大!
由于各個(gè)不同的應(yīng)用環(huán)境差異很大,不可能有通用的轉(zhuǎn)換器,DBMS產(chǎn)品也不提供通用的轉(zhuǎn)換工具。為提高數(shù)據(jù)輸入工作的效率和質(zhì)量,,應(yīng)該針對(duì)具體的應(yīng)用環(huán)境設(shè)計(jì)一個(gè)數(shù)據(jù)錄入子系統(tǒng),由計(jì)算機(jī)來(lái)完成數(shù)據(jù)入庫(kù)的任務(wù)。
由于要入庫(kù)的數(shù)據(jù)在原來(lái)的系統(tǒng)中的格式結(jié)構(gòu)與新系統(tǒng)中不完全一樣,有的差別可能還比較大,不僅向計(jì)算機(jī)內(nèi)輸入數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤,轉(zhuǎn)換過(guò)程中也有可能出錯(cuò)。因此在源數(shù)據(jù)入庫(kù)之前要采用多種方法對(duì)它們進(jìn)行檢驗(yàn),以防止不正確的數(shù)據(jù)入庫(kù),這部分的工作在整個(gè)數(shù)據(jù)輸入子系統(tǒng)中是非常重要的。
在設(shè)計(jì)數(shù)據(jù)輸入子系統(tǒng)時(shí)還要注意原有系統(tǒng)的特點(diǎn),例如對(duì)原有系統(tǒng)是人工數(shù)據(jù)處理系統(tǒng)的情況,盡管新系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)可能與原系統(tǒng)有很大差別,在設(shè)計(jì)數(shù)據(jù)輸入子系統(tǒng)時(shí),盡量讓輸入格式與原系統(tǒng)結(jié)構(gòu)相近,這不僅使處理手工文件比較方便,更重要的是減少用戶出錯(cuò)的可能性,保證數(shù)據(jù)輸入的質(zhì)量,F(xiàn)有的DBMS一般都提供不同DBMS之間數(shù)據(jù)轉(zhuǎn)換的工具,若原來(lái)是數(shù)據(jù)庫(kù)系統(tǒng),就可以利用新系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換工具,先將原系統(tǒng)中的表轉(zhuǎn)換成新系統(tǒng)中相同結(jié)構(gòu)的臨時(shí)表,再將這些表中的數(shù)據(jù)分類、轉(zhuǎn)換、綜合成符合新系統(tǒng)的數(shù)據(jù)模式,插入相應(yīng)的表中。
數(shù)據(jù)庫(kù)應(yīng)用程序的設(shè)計(jì)應(yīng)該與數(shù)據(jù)庫(kù)設(shè)計(jì)同時(shí)進(jìn)行,因此在組織數(shù)據(jù)入庫(kù)的同時(shí)還要調(diào)試應(yīng)用程序。應(yīng)用程序的設(shè)計(jì)、編碼和調(diào)試的方法、步驟在軟件工程等課程中有詳細(xì)講解,這里就不贅述了。
5.2 數(shù)據(jù)庫(kù)的試運(yùn)行
在原有系統(tǒng)的數(shù)據(jù)有一小部分已輸入數(shù)據(jù)庫(kù)后,就可以開始對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行聯(lián)合調(diào)試,這又稱為數(shù)據(jù)庫(kù)的試運(yùn)行。
這一階段要實(shí)際運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用程序,執(zhí)行對(duì)數(shù)據(jù)庫(kù)的各種操作,測(cè)試應(yīng)用程序的功能是否滿足設(shè)計(jì)要求。如果不滿足,對(duì)應(yīng)用程序部分則要修改、調(diào)整,直到達(dá)到設(shè)計(jì)要求為止。
在數(shù)據(jù)庫(kù)試運(yùn)行時(shí),還要測(cè)試系統(tǒng)的性能指標(biāo),分析其是否達(dá)到設(shè)計(jì)目標(biāo)。在對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì)時(shí)已初步確定了系統(tǒng)的物理參數(shù)值,但一般的情況下,設(shè)計(jì)時(shí)的考慮在許多方面只是近似的估計(jì),和實(shí)際系統(tǒng)運(yùn)行總有一定的差距,因此必須在試運(yùn)行階段實(shí)際測(cè)量和評(píng)價(jià)系統(tǒng)性能指標(biāo)。事實(shí)上,有些參數(shù)的最佳值往往是經(jīng)過(guò)運(yùn)行調(diào)試后找到的。如果測(cè)試的結(jié)果與設(shè)計(jì)目標(biāo)不符,則要返回物理設(shè)計(jì)階段,重新調(diào)整物理結(jié)構(gòu),修改系統(tǒng)參數(shù),某些情況下甚至要返回邏輯設(shè)計(jì)階段,修改邏輯結(jié)構(gòu)。
這里特別要強(qiáng)調(diào)兩點(diǎn),第一,上面已經(jīng)講到組織數(shù)據(jù)入庫(kù)是十分費(fèi)時(shí)費(fèi)力的事,如果試運(yùn)行后還要修改數(shù)據(jù)庫(kù)的設(shè)計(jì),還要重新組織數(shù)據(jù)入庫(kù)。因此應(yīng)分期分批地組織數(shù)據(jù)入庫(kù),先輸入小批量數(shù)據(jù)做調(diào)試用,待試運(yùn)行基本合格后,再大批量輸入數(shù)據(jù),逐步增加數(shù)據(jù)量,逐步完成運(yùn)行評(píng)價(jià)。
第二,在數(shù)據(jù)庫(kù)試運(yùn)行階段,由于系統(tǒng)還不穩(wěn)定,硬、軟件故障隨時(shí)都可能發(fā)生。而系統(tǒng)的操作人員對(duì)新系統(tǒng)還不熟悉,誤操作也不可避免,因此應(yīng)首先調(diào)試運(yùn)行DBMS的恢復(fù)功能,做好數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)工作。一旦故障發(fā)生,能使數(shù)據(jù)庫(kù)盡快恢復(fù),盡量減少對(duì)數(shù)據(jù)庫(kù)的破壞。
5.3 數(shù)據(jù)庫(kù)的運(yùn)行和維護(hù)
數(shù)據(jù)庫(kù)試運(yùn)行合格后,數(shù)據(jù)庫(kù)開發(fā)工作就基本完成,即可投入正式運(yùn)行了。但是,由于應(yīng)用環(huán)境在不斷變化,數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中物理存儲(chǔ)也會(huì)不斷變化,對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行評(píng)價(jià)、調(diào)整、修改等維護(hù)工作是一個(gè)長(zhǎng)期的任務(wù),也是設(shè)計(jì)工作的繼續(xù)和提高。
在數(shù)據(jù)庫(kù)運(yùn)行階段,對(duì)數(shù)據(jù)庫(kù)經(jīng)常性的維護(hù)工作主要是由DBA完成的,它包括:
1. 數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)
數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)是系統(tǒng)正式運(yùn)行后最重要的維護(hù)工作之一。DBA要針對(duì)不同的應(yīng)用要求制定不同的轉(zhuǎn)儲(chǔ)計(jì)劃,以保證一旦發(fā)生故障能盡快將數(shù)據(jù)庫(kù)恢復(fù)到某種一致的狀態(tài),并盡可能減少對(duì)數(shù)據(jù)庫(kù)的破壞。
2. 數(shù)據(jù)庫(kù)的安全性、完整性控制
在數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中,由于應(yīng)用環(huán)境的變化,對(duì)安全性的要求也會(huì)發(fā)生變化,比如有的數(shù)據(jù)原來(lái)是機(jī)密的,現(xiàn)在是可以公開查詢的了,而新加入的數(shù)據(jù)又可能是機(jī)密的了。系統(tǒng)中用戶的密級(jí)也會(huì)改變。這些都需要DBA根據(jù)實(shí)際情況修改原有的安全性控制。同樣,數(shù)據(jù)庫(kù)的完整性約束條件也會(huì)變化,也需要DBA不斷修正,以滿足用戶要求。
3. 數(shù)據(jù)庫(kù)性能的監(jiān)督、分析和改造
在數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中,監(jiān)督系統(tǒng)運(yùn)行,對(duì)監(jiān)測(cè)數(shù)據(jù)進(jìn)行分析,找出改進(jìn)系統(tǒng)性能的方法是DBA的又一重要任務(wù)。目前有些DBMS產(chǎn)品提供了監(jiān)測(cè)系統(tǒng)性能參數(shù)的工具,DBA可以利用這些工具方便地得到系統(tǒng)運(yùn)行過(guò)程中一系列性能參數(shù)的值。DBA應(yīng)仔細(xì)分析這些數(shù)據(jù),判斷當(dāng)前系統(tǒng)運(yùn)行狀況是否是最佳,應(yīng)當(dāng)做哪些改進(jìn)。例如調(diào)整系統(tǒng)物理參數(shù),或?qū)?shù)據(jù)庫(kù)進(jìn)行重組織或重構(gòu)造等。
4. 數(shù)據(jù)庫(kù)的重組織與重構(gòu)造
數(shù)據(jù)庫(kù)運(yùn)行一段時(shí)間后,由于記錄不斷增、刪、改,會(huì)使數(shù)據(jù)庫(kù)的物理存儲(chǔ)情況變壞,降低了數(shù)據(jù)的存取效率,數(shù)據(jù)庫(kù)性能下降,這時(shí)DBA就要對(duì)數(shù)據(jù)庫(kù)進(jìn)行重組織,或部分重組織(只對(duì)頻繁增、刪的表進(jìn)行重組織)。DBMS一般都提供數(shù)據(jù)重組織用的實(shí)用程序。在重組織的過(guò)程中,按原設(shè)計(jì)要求重新安排存儲(chǔ)位置、回收垃圾、減少指針鏈等,提高系統(tǒng)性能。
數(shù)據(jù)庫(kù)的重組織,并不修改原設(shè)計(jì)的邏輯和物理結(jié)構(gòu),而數(shù)據(jù)庫(kù)的重構(gòu)造則不同,它是指部分修改數(shù)據(jù)庫(kù)的模式和內(nèi)模式!
由于數(shù)據(jù)庫(kù)應(yīng)用環(huán)境發(fā)生變化,增加了新的應(yīng)用或新的實(shí)體,取消了某些應(yīng)用,有的實(shí)體與實(shí)體間的聯(lián)系也發(fā)生了變化等,使原有的數(shù)據(jù)庫(kù)設(shè)計(jì)不能滿足新的需求,需要調(diào)整數(shù)據(jù)庫(kù)的模式和內(nèi)模式。例如,在表中增加或刪除某些數(shù)據(jù)項(xiàng),改變數(shù)據(jù)項(xiàng)的類型,增加或刪除某個(gè)表,改變數(shù)據(jù)庫(kù)的容量,增加或刪除某些索引等。當(dāng)然數(shù)據(jù)庫(kù)的重構(gòu)也是有限的,只能做部分修改。如果應(yīng)用變化太大,重構(gòu)也無(wú)濟(jì)于事,說(shuō)明此數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的生命周期已經(jīng)結(jié)束,應(yīng)該設(shè)計(jì)新的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)了。
拓展鏈接:
Range.Activate 方法 (Excel)
https://msdn.microsoft.com/zh-cn/library/ff837085.aspx
Free Open Source Codes Forge and SharingFree Open Source Codes Forge and Sharing - CodeForge.com
#c1
posted @
本文關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用,由筆耕文化傳播整理發(fā)布。
本文編號(hào):349233
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/349233.html