




已閱讀5頁,還剩426頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章 數(shù)據(jù)庫基本原理 1.1 數(shù)據(jù)庫概述 1.2 數(shù)據(jù)模型 1.3關(guān)系的完整性 1.4關(guān)系模型的規(guī)范化,1.1 數(shù)據(jù)庫概述,數(shù)據(jù)庫技術(shù)產(chǎn)生于20世紀(jì)60年代中期,幾十年來得到了迅速發(fā)展。 人們對信息和數(shù)據(jù)的利用和處理已進(jìn)入自動化、網(wǎng)絡(luò)化和社會化階段,如銀行儲蓄、股票交易、資料查詢、氣象預(yù)報、機(jī)票預(yù)定等。這些任務(wù)既需要大量數(shù)據(jù),又要求快速處理并及時得到結(jié)果,是傳統(tǒng)的人工方法不可能完成的。 飛速發(fā)展的計算機(jī)技術(shù)使上述大規(guī)模的數(shù)據(jù)處理得以實(shí)現(xiàn)。,1.1.1 數(shù)據(jù)庫的產(chǎn)生和發(fā)展,1.1.1 (續(xù)一),數(shù)據(jù)庫 (Database) 這個名詞起源于20世紀(jì)50年代。 從目前情況看,關(guān)系數(shù)據(jù)庫仍然占絕對的主導(dǎo)地位,并將影響著數(shù)據(jù)庫技術(shù)的發(fā)展。 數(shù)據(jù)庫技術(shù)的發(fā)展已經(jīng)歷了4個發(fā)展階段:,1.1.1 (續(xù)二),1. 人工管理數(shù)據(jù)的特點(diǎn) (1)數(shù)據(jù)不保存; (2)沒有專用軟件對數(shù)據(jù)進(jìn)行管理; (3)數(shù)據(jù)不共享; (4)數(shù)據(jù)不具有獨(dú)立性。 2. 文件系統(tǒng)管理的特點(diǎn) (1)數(shù)據(jù)可以長期保存; (2)有專用軟件對數(shù)據(jù)進(jìn)行管理 ; (3)數(shù)據(jù)共享性差、冗余度大; (4)數(shù)據(jù)獨(dú)立性差。,1.1.1 (續(xù)三),3. 數(shù)據(jù)庫系統(tǒng)的特點(diǎn) (1)數(shù)據(jù)結(jié)構(gòu)化; (2)數(shù)據(jù)冗余度小; (3)數(shù)據(jù)共享性好; (4)數(shù)據(jù)獨(dú)立性高; (5)數(shù)據(jù)有統(tǒng)一管理和控制。,1.1.1 (續(xù)四),4. 高級數(shù)據(jù)庫階段 計算機(jī)輔助設(shè)計/制造(CAD/CAM)、計算機(jī)集成制造(CIM)、地理信息系統(tǒng)(GIS)、辦公信息系統(tǒng)(OIS)、計算機(jī)輔助超大規(guī)模集成電路設(shè)計(VLSI CAD)等都需要數(shù)據(jù)庫的支持。 這些系統(tǒng)在數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)存儲方面有特殊要求,傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)并不能支持。,1.1.2 現(xiàn)實(shí)世界、信息世界、數(shù)據(jù)世界,1. 現(xiàn)實(shí)世界 現(xiàn)實(shí)世界存在著大量的事物。這些事物可以是具體的,也可以是抽象的。 各個事物都有表征自己的各種特征。 由于考慮問題的不同,同一個事物可能有不同的特征來描述它。 每一個事物的全部特征就反映了該事物本身。每一個事物至少有一個特征。,1.1.2 (續(xù)一),2. 信息世界 人們觀察各種事物,在大腦中形成抽象概念,這就是信息(Information) 。 信息世界就是現(xiàn)實(shí)世界的事物在人腦中的抽象。,1.1.2 (續(xù)二),3. 數(shù)據(jù)世界 數(shù)據(jù)世界就是信息世界中信息的數(shù)據(jù)化。 信息和數(shù)據(jù)是緊密相關(guān)的,許多場合將它們看作同義詞。 在數(shù)據(jù)世界里,將現(xiàn)實(shí)世界中諸事物凡有規(guī)律的特征都用恰當(dāng)?shù)木幋a表示是非常必要的。 編碼的質(zhì)量是影響數(shù)據(jù)庫系統(tǒng)的決定性因素。,1.1.3 數(shù)據(jù)庫基本概念,(1) 數(shù)據(jù) 數(shù)據(jù)(Data)就是描述信息的符號,是數(shù)據(jù)庫中存儲的基本對象。 數(shù)據(jù)處理(Data Processing)是將原始數(shù)據(jù)轉(zhuǎn)換成信息的過程。 (2) 數(shù)據(jù)庫 數(shù)據(jù)庫(Database,簡稱DB)是在計算機(jī)系統(tǒng)中按照一定數(shù)據(jù)模型組織、存儲和應(yīng)用的相互聯(lián)系的數(shù)據(jù)集合。,1.1.3 (續(xù)一),數(shù)據(jù)庫技術(shù)(Database Technique)就是一種對數(shù)據(jù)進(jìn)行加工以得到有用信息的計算機(jī)軟件技術(shù)。 (3) 數(shù)據(jù)庫管理系統(tǒng) 數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS)是一種計算機(jī)軟件系統(tǒng) 。 以數(shù)據(jù)庫管理系統(tǒng)為核心的應(yīng)用系統(tǒng)稱為管理信息系統(tǒng)(Management Information System,簡稱MIS)。,1.1.3 (續(xù)二),(4) 數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫系統(tǒng)(Database System,簡稱DBS)就是以數(shù)據(jù)庫應(yīng)用為基礎(chǔ)的計算機(jī)系統(tǒng)。 數(shù)據(jù)庫系統(tǒng)不僅包括必須存儲的數(shù)據(jù),還包括相應(yīng)的硬件、軟件和各類工作人員。,1.2 數(shù)據(jù)模型,數(shù)據(jù)庫中的大量數(shù)據(jù)必須按嚴(yán)格的數(shù)據(jù)模型來組織。 數(shù)據(jù)庫中的數(shù)據(jù)是高度結(jié)構(gòu)化的,它不僅反映數(shù)據(jù)本身,而且反映數(shù)據(jù)之間的關(guān)系。 數(shù)據(jù)模型就是描述這種關(guān)系的數(shù)據(jù)結(jié)構(gòu)形式。 理想的數(shù)據(jù)模型應(yīng)能滿足三方面的要求:一是能比較真實(shí)地描述現(xiàn)實(shí)世界;二是容易被人所理解;三是便于在計算機(jī)上實(shí)現(xiàn)。 根據(jù)模型應(yīng)用的不同目的??梢詫⒛P蛣澐譃閮深?,它們分屬于兩個不同的層次。,1.2 數(shù)據(jù)模型(續(xù)),概念模型(Idea Model)是現(xiàn)實(shí)世界到信息世界的抽象,又稱為信息模型。 數(shù)據(jù)模型(Data Model)是信息世界到數(shù)據(jù)世界的抽象。 數(shù)據(jù)庫領(lǐng)域最常見的數(shù)據(jù)模型有4種:層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P汀F渲袑哟文P秃途W(wǎng)狀模型統(tǒng)稱為非關(guān)系模型。 目前,關(guān)系模型是最常用的數(shù)據(jù)模型。以關(guān)系模型為基礎(chǔ)建立的數(shù)據(jù)庫管理系統(tǒng)稱為關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。,1.2.1 數(shù)據(jù)模型的組成要素,數(shù)據(jù)模型通常都是由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束3個要素組成。 1. 數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)是所研究的對象類型(object type)的集合,用于描述系統(tǒng)的靜態(tài)特征。 2. 數(shù)據(jù)操作 數(shù)據(jù)操作是指數(shù)據(jù)庫中各種對象(型)的實(shí)例(值)允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則,用于描述系統(tǒng)的動態(tài)特征。,1.2.1 數(shù)據(jù)模型的組成要素(續(xù)),3. 數(shù)據(jù)約束條件 數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。 完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和存儲規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效和相容。 數(shù)據(jù)模型還應(yīng)該提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。,1.2.2 信息世界的主要概念,1. 實(shí)體 實(shí)體(Entity)就是現(xiàn)實(shí)世界中客觀存在并可相互區(qū)分的事物。 實(shí)體既可以是看得見摸得著的具體的事物,也可以是抽象的概念或聯(lián)系。例如,某一本書、某一架飛機(jī)、某個學(xué)生等都是實(shí)體。,1.2.2 (續(xù)一),2. 屬性 實(shí)體所具有的某一特征稱為屬性(Attribute)。 一個實(shí)體由若干個(至少一個)屬性來描述。 一個實(shí)體的所有屬性組成實(shí)體本身。 例如,學(xué)生實(shí)體可以由學(xué)號、姓名、性別、出生年月日、班級等屬性組成。而(0100001、馮東梅、女、1980/12/26、01電子商務(wù)1)就是一個學(xué)生(實(shí)體)的屬性值。,1.2.2 (續(xù)二),3. 碼 唯一標(biāo)識實(shí)體的屬性組稱為碼(Key),通常又稱為關(guān)鍵字。 如果實(shí)體有多個碼,則可以選定其中一個碼為主碼(Primary Key),通常又稱為主關(guān)鍵字。 如果實(shí)體只有一個碼,它也是主碼(主關(guān)鍵字)。,1.2.2 (續(xù)三),例如,一個學(xué)校里,學(xué)生實(shí)體的學(xué)號是肯定不重復(fù)的。所以學(xué)號可以作為學(xué)生實(shí)體的碼。如果學(xué)生實(shí)體中含有身份證號屬性,則身份證號也是碼,可以在學(xué)號和身份證號中選定一個作為主碼(主關(guān)鍵字)。 通常情況下只關(guān)注實(shí)體的主碼,所以,在不會引起混淆時,通常說碼、主碼、關(guān)鍵字或主關(guān)鍵字,含義都相同。 4. 域 屬性的允許取值的集合稱為該屬性的域(Domain)。,1.2.2 (續(xù)四),例如,學(xué)號的域是7位數(shù)字(某校規(guī)定),性別的域是男、女,班級的域是該校所有班級的集合。 5. 實(shí)體型 用實(shí)體名及其所有屬性名集合來抽象和描述同類實(shí)體稱為實(shí)體型(Entity type)。 例如,學(xué)生(學(xué)號、姓名、性別、出生年月日、班級)就是一個實(shí)體型。,1.2.2 (續(xù)五),6. 實(shí)體集 同型實(shí)體的集合稱為實(shí)體集(Entity set)。 例如,某個學(xué)校(或某個班級)的全體學(xué)生就是一個實(shí)體集。 7. 聯(lián)系 信息世界的不同實(shí)體集之間和同一實(shí)體集內(nèi)部都可能存在一定的聯(lián)系(Relationship)。,1.2.2 (續(xù)六),數(shù)據(jù)世界的概念是和信息世界的概念相對應(yīng)的: 數(shù)據(jù)表(Data table)是實(shí)體集的數(shù)據(jù)表示; 記錄(Record)是實(shí)體的數(shù)據(jù)表示; 數(shù)據(jù)項(Item)是屬性的數(shù)據(jù)表示。 記錄由若干數(shù)據(jù)項組成。,1.2.3 實(shí)體的聯(lián)系,信息世界存在的聯(lián)系有兩種:其一是一個實(shí)體集內(nèi)部的聯(lián)系;其二是不同實(shí)體集之間的聯(lián)系。 1. 實(shí)體集內(nèi)部的聯(lián)系 實(shí)體集內(nèi)部的聯(lián)系通常指組成該實(shí)體的各屬性之間的聯(lián)系。,1.2.3 實(shí)體的聯(lián)系(續(xù)一),在表1-1中,不同實(shí)體的學(xué)號都不重復(fù),即學(xué)號與實(shí)體間有一一對應(yīng)關(guān)系。 學(xué)號就是學(xué)生情況這個實(shí)體集的關(guān)鍵字。,1.2.3 實(shí)體的聯(lián)系(續(xù)二),在表1-2中,不同實(shí)體的學(xué)號(或課程號、或成績)都有可能重復(fù)。但是,不同實(shí)體的學(xué)號加課程號則不可能重復(fù)。所以,學(xué)號和課程號這兩個屬性組成的屬性組是選課及成績這個關(guān)系的關(guān)鍵字。,1.2.3 實(shí)體的聯(lián)系(續(xù)三),2. 實(shí)體集之間的聯(lián)系 對于兩個不同的實(shí)體集A和B,它們之間的聯(lián)系通常有以下三種方式:,一對一聯(lián)系(1:1) 一對多聯(lián)系(1:n) 多對多聯(lián)系(m:n),1.2.3 實(shí)體的聯(lián)系(續(xù)四),一對一聯(lián)系是一對多聯(lián)系的特例,一對多聯(lián)系又是多對多聯(lián)系的特例。 多對多聯(lián)系直接處理起來很困難,通常是將多對多聯(lián)系轉(zhuǎn)化為兩個一對多聯(lián)系來處理。 概念模型和各種數(shù)據(jù)模型均不支持多對多聯(lián)系,只支持一對一聯(lián)系和一對多聯(lián)系。,1.2.3 實(shí)體的聯(lián)系(續(xù)五),同一實(shí)體集內(nèi)的各實(shí)體之間也可以存在一對一、一對多或多對多聯(lián)系。例如,學(xué)生實(shí)體集內(nèi)部存在“領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)”的聯(lián)系,即某一學(xué)生(班長)“領(lǐng)導(dǎo)”多名(全班)學(xué)生,而一個學(xué)生僅被一個學(xué)生(班長)“領(lǐng)導(dǎo)”,這就是一對多聯(lián)系 。 在復(fù)雜問題中,兩個以上的實(shí)體集之間也往往存在一對一、一對多或多對多聯(lián)系。,1.2.4 概念模型,對于具體的實(shí)際問題,建立正確合理的概念模型是建立數(shù)據(jù)模型的前提。 一個好的概念模型應(yīng)該考慮和解決的問題是: (1) 實(shí)際問題需要哪些實(shí)體集以及各個實(shí)體需要哪些屬性; (2) 這些實(shí)體集內(nèi)部和實(shí)體集之間有怎樣的聯(lián)系; (3) 如果存在多對多聯(lián)系,如何轉(zhuǎn)化為一對多聯(lián)系。,1.2.4 概念模型(續(xù)一),表示概念模型最常用的是實(shí)體聯(lián)系方法(entity-relationship approach)。該方法用ER圖來描述。 在ER圖中,實(shí)體型、屬性和聯(lián)系的表示方法如下: (1) 實(shí)體型:用矩形表示,矩形框內(nèi)寫實(shí)體名;,1.2.4 概念模型(續(xù)二),(2) 屬性:用橢圓表示,并用無向線段與相應(yīng)的實(shí)體連接; (3) 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向線段與有關(guān)的實(shí)體連接。同時在無向線段旁標(biāo)上聯(lián)系的類型(1:1,1:n或m:n)。 聯(lián)系本身也是一種實(shí)體型,也可以有屬性。如果一個聯(lián)系有屬性,也用無向線段將屬性與該聯(lián)系連接。,1.2.4 概念模型(續(xù)三),(a)1:1聯(lián)系 (b)1:n聯(lián)系 (c)m:n聯(lián)系 兩個實(shí)體之間的三類聯(lián)系,1.2.4 概念模型(續(xù)四),學(xué)生實(shí)體、課程實(shí)體及其屬性 將多對多聯(lián)系轉(zhuǎn)化為一對多聯(lián)系的一般方法是:增加一個新的實(shí)體集,并且這個新的實(shí)體集和原來的兩個實(shí)體集之間都是一對多聯(lián)系。,1.2.4 概念模型(續(xù)五),學(xué)生學(xué)習(xí)成績管理概念模型,1.2.4 概念模型(續(xù)六),這個例子也給出了將多對多聯(lián)系轉(zhuǎn)化為一對多聯(lián)系的一般方法,這就是:增加一個新的實(shí)體集,并且這個新的實(shí)體集和原來的兩個實(shí)體集之間都是一對多聯(lián)系。,1.2.5 層次模型,層次模型(Hierarchical Model)用樹形結(jié)構(gòu)表示各類實(shí)體以及實(shí)體間的聯(lián)系。 從樹的觀點(diǎn)看,層次模型滿足以下兩個條件: (1) 有且僅有一個結(jié)點(diǎn)無雙親結(jié)點(diǎn),稱之為根結(jié)點(diǎn)(簡稱根); (2) 根以外的其他結(jié)點(diǎn)有且僅有一個雙親結(jié)點(diǎn)。 層次模型只能反映實(shí)體之間一對多的關(guān)系。,1.2.5 層次模型(續(xù)),層次模型示意圖,下圖所示是一個層次模型的典型。,1.2.6 網(wǎng)狀模型,網(wǎng)狀模型(Network Model)是比層次模型更具普遍性的一種結(jié)構(gòu)。它去掉了層次模型的兩個限制條件,允許有一個以上的結(jié)點(diǎn)無雙親結(jié)點(diǎn),允許結(jié)點(diǎn)可以有多個雙親結(jié)點(diǎn),此外它還允許兩個結(jié)點(diǎn)之間有多種聯(lián)系(稱之為復(fù)合聯(lián)系)。,1.2.6 網(wǎng)狀模型(續(xù)一),網(wǎng)狀模型有如下優(yōu)點(diǎn): (1)可以直接描述包括多對多在內(nèi)的更復(fù)雜的關(guān)系。 (2)具有良好的性能,存取效率較高。 網(wǎng)狀模型也有缺點(diǎn): (1)對計算機(jī)的硬件和軟件環(huán)境要求較高。 (2)數(shù)據(jù)庫的獨(dú)立性較差。 (3)操作比較復(fù)雜。,1.2.6 網(wǎng)狀模型(續(xù)二),下圖表示零部件的采購使用關(guān)系,這是一個典型的網(wǎng)狀模型。,1.2.6 網(wǎng)狀模型(續(xù)三),下圖表示1.2.4介紹的學(xué)生選修關(guān)系這個網(wǎng)狀模型。,1.2.7 關(guān)系模型,關(guān)系模型(Relational Model)中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。 表1-1所示的學(xué)生情況就是一個關(guān)系模型。 關(guān)系模型的主要概念: 關(guān)系(relation):關(guān)系模型中表示數(shù)據(jù)的整個一張二維表就是關(guān)系。 元組(Tuple):二維表中的每一行即為一個元組,對應(yīng)概念模型的一個實(shí)體。 屬性(Attribute):二維表中的每一列即為一個屬性,對應(yīng)概念模型的一個屬性。,1.2.7 關(guān)系模型(續(xù)一),主碼(Key):二維表中唯一標(biāo)識元組的某個屬性組稱為該關(guān)系的主碼,對應(yīng)概念模型的碼。 域(Domain):二維表中任一屬性的取值范圍稱為該屬性的域,對應(yīng)概念模型的域。 分量:元組中的每一個屬性值稱為元組的分量。 關(guān)系模式(Relation schema):對關(guān)系的描述稱為關(guān)系模式,通常用關(guān)系名及其所有屬性名集合來表示,類似概念模型中實(shí)體型的表示方法。,1.2.7 關(guān)系模型(續(xù)二),整個表1-1就是一個關(guān)系。 表中的每一行都是一個元組。 學(xué)號、姓名、性別等每一列都是屬性。 學(xué)號是這個關(guān)系的碼。 男、女、正確的日期集合分別是性別和出生年月日的域。 0100001、馮東梅、女、1980-12-26、北京和1100等都是分量。 而學(xué)生(學(xué)號,姓名,性別,出生年月日,家庭所在地,家庭人均月收入)是這個關(guān)系的關(guān)系模式。,1.2.7 關(guān)系模型(續(xù)三),關(guān)系模型既可以反映屬性之間一對多的關(guān)系,也可以反映屬性之間多對多的關(guān)系。 關(guān)系模型具有以下特點(diǎn): (1) 數(shù)據(jù)結(jié)構(gòu)簡單,概念清楚; (2) 能夠直接反映實(shí)體之間一對一、一對多和多對多關(guān)系; (3) 通過公共屬性就可以建立表與表之間的聯(lián)系,從而就建立了實(shí)體之間的聯(lián)系; (4) 具有嚴(yán)格的理論基礎(chǔ)。,1.2.8 面向?qū)ο竽P?面向?qū)ο竽P停∣bject Oriented Model)是數(shù)據(jù)庫系統(tǒng)中最近出現(xiàn)的一種模型。面向?qū)ο竽P椭凶罨镜母拍钍菍ο螅╫bject)和類(class)。 面向?qū)ο竽P褪钦诎l(fā)展中的模型,具有廣闊的前途和生命力。,1.3 關(guān)系的完整性,關(guān)系模型允許定義三類完整性:實(shí)體完整性、參照完整性和用戶定義的完整性。 實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為關(guān)系的兩個不變性,由關(guān)系系統(tǒng)自動支持。 這里先列出3個例題,以便后面引用。 例1-1 學(xué)生實(shí)體和專業(yè)實(shí)體可以用下面的關(guān)系表示(其中主碼用紅色體字標(biāo)識): 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 專業(yè)(專業(yè)號,專業(yè)名),1.3 關(guān)系的完整性(續(xù)一),例1-2 學(xué)生實(shí)體、課程實(shí)體、學(xué)生與課程之間的選課及成績實(shí)體可以用如下3個關(guān)系來表示: 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 課程(課程號,課程名,學(xué)分) 選課及成績(學(xué)號,課程號,成績) 例1-3 另一個學(xué)生實(shí)體的關(guān)系是: 學(xué)生2(學(xué)號,姓名,性別,專業(yè)號,年齡,班長學(xué)號),1.3.1 實(shí)體完整性,一個基本關(guān)系通常對應(yīng)現(xiàn)實(shí)世界的一個實(shí)體集。例如,學(xué)生關(guān)系對應(yīng)學(xué)生的集合。 現(xiàn)實(shí)世界的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識。相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識。 主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無意義”的值。如果主屬性取空值,就說明存在某個不可標(biāo)識的實(shí)體,即存在不可區(qū)分的實(shí)體,這與現(xiàn)實(shí)世界的應(yīng)用環(huán)境相矛盾,因此這個實(shí)體一定不是一個完整的實(shí)體。,1.3.1 實(shí)體完整性(續(xù)一),實(shí)體完整性(Entity Integrity)規(guī)則: 若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。 在例1-1的學(xué)生關(guān)系中,學(xué)號為主碼,則學(xué)號不能取空值。 實(shí)體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。在 例1-2的選課及成績關(guān)系中,學(xué)號+課程號為主碼,則學(xué)號和課程號兩個屬性都不能取空值。,1.3.2 參照完整性,現(xiàn)實(shí)世界中的實(shí)體之間往往存在某種聯(lián)系,在關(guān)系模型中實(shí)體及實(shí)體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系與關(guān)系間的引用。 例1-1的兩個關(guān)系之間存在著屬性的引用,即學(xué)生關(guān)系引用了專業(yè)關(guān)系的主碼“專業(yè)號”。顯然,學(xué)生關(guān)系中的專業(yè)號值,必須是確實(shí)存在的專業(yè)的“專業(yè)號”,即專業(yè)關(guān)系中有該專業(yè)的記錄。這就是說,學(xué)生關(guān)系中的某個屬性的取值需要參照專業(yè)關(guān)系對應(yīng)屬性的取值。,1.3.2 參照完整性(續(xù)一),例1-2的3個關(guān)系之間也存在著屬性的引用,即選課及成績關(guān)系引用了學(xué)生關(guān)系的主碼“學(xué)號”和課程關(guān)系的主碼“課程號”。 選課及成績關(guān)系中的學(xué)號值必須是確實(shí)存在的學(xué)生的“學(xué)號”,即學(xué)生關(guān)系中有該學(xué)生的記錄;選課及成績關(guān)系中的課程號值,也必須是確實(shí)存在的課程的“課程號”,即課程關(guān)系中有該課程的記錄。 選課及成績關(guān)系中某些屬性的取值需要參照其他關(guān)系對應(yīng)屬性的取值。,1.3.2 參照完整性(續(xù)二),不僅兩個或兩個以上的關(guān)系間可以存在引用關(guān)系,同一關(guān)系內(nèi)部屬性間也可能存在引用關(guān)系。 在例1-3的關(guān)系中,“學(xué)號”屬性是主碼,“班長學(xué)號”屬性表示該學(xué)生所在班級的班長的學(xué)號,班長必須是這個班的學(xué)生,即“班長學(xué)號”必須是確實(shí)存在的學(xué)生的“學(xué)號”。,1.3.2 參照完整性(續(xù)三),設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼K相對應(yīng),則稱F是基本關(guān)系R的外碼(Foreign key),并稱基本關(guān)系R為參照關(guān)系(Referencing relation),基本關(guān)系S為被參照關(guān)系(Referenced relation)或目標(biāo)關(guān)系(Target relation)。關(guān)系R和S不一定是不同的關(guān)系。 目標(biāo)關(guān)系S的主碼Ks和參照關(guān)系R的外碼F必須定義在同一個(或一組)域上。,1.3.2 參照完整性(續(xù)四),下圖清楚地表達(dá)了例1-1、例1-2和例1-3的參照關(guān)系 。,1.3.2 參照完整性(續(xù)五),參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。 參照完整性(Referential Integrity)規(guī)則: 若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為: 或者取空值(F的每個屬性值均為空值); 或者等于S中某個元組的主碼值。,1.3.2 參照完整性(續(xù)六),對于例1-1,學(xué)生關(guān)系中每個元組的專業(yè)號屬性只能取下面兩類值: 空值,表示尚未給該學(xué)生確定所學(xué)專業(yè); 非空值,這時該值必須是專業(yè)關(guān)系中某個元組的專業(yè)號值,表示該學(xué)生不可能分配到一個不存在的專業(yè)中學(xué)習(xí)。即被參照關(guān)系“專業(yè)”中一定存在一個元組,它的主碼值等于該參照關(guān)系“學(xué)生”中的外碼值。,1.3.2 參照完整性(續(xù)七),對于例1-2中的選課及成績關(guān)系,按參照完整性規(guī)則,學(xué)號和課程號屬性也可以取兩類值:空值或目標(biāo)關(guān)系中已經(jīng)存在的值。但由于學(xué)號和課程號是選課及成績關(guān)系中的主屬性,按照實(shí)體完整性規(guī)則,它們均不能取空值。所以選課及成績關(guān)系中的學(xué)號和課程號屬性實(shí)際上只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值。,1.3.2 參照完整性(續(xù)八),參照完整性規(guī)則中,R與S可以是同一個關(guān)系。 例如,對于例1-3,按照參照完整性規(guī)則,班長屬性值可以取兩類值: 空值,表示該學(xué)生所在班級尚未選出班長 ; 非空值,這時該值必須是本關(guān)系中某個元組的學(xué)號值 。,1.3.3 用戶定義的完整性,實(shí)體完整性和參照性適用于任何關(guān)系數(shù)據(jù)庫系統(tǒng)。除此之外,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。 用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的實(shí)際要求,即取值的限制范圍。,1.3.3 (續(xù)),例如,某個非主屬性不能取空值(如:姓名)、某個屬性的取值范圍限定在0100之間(如:成績)、某個屬性只能取幾個特定的值(如:性別)等。關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性機(jī)制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能。,1.4 關(guān)系模型的規(guī)范化,用關(guān)系模型描述現(xiàn)實(shí)世界直觀、明了。但是,要做到用關(guān)系模型很好地描述現(xiàn)實(shí)世界卻不是一件容易的事情。 設(shè)計一個好的數(shù)據(jù)庫是一項極其復(fù)雜的工作,規(guī)范化理論就是設(shè)計過程中的一個非常有用的輔助工具。 一般地說,關(guān)系模型的范式級別越高,設(shè)計的數(shù)據(jù)結(jié)構(gòu)質(zhì)量越高。第一范式是關(guān)系模型規(guī)范化最基本的要求,第二范式的級別比第一范式高,第三范式的級別又比第二范式高。,1.4.1 第一范式,如果關(guān)系模式R的每一個關(guān)系的屬性值都是不可分的原子值,則稱R屬于第一范式(1NF)。 屬于1NF的關(guān)系稱為規(guī)范化關(guān)系,不屬于1NF的關(guān)系稱為非規(guī)范化關(guān)系。 不難驗(yàn)證,表1-1和表1-2所示的實(shí)體集都是屬于1NF的規(guī)范化關(guān)系。 但是實(shí)際問題中的報表結(jié)構(gòu)有許多是非規(guī)范化的。例如,下頁表1-3是不規(guī)范的。 從規(guī)范化的關(guān)系模型的數(shù)據(jù)庫是完全能夠生成象表1-3這樣結(jié)構(gòu)的報表的。,1.4.1 第一范式(續(xù)一),實(shí)際問題中的報表結(jié)構(gòu)有許多是非規(guī)范化的。例如,表1-3是不規(guī)范的。 不能依這樣的結(jié)構(gòu)設(shè)計關(guān)系模型,必須將這樣的表需要的數(shù)據(jù)(以及其它數(shù)據(jù))進(jìn)行處理,使之規(guī)范化。,從規(guī)范化的關(guān)系模型的數(shù)據(jù)庫是完全能夠生成象表1-3這樣結(jié)構(gòu)的報表的。,1.4.1 第一范式(續(xù)二),一個關(guān)系應(yīng)滿足1NF是最起碼的條件。然而,僅滿足1NF的關(guān)系還可能存在一些問題。,表1-4是滿足1NF的一個具體實(shí)例,但在操作中可能出現(xiàn)如下的一些問題。 () 插入異常 () 刪除異常 () 數(shù)據(jù)冗余,1.4.2 第二范式,如果關(guān)系模式R屬于1NF,并且每個非碼屬性都完全依賴于各個碼,則稱R屬于第二范式(2NF)。如果某個數(shù)據(jù)庫模式中的每個關(guān)系模式都是2NF,則這個數(shù)據(jù)庫模式稱為2NF的數(shù)據(jù)庫模式。 下頁表1-5所示的關(guān)系模式R(學(xué)號,系名,系辦地址,課程號,成績),主碼為學(xué)號課程號。 某個學(xué)生某門課程的成績(一個非碼屬性)是完全依賴于他的學(xué)號和該課程的代號(主碼)的。也就是說,知道了一個學(xué)生的學(xué)號和他參加考試的課程號(兩者缺一不可),就知道了他這一門課的成績。,1.4.2 第二范式(續(xù)一),1.4.2 第二范式(續(xù)二),他所在的系名(另一非碼屬性)實(shí)際上僅完全依賴于他的學(xué)號(主碼中的一個屬性),與課程代號(主碼中的另一個屬性)無關(guān)。也就是說,只要知道了一個學(xué)生的學(xué)號(并不需要知道課程號),就知道了他所在的系名和系辦地址。 這個關(guān)系模式不屬于2NF(僅屬于1NF)。 如果將R分解為兩個關(guān)系模式R1(學(xué)號,系名,系辦地址)和R2(學(xué)號,課程號,成績),下頁表1-7和表1-6,則R1和R2都屬于2NF了。,1.4.2 第二范式(續(xù)三),這樣分解之后,減少了冗余,節(jié)省了存儲空間,降低了數(shù)據(jù)維護(hù)的代價。但是,另一方面是增加了查詢難度。 這說明,在確定數(shù)據(jù)模型時,不能簡單地說采用第二范式一定比第一范式好,采用第三范式也一定比第二范式好。到底采用哪個范式,要根據(jù)具體問題的要求確定。,1.4.3 第三范式,如果關(guān)系模式R是2NF,且每個非主屬性都完全直接依賴于各個碼(即既不部分依賴于碼也不傳遞依賴于碼),則稱R屬于第三范式(3NF)。如果某個數(shù)據(jù)庫模式中的每個關(guān)系模式都是3NF,則這個數(shù)據(jù)庫模式稱為3NF的數(shù)據(jù)庫模式。 如果一個關(guān)系不屬于第三范式,那么也可能存在一些問題。 在關(guān)系R2中,主碼為(學(xué)號、課程號),成績是完全直接依賴于他的學(xué)號和該課程的代號(主碼)的,故R2屬于3NF。,1.4.3 第三范式(續(xù)一),在關(guān)系R1中,主碼為(學(xué)號) ,知道了一個學(xué)生的學(xué)號(主碼),就知道了他所在的系名,知道了他所在的系名(非碼屬性),也就知道了該系辦公室的地址。系名是完全直接依賴于他的學(xué)號的。但系辦公室的地址是通過系名間接(不是直接)依賴與他的學(xué)號的,故R1不屬于3NF。 正因?yàn)殛P(guān)系R1不屬于3NF,也存在數(shù)據(jù)冗余和操作異?,F(xiàn)象。例如,有多個學(xué)生同屬于一個系,這個系的地址就多次重復(fù)。 如果將關(guān)系R1分解為R11和R12(下頁表1-8和表1-9),則R11和R12就都是屬于3NF了。,1.4.3 第三范式(續(xù)二),一個數(shù)據(jù)庫滿足的范式越多,數(shù)據(jù)的冗余度越小,共享性越高,所占的存儲空間越少,并將數(shù)據(jù)的不一致性減少到最低程度。 但是,高范式的數(shù)據(jù)庫查詢起來比較復(fù)雜。所以,不應(yīng)一味追求高范式,對于包含頻度很高的查詢的數(shù)據(jù)庫,不妨降低些范式。,第2章 Access 數(shù)據(jù)庫基礎(chǔ)知識,2.1 Access 數(shù)據(jù)庫概述 2.2 Access 的特點(diǎn) 2.3 Access 2002 的新增功能 2.4 Access 的基本操作 2.5 Access 數(shù)據(jù)庫設(shè)計 2.6 Access 數(shù)據(jù)庫的對象 2.7 數(shù)據(jù)類型與表達(dá)式,2.1 Access 數(shù)據(jù)庫概述,Microsoft Access是第一個在Windows環(huán)境下開發(fā)的一種全新的關(guān)系數(shù)據(jù)庫管理系統(tǒng),是中小型數(shù)據(jù)庫管理的最佳選擇。Access 2002和Access 2000不僅是數(shù)據(jù)庫管理系統(tǒng),而且還是一個功能強(qiáng)大的開發(fā)工具。 Access使用標(biāo)準(zhǔn)SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)作為它的數(shù)據(jù)庫語言。,2.1 Access 數(shù)據(jù)庫概述 (續(xù)),每一個Access數(shù)據(jù)庫,包括它所有的對象都存儲在以.mdb為擴(kuò)展名的數(shù)據(jù)庫文件中。 打開一個數(shù)據(jù)庫就是打開一個數(shù)據(jù)庫文件。就Access而言,可以認(rèn)為數(shù)據(jù)庫和數(shù)據(jù)庫文件含義相同。 Access數(shù)據(jù)庫不但包括各種對象,還包括對各種對象的操作。,2.2 Access 的特點(diǎn),1. 一個文件管理整個系 統(tǒng) 2. 真正的關(guān)系數(shù)據(jù)庫管 理 3. 典型的開放式數(shù)據(jù)庫管理 4. 完善的幫助功能 5. 利用Excel整理數(shù)據(jù) 6. 擁有大量的內(nèi)置函數(shù) 7. 提供了許多宏 8. 方便的網(wǎng)絡(luò)功能,2.3 Access 2002 的新增功能,1. 更友好的系統(tǒng)界面 2. 任務(wù)窗格 3. 數(shù)據(jù)庫轉(zhuǎn)換工具 4. 數(shù)據(jù)透視表視圖和數(shù)據(jù)透視圖視圖 5. 數(shù)據(jù)庫自動壓縮功能 6. 改進(jìn)了訪問功能,2.4 Access 的基本操作,2.4.1 Access 的啟動和退出,啟動Access和啟動Word的方法一樣,有3種:(1)雙擊桌面上的Access圖標(biāo)。 (2)單擊任務(wù)欄上的“開始”按鈕,在彈出的菜單中選“程序”項,在彈出的級聯(lián)菜單中單擊“Microsoft Access”。 (3)雙擊Access數(shù)據(jù)庫文件(建議盡量不用此法)。 用前兩種方法啟動Access 2002就打開了 Access主窗口(下頁)。該窗口的右側(cè)是任務(wù)窗格的“新建文件”模式。,2.4.1 Access 的啟動和退出(續(xù)一),2.4.1 Access 的啟動和退出(續(xù)二),用第3種方法啟動Access后就立即打開了該數(shù)據(jù)庫文件,并打開該數(shù)據(jù)庫的“數(shù)據(jù)庫”窗口(下圖中的內(nèi)窗口)。,2.4.1 Access 的啟動和退出(續(xù)三),Access主窗口和“Word”窗口很相似,有標(biāo)題欄、菜單欄、工具欄、工作區(qū)和狀態(tài)欄。 Access工作界面的工作區(qū)內(nèi)可以顯示包括“數(shù)據(jù)庫”窗口在內(nèi)的各種子窗口。 菜單欄下面是“數(shù)據(jù)庫”工具欄。 “數(shù)據(jù)庫”窗口中工具欄的按鈕自左至右分別是:打開、設(shè)計、新建、刪除、大圖標(biāo)、小圖標(biāo)、列表、詳細(xì)信息。前4個按鈕用來打開、設(shè)計、新建或刪除數(shù)據(jù)庫的對象,后4個按鈕用來選擇對象的顯示方式。 退出Access和退出Word的方法完全相同。,2.4.2 使用聯(lián)機(jī)幫助,Access2002有四種獲取幫助的方法。 一、使用Office助手 打開Office助手氣球和助手圖標(biāo)有兩種方法: (1)單擊工具欄上的“Microsoft Access幫助”按鈕; (2)選“幫助”菜單項,在其下拉式菜單中單擊“Microsoft Access幫助(H) F1”項。,右圖的助手氣球中間的對話框讓用戶輸入問題,下部有“選項”和“搜索”兩個按鈕。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)一),在助手氣球中輸入想問的問題后單擊“搜索”按鈕(或按Enter鍵),則助手氣球中就出現(xiàn)關(guān)于該問題的幾個搜索主題和“請看下一頁”按鈕(下圖)。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)二),助手圖標(biāo)和助手氣球可分別隱藏(關(guān)閉)。 單擊上頁圖中的某搜索主題(或前面的指示燈),就打開了顯示該主題的“Microsoft Access幫助”窗口,見2.4.2(續(xù)五)中圖。 單擊“選項”按鈕就進(jìn)入了下頁圖所示的“Office助手”對話框。若選中“選項”選項卡就可以進(jìn)行有關(guān)功能的設(shè)置。若選中“助手之家”選項卡則可以選擇Office助手形象。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)三),2.4.2 使用聯(lián)機(jī)幫助(續(xù)四),二、使用Microsoft Access幫助 上頁圖中的“響應(yīng)F1鍵”選項的含義是:若選中該項,按F1就打開2.4.2圖所示的助手氣球;若取消該選項,按F1就打開下頁圖所示的“Microsoft Access幫助”窗口;該窗口有“目錄”、“應(yīng)答向?qū)А焙汀八饕?個選項卡。 如果在窗體或報表的“設(shè)計”視圖選中具體控件后按F1,則顯示這類控件的說明,如2.4.2(續(xù)七)圖所示。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)五),“Microsoft Access幫助”窗口的左窗格顯示目錄、提問框或關(guān)鍵字(分別對應(yīng)三個選項卡),右窗格顯示與左窗格選中項相應(yīng)的說明內(nèi)容。,本頁圖中左窗格選中的是“關(guān)于設(shè)計數(shù)據(jù)庫”,右側(cè)就是其說明內(nèi)容。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)六),三、使用“鍵入需要幫助的問題” 這是Access 2002的新增功能。在Access主窗口的菜單欄右邊有“鍵入需要幫助的問題”框。在這個框中輸入主題詞就可以得到幫助。如果輸入:數(shù)據(jù)庫,然后按Enter鍵就出現(xiàn)關(guān)于數(shù)據(jù)庫的主題列表(右下圖)。,這個主題列表中列出了和數(shù)據(jù)庫有關(guān)的問題,單擊其中的“關(guān)于設(shè)計數(shù)據(jù)庫”,就打開了上頁圖所示的“Microsoft Access幫助”窗口。,2.4.2 使用聯(lián)機(jī)幫助(續(xù)七),四、使用“這是什么?” 在“幫助”中單擊“這是什么?”,鼠標(biāo)變成箭頭和問號組合的形狀,然后將鼠標(biāo)移到需要解釋的主題處單擊,就會顯示關(guān)于該主題的說明。下圖就是在“數(shù)據(jù)庫”窗口使用“這是什么?”后單擊“窗體”顯示的該主題的說明。,2.5 Access 數(shù)據(jù)庫設(shè)計,表的設(shè)計是數(shù)據(jù)庫管理系統(tǒng)最基礎(chǔ)、最重要的工作。 表設(shè)計的好壞對數(shù)據(jù)庫管理系統(tǒng)的功能有決定性的影響。 數(shù)據(jù)庫中表的設(shè)計主要考慮這兩個方面:一是整個管理系統(tǒng)的所有表中的數(shù)據(jù)要共享性高、冗余度小、占用盡可能小的存儲空間;二是能方便維護(hù)表中的數(shù)據(jù)和快速地從表中獲取數(shù)據(jù)。,2.5.1 數(shù)據(jù)庫中表的設(shè)計方法,2.5 (續(xù)一),描述被參照關(guān)系和參照關(guān)系的表分別稱為主表和子表。 主碼和外碼在Access數(shù)據(jù)庫中稱為主鍵和外鍵。 本書將僅含主鍵、不含外鍵的表稱為基礎(chǔ)表(包括主要用于編碼的代碼表),將含外鍵的表稱為基本表,將由基礎(chǔ)表和基本表生成的表稱為生成表。 基礎(chǔ)表和基本表是數(shù)據(jù)庫設(shè)計的重要內(nèi)容,它們的數(shù)據(jù)可以直接維護(hù)。生成表不是數(shù)據(jù)庫直接設(shè)計的表,它的數(shù)據(jù)由查詢生成,不應(yīng)直接維護(hù)。,2.5 (續(xù)二),Access數(shù)據(jù)庫表的設(shè)計方法如下: 1進(jìn)行系統(tǒng)分析。 2提煉出將要作為數(shù)據(jù)庫中表的字段。確定字段的原則是:表中的字段(即屬性,將在2.6.1節(jié)介紹)應(yīng)該是該管理事務(wù)所必須的、獨(dú)立的字段。所謂獨(dú)立包括兩方面含義:(1)該字段是不能再分割的;(2)該字段不依賴于其它的字段。 3根據(jù)數(shù)據(jù)庫管理的要求增加必要的字段。尤其是對有限數(shù)據(jù)集合的字段應(yīng)該增加編碼字段。,2.5 (續(xù)三),4設(shè)計數(shù)據(jù)庫所必須的表。設(shè)計表的基本原則是:(1)凡是有限數(shù)據(jù)集合應(yīng)單獨(dú)設(shè)計一個表(基礎(chǔ)表);(2)除作為表間聯(lián)系的主鍵和外鍵,不同的表中不能包含重復(fù)的字段;(3)表中的字段必須是直接取決于該表描述的實(shí)體;(4)定義表的主鍵;原則上每一個表都應(yīng)定義主鍵。 5確定表間關(guān)系。只有確定了表間關(guān)系才算是完成了表的設(shè)計。通常都是在系統(tǒng)分析的基礎(chǔ)上對表進(jìn)行初步設(shè)計,以后還需要經(jīng)過幾次循環(huán),反復(fù)修改才能得到理想的設(shè)計。還要考慮的一個問題是系統(tǒng)的可擴(kuò)充性。,2.5.2 學(xué)生管理數(shù)據(jù)庫表的設(shè)計,本書所用的“學(xué)生管理”數(shù)據(jù)庫的功能應(yīng)包括以下幾個方面(學(xué)期成績=平時成績0.3考試成績0.7 ): ()學(xué)生選修課程和考試成績維護(hù)(包括輸入、修改和刪除)。 ()按學(xué)號查詢學(xué)生選修的課程和考試成績 ()按課程查詢選修的人數(shù)。 ()按班級或個人或課程對成績進(jìn)行排序、篩選、統(tǒng)計和查詢。 ()按班級打印學(xué)生考試成績表。 ()按個人打印成績通知單。,2.5.2 (續(xù)一),其它需求有: ()對學(xué)生的基本情況進(jìn)行查詢,包括學(xué)生的學(xué)號、姓名、性別、出生年月日、身高、所在班級、家庭所在地、家庭人均月收入等。 ()對班級人數(shù)進(jìn)行統(tǒng)計、查詢。 ()打印班級學(xué)生名單。 根據(jù)管理的實(shí)際需要還應(yīng)該補(bǔ)充以下功能:學(xué)生、課程和學(xué)生選課及成績等基本信息的輸入、修改、刪除和查詢。,2.5.2 (續(xù)二),根據(jù)問題的需求,如下字段是必需的:學(xué)號、姓名、性別、出生年月日、所在班級、家庭所在地、家庭人均月收入、課程名稱、平時成績和考試成績等字段。但班級人數(shù)、課程選修人數(shù)、學(xué)期成績等統(tǒng)計數(shù)據(jù)不能作為字段。 如果只用一個表把上述所有字段都包括進(jìn)去在理論上是可以的,但是這樣處理會引起許多問題。因?yàn)槊總€學(xué)生都可以選修多門課程、每門課程也都可以有多人選修。僅用一個表勢必要將每個學(xué)生的學(xué)號、姓名、性別、出生年月日、所在班級、課程名稱等內(nèi)容多次重復(fù)輸入,既費(fèi)時費(fèi)力、占據(jù)大量的存儲空間,又可能引起輸入數(shù)據(jù)的不一致。,2.5.2 (續(xù)三),根據(jù)以上分析,可考慮用兩個表:將不涉及選課的個人信息和僅與選課有關(guān)的信息分別設(shè)計成“學(xué)生情況”和“選課及成績”兩個表: 學(xué)生情況,含學(xué)號、所在班級、姓名、性別、出生年月日、身高、家庭所在地、家庭人均月收入、是否團(tuán)員等9個字段; 選課及成績,含學(xué)號、姓名、課程名稱、平時成績和考試成績等5個字段。 這兩個表通過學(xué)號建立聯(lián)系。 這個方案存在的問題。,2.5.2 (續(xù)四),設(shè)計成個表(花括號中是各字段的數(shù)據(jù)類型和長度(將在2.7.1節(jié)介紹),下同)的方案: 班級簡況,含班級代號文本,5、班級名稱文本,8兩個字段。 學(xué)生情況,含學(xué)號文本,7、班級代號文本,5、姓名文本,6、性別文本,1、出生年月日日期/時間、身高(cm)數(shù)字,字節(jié)、是否住宿文本,1、家庭所在地文本,4、家庭人均月收入貨幣、是否團(tuán)員是/否等9個字段。 課程檔案,含課程號文本,4、課程名稱文本,16、總學(xué)時數(shù)字,字節(jié)3個字段。,2.5.2 (續(xù)五),選課及成績,含學(xué)號文本,7、課程號文本,4、平時成績數(shù)字,字節(jié)、考試成績數(shù)字,字節(jié)、考試日期日期4個字段。 下圖是在Access數(shù)據(jù)庫中對這個表間關(guān)系的表達(dá)。其中兩個表間關(guān)系連線兩端的“1”和“”表示實(shí)施了參照完整性。,2.5.3 教工管理數(shù)據(jù)庫表的設(shè)計,本書所用的“教工管理”數(shù)據(jù)庫的功能應(yīng)包括這幾個方面: (1)教師任課情況和教學(xué)效果維護(hù)(包括輸入、修改和刪除)。 (2)按教工編號查詢教師所任的課程和教學(xué)效果。 (3)按課程查詢?nèi)握n教師。 (4)按技術(shù)職稱或文化程度對教工進(jìn)行排序、篩選、統(tǒng)計和查詢。 (5)按姓名打印教師任課情況表。 (6)按部門打印教工個人情況表。,2.5.3 (續(xù)一),其它需求有: ()對教工的基本情況進(jìn)行查詢,包括教工的教工編號、姓名、性別、出生年月日、技術(shù)職稱、文化程度、月工資、家庭電話等。 (2)對部門人數(shù)進(jìn)行統(tǒng)計、查詢。 (3)打印部門教工名單。 根據(jù)管理的實(shí)際需要還應(yīng)該補(bǔ)充以下功能:教工、課程和任課情況等基本信息的輸入、修改、查詢和刪除。,2.5.3 (續(xù)二),經(jīng)過和學(xué)生管理數(shù)據(jù)庫表的設(shè)計類似的分析、設(shè)計過程,可以得到包括以下7個表的一種設(shè)計方案。 部門簡況,含部門代號文本,3、部門名稱文本,6、辦公地點(diǎn)文本,63個字段。 文化程度編碼,含文化程度編碼文本,2、文化程度文本,6兩個字段。 技術(shù)職稱編碼,含技術(shù)職稱編碼文本,2、技術(shù)職稱文本,6兩個字段。 教學(xué)效果編碼,含教學(xué)效果編碼文本,1、教學(xué)效果文本,2兩個字段。,2.5.3 (續(xù)三),教工情況,含教工編號文本,5、部門代號文本,3、姓名文本,6、性別文本,1、出生年月日日期/時間、技術(shù)職稱編碼文本,2、文化程度編碼文本,2、婚姻狀況文本,2、基本工資貨幣、獎金貨幣、家庭電話文本,12等10個字段。 課程檔案,含課程號文本,4、課程名稱文本,10、總學(xué)時數(shù)字,字節(jié)3個字段。 任課情況,含職工編號文本,7、課程號文本,4、教學(xué)效果編碼文本,13個字段。,2.5.3 (續(xù)四),下圖是Access數(shù)據(jù)庫對這些表間關(guān)系的表達(dá)。,2.5.3 (續(xù)五),【說明】 (1)對于同一個實(shí)際問題可以有不同的設(shè)計方案。但是,必須依據(jù)第1章介紹的數(shù)據(jù)庫的基本原理進(jìn)行分析,按規(guī)范化的要求設(shè)計表。 (2)對班級名稱、部門名稱、課程名稱,以至于技術(shù)職稱、文化程度、教學(xué)效果等有限數(shù)據(jù)集合字段進(jìn)行編碼是提高數(shù)據(jù)的共享性、減小它的冗余度的有效措施。,2. 數(shù)據(jù)庫對象,Access 數(shù)據(jù)庫是數(shù)據(jù)和對象組成的集合。 Access數(shù)據(jù)庫對象包括表、查詢、窗體、報表、頁、宏和模塊等。 用Access新建或打開一個數(shù)據(jù)庫會同時打開一個數(shù)據(jù)庫窗口(下頁圖)。 “數(shù)據(jù)庫”窗口顯示已打開的數(shù)據(jù)庫包含的所有對象,并提供對這些數(shù)據(jù)庫對象進(jìn)行操作的方法。 Access“數(shù)據(jù)庫”窗口左側(cè)是“對象”框,右側(cè)是一個列表框。當(dāng)在對象框選定某對象類型時,右側(cè)列表框顯示和左側(cè)選定對象類別相應(yīng)的創(chuàng)建該類對象的快捷方式和已建好的具體對象。,2. 數(shù)據(jù)庫對象(續(xù)),2.6.1 表,表即數(shù)據(jù)表,是Access數(shù)據(jù)庫中唯一存儲數(shù)據(jù)的對象,當(dāng)然就是數(shù)據(jù)庫最基本、最重要的對象。 表的每一列表示同種類型的數(shù)據(jù),稱為一個屬性或字段,字段名顯示在表的頂端(第一行)。 表的每一行(第一行除外)稱為該表的一個記錄。,表由多個記錄組成。也存在沒有記錄的空表。,2.6.2 查詢,任何一個數(shù)據(jù)庫僅有表是遠(yuǎn)遠(yuǎn)不夠的。人們往往需要或是在一個表中查找部分字段的內(nèi)容,或是從多個表中查找某些字段的內(nèi)容,而且可能帶有各種特定的要求。 檢索數(shù)據(jù)就是在適當(dāng)?shù)姆秶鷥?nèi)、按某些條件、以某種方式在一個或多個表中查找有關(guān)記錄的指定字段(或字段的函數(shù))。 查詢是檢索數(shù)據(jù)(即實(shí)現(xiàn)上述查找)的工具,是Access數(shù)據(jù)庫很重要的對象。查詢還可以在表中插入、刪除和修改數(shù)據(jù),也可以生成新表。,2.6.2 查詢(續(xù)一),在“數(shù)據(jù)庫”窗口打開“學(xué)生管理”數(shù)據(jù)庫,單擊“對象”框中的“查詢”,再雙擊列表框中的“江蘇的學(xué)生”(一個查詢),系統(tǒng)會彈出如右圖所示的結(jié)果。,該查詢的結(jié)果相當(dāng)于一張表,它包括學(xué)號、姓名、家庭所在地3個字段,含有9個記錄。但這些內(nèi)容實(shí)際上是存在“學(xué)生情況”表中的,執(zhí)行查詢僅是“看到”而已。,2.6.2 查詢(續(xù)二),因?yàn)橐话愕牟樵兒捅硪粯佑凶侄?、記錄等概念,更重要的是查詢和表有著幾乎同樣的功能,因而在許多場合把查詢和表同等看待。在同一個數(shù)據(jù)庫中查詢和表不能同名。本書用數(shù)據(jù)源(或記錄源)泛指表或查詢。 查詢既可以建立在表上,也可以建立在其它查詢上。 查詢的功能很強(qiáng)大,也非常靈活,其在數(shù)據(jù)庫中的地位甚至超過表。一個數(shù)據(jù)庫管理系統(tǒng)中查詢的功能強(qiáng)弱直接影響該系統(tǒng)的性能。,2.6.3 窗體,窗體是用戶與數(shù)據(jù)庫之間進(jìn)行交互的對象。在一個完善的數(shù)據(jù)庫管理系統(tǒng)中,用戶都是通過窗體對數(shù)據(jù)進(jìn)行各種操作,而不是直接對表、查詢進(jìn)行操作的。通過窗體還可以控制應(yīng)用程序的運(yùn)行過程,因而窗體是Access最靈活的對象。 窗體中的各種按鈕、列表框、菜單等稱為控件。在窗體中適當(dāng)安排一些控件可以增強(qiáng)和完善窗體的功能。 大多數(shù)窗體都與數(shù)據(jù)源綁定,這些窗體中的大部分內(nèi)容來自它的基表。,2.6.3 窗體(續(xù)一),在“數(shù)據(jù)庫”窗口打開“學(xué)生管理”數(shù)據(jù)庫,單擊“對象”框中的“窗體”,再雙擊列表框中的“向?qū)?chuàng)建學(xué)生情況縱欄式”(一個窗體),系統(tǒng)會出現(xiàn)如下圖所示的結(jié)果。,2.6.3 窗體(續(xù)二),下圖是“羅斯文”數(shù)據(jù)庫中的“雇員”窗體。,2.6.4 報表,一個好的數(shù)據(jù)庫系統(tǒng)往往需要以一定的格式將數(shù)據(jù)打印輸出,報表正是實(shí)現(xiàn)這種功能的有力工具。 打印輸出的報表易于閱讀和保存,同時也具有分析、匯總的功能。 報表還可以在包括Internet在內(nèi)的互連網(wǎng)上發(fā)布。 報表只用于輸出數(shù)據(jù),不能對數(shù)據(jù)做任何修改,這是和窗體的本質(zhì)區(qū)別。,2.6.4 報表(續(xù)一),下圖是“學(xué)生管理”數(shù)據(jù)庫中的一個報表。,2.6.5 宏,Access對各種數(shù)據(jù)庫對象的操作方法有多種,這些方法在多數(shù)情況下是方便有效的。但是,很多時候操縱的對象較多,操作比較復(fù)雜。完全靠人工操作效率很低,又容易出錯。宏可以將數(shù)據(jù)庫中各種對象連接起來,從而大大提高效率。 宏是指一個或多個操作的集合,其中每個操作實(shí)現(xiàn)特定的功能。 宏是組織整個數(shù)據(jù)庫的重要工具之一。,2.6.6 頁和模塊,頁的全稱是數(shù)據(jù)訪問頁,是鏈接到某個數(shù)據(jù)庫的Web頁。在數(shù)據(jù)訪問頁中可以瀏覽、添加、編輯和操縱存儲在數(shù)據(jù)庫中的數(shù)據(jù)。 有些數(shù)據(jù)庫管理系統(tǒng)的功能需求很多,對數(shù)據(jù)庫的各種操作更加復(fù)雜,有些功能用宏無法實(shí)現(xiàn)。為此,Access嵌入了功能強(qiáng)大的數(shù)據(jù)庫編程語言Visual Basic for Applications,簡稱VBA。 模塊就是Access利用VBA開發(fā)出來的程序段。,2.6.7 各種數(shù)據(jù)庫對象間的關(guān)系,概括地說,各種數(shù)據(jù)庫對象的作用是:表用來存儲數(shù)據(jù),查詢用來檢索數(shù)據(jù),窗體用來查看和維護(hù)數(shù)據(jù),報表用來打印數(shù)據(jù),宏用來提高工作效率。 所有數(shù)據(jù)庫對象通過關(guān)系、宏及模塊聯(lián)系起來。表間關(guān)系主要應(yīng)用在查詢中。窗體和報表往往以表和查詢?yōu)榛A(chǔ)。宏和模塊是Access的強(qiáng)化工具,能進(jìn)一步擴(kuò)展數(shù)據(jù)庫的功能,提高數(shù)據(jù)庫管理的自動化程度和效率。,2.6.7 (續(xù)一),選擇一個具體的數(shù)據(jù)庫對象后單擊工具欄上的“屬性”按鈕,系統(tǒng)就彈出該對象的屬性對話框,在該對話框內(nèi)可以設(shè)置該對象的各種屬性。 利用“數(shù)據(jù)庫”窗口工具欄靠右邊的大圖標(biāo)、小圖標(biāo)等4個按鈕可以切換不同的查看方式。 在“數(shù)據(jù)庫”窗口中可以對數(shù)據(jù)庫對象進(jìn)行刪除、復(fù)制、重命名等操作。其方法和Word中對文件的刪除、復(fù)制、重命名等操作基本相同。,2.7 數(shù)據(jù)類型與表達(dá)式,數(shù)據(jù)類型和表達(dá)式都是數(shù)據(jù)庫非常重要的內(nèi)容。正確使用數(shù)據(jù)類型是設(shè)計好表的前提。 靈活運(yùn)用表達(dá)式可以設(shè)計高質(zhì)量的表和豐富多彩的查詢,因而也就能夠設(shè)計出功能強(qiáng)大的數(shù)據(jù)庫管理系統(tǒng)。,2.7.1 數(shù)據(jù)類型,Access數(shù)據(jù)庫為字段提供了10種數(shù)據(jù)類型,它們的用法和所占存儲空間大小如下。 1文本型(Text):用于文本或文本與數(shù)字的結(jié)合,最長為255個字符(字節(jié)),默認(rèn)值是50。在Access中,每一個漢字和所有特殊字符(包括中文標(biāo)點(diǎn)符號)都算作一個字符。 貨幣型(Currency):用來存儲貨幣值,占8個字節(jié),在計算中禁止四舍五入。,2.7.1 數(shù)據(jù)類型(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 粉末冶金在船舶推進(jìn)器制造中的應(yīng)用考核試卷
- 煤制液體燃料的原料煤選擇與處理考核試卷
- 畜牧良種繁殖與新型農(nóng)業(yè)經(jīng)營主體培育考核試卷
- 2025電視劇拍攝場地租賃合同模板
- 2025茶葉代銷合同模板
- 2025建筑工程分包合同樣本
- 三級心理咨詢師考培訓(xùn)分享
- 蘇教版七年級上冊語文全冊教案2
- 國際貿(mào)易合同書文本
- 二零二五辦公室文員聘用合同書
- 實(shí)驗(yàn)室設(shè)備維護(hù)與保養(yǎng)試題及答案
- 2024年鐵總服務(wù)有限公司招聘筆試真題
- 廣東省清遠(yuǎn)市2025屆普通高中畢業(yè)年級高三教學(xué)質(zhì)量檢測物理試卷及答案(二)清遠(yuǎn)二模
- 2025屆“皖南八校”高三第三次大聯(lián)考物理試卷(含答案解析)
- 2025年4月廣西壯族自治區(qū)賀州市中考二模語文試題(含答案)
- 教師資格筆試教育數(shù)字化轉(zhuǎn)型的挑戰(zhàn)與對策分析試題及答案
- 2025年保溫杯拋光機(jī)項目可行性研究報告
- 2024年河北省中等職業(yè)教育對口高考畜牧獸醫(yī)類真題試卷及參考答案-
- 2024年9月28日福建省事業(yè)單位統(tǒng)考《行政職業(yè)能力測試》真題及答案
- 2025-2030中國醫(yī)藥冷鏈物流行業(yè)市場發(fā)展分析及競爭格局與投資前景研究報告
- 心血管-腎臟-代謝綜合征患者的綜合管理中國專家共識(2025版)解讀
評論
0/150
提交評論