Visual FoxPro數(shù)據(jù)庫程序設(shè)計教程第三版課件第1章 數(shù)據(jù)庫系統(tǒng)及Visual FoxPro 6.0概述_第1頁
Visual FoxPro數(shù)據(jù)庫程序設(shè)計教程第三版課件第1章 數(shù)據(jù)庫系統(tǒng)及Visual FoxPro 6.0概述_第2頁
Visual FoxPro數(shù)據(jù)庫程序設(shè)計教程第三版課件第1章 數(shù)據(jù)庫系統(tǒng)及Visual FoxPro 6.0概述_第3頁
Visual FoxPro數(shù)據(jù)庫程序設(shè)計教程第三版課件第1章 數(shù)據(jù)庫系統(tǒng)及Visual FoxPro 6.0概述_第4頁
Visual FoxPro數(shù)據(jù)庫程序設(shè)計教程第三版課件第1章 數(shù)據(jù)庫系統(tǒng)及Visual FoxPro 6.0概述_第5頁
已閱讀5頁,還剩173頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2023年12月18日第1頁內(nèi)容簡介本書以VisualFoxPro6.0中文版為平臺,結(jié)合普通高校非計算機專業(yè)數(shù)據(jù)庫程序設(shè)計課程的具體要求,深入淺出地介紹VisualFoxPro數(shù)據(jù)庫程序設(shè)計的有關(guān)知識、方法和具體的實例。本教材共12章。分別介紹數(shù)據(jù)庫系統(tǒng)及VisualFoxPro概述、項目管理器及其操作、數(shù)據(jù)表的基本操作、數(shù)據(jù)庫的設(shè)計與操作、程序設(shè)計基礎(chǔ)、面向?qū)ο蟪绦蛟O(shè)計、表單的建立與使用、結(jié)構(gòu)化查詢語言——SQL、查詢與視圖、報表設(shè)計、菜單設(shè)計、應(yīng)用程序的生成和發(fā)布等。本書突出案例教學并配套有《VisualFoxPro數(shù)據(jù)庫程序設(shè)計習題解答與實驗指導》實驗教材。在理論講解過程中,配有大量實例,通過一個個實例的分析和操作,使讀者在理解所學知識的基礎(chǔ)上,掌握數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)方法。各章后均附有豐富的習題與上機操作題供讀者練習,并在配套的實驗教材中對各章習題提供了參考答案與上機指導以及全國計算機等考試筆試題和上機操作題。本書可作為普通高等學校各專業(yè)(含高職、高專)計算機公共課,數(shù)據(jù)庫應(yīng)用課程的教材,也可作為計算機等級考試培訓教材,也可供從事數(shù)據(jù)庫開發(fā)的人員學習、參考。2023年12月18日第2頁目錄第1章數(shù)據(jù)庫系統(tǒng)及VisualFoxPro6.0概述第2章項目管理器及其操作第3章數(shù)據(jù)表的基本操作第4章數(shù)據(jù)庫的設(shè)計與操作第5章面向?qū)ο蟮某绦蛟O(shè)計第6章表單的創(chuàng)建與使用2023年12月18日第3頁第7章程序設(shè)計基礎(chǔ)第8章結(jié)構(gòu)化查詢語言——SQL第9章查詢與視圖第10章菜單設(shè)計第11章報表設(shè)計第12章應(yīng)用程序的生成和發(fā)布2023年12月18日第4頁第1章數(shù)據(jù)庫系統(tǒng)及VisualFoxPro6.0概述1.1數(shù)據(jù)、信息與數(shù)據(jù)處理1.2計算機數(shù)據(jù)管理的發(fā)展1.3數(shù)據(jù)庫系統(tǒng)基本概念1.4數(shù)據(jù)模型1.5關(guān)系數(shù)據(jù)庫概述1.6VisualFoxPro6.0及其界面1.7VisualFoxPro6.0語法基礎(chǔ)本章小結(jié)習題12023年12月18日第5頁本章要點介紹與數(shù)據(jù)庫有關(guān)的基本概念和知識,包括數(shù)據(jù)、信息和數(shù)據(jù)處理、數(shù)據(jù)管理技術(shù)的發(fā)展、數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)模型以及關(guān)系數(shù)據(jù)庫等。VisualFoxPro的語法基礎(chǔ),包括常量、字段變量、內(nèi)存變量、函數(shù)、表達式的概念及其使用規(guī)則。VisualFoxPro作為一門數(shù)據(jù)庫編程語言,和其他編程語言一樣,所編寫的程序都是由常量、變量、函數(shù)、表達式等基本語法組成的。而作為一門數(shù)據(jù)庫語言,VisualFoxPro突出了數(shù)據(jù)庫管理的特點,其中一些數(shù)據(jù)元素不僅在程序中使用,也被包含在數(shù)據(jù)庫文件中。這些基本概念和知識是學習和使用VisualFoxPro的基礎(chǔ)。2023年12月18日第6頁近年來,計算機的數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)相互結(jié)合和滲透,已成為計算機方面發(fā)展最迅速和應(yīng)用最廣泛的兩大領(lǐng)域。對于在日常生活、生產(chǎn)經(jīng)營、金融證券、事務(wù)管理等活動中產(chǎn)生的大量數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)以數(shù)據(jù)庫的方式進行組織和存儲,并編寫數(shù)據(jù)庫應(yīng)用程序以實現(xiàn)數(shù)據(jù)的共享和高效處理,從而滿足人們對數(shù)據(jù)管理的各種需要。目前流行的開發(fā)數(shù)據(jù)庫系統(tǒng)的編程語言有多種,如VisualFoxPro、SQL、Delphi、Oracle、Java等,它們各有其功能和特點。2023年12月18日第7頁本書介紹的VisualFoxPro(縮寫為VFP)數(shù)據(jù)庫語言由于具有簡單易學、使用方便、開發(fā)成本低等特點,在我國有著廣泛的應(yīng)用基礎(chǔ),適合初學者用來掌握數(shù)據(jù)庫語言的基本結(jié)構(gòu)和特點,并很容易通過它來開發(fā)一些實用的中小型數(shù)據(jù)庫系統(tǒng)。本章介紹數(shù)據(jù)與數(shù)據(jù)處理的基本概念和數(shù)據(jù)庫的概念、相關(guān)術(shù)語、基本運算及VisualFoxPro的語法基礎(chǔ)等,為進一步學習和應(yīng)用VisualFoxPro數(shù)據(jù)庫語言準備好基礎(chǔ)知識。2023年12月18日第8頁1.1數(shù)據(jù)、信息與數(shù)據(jù)處理1.1.1數(shù)據(jù)與信息1.數(shù)據(jù)數(shù)據(jù)是客觀事物屬性的取值,是信息的具體描述和表現(xiàn)形式,是信息的載體。在計算機系統(tǒng)中,凡是能為計算機所接受和處理的各種字符、數(shù)字、圖形、圖像及聲音等都可稱為數(shù)據(jù)。因此,數(shù)據(jù)泛指一切可被計算機接受和處理的符號。數(shù)據(jù)可分為數(shù)值型數(shù)據(jù)(如工資、成績等)和非數(shù)值型數(shù)據(jù)(如姓名、日期、聲音、圖形、圖像等)。數(shù)據(jù)可以被收集、存儲、處理(加工、分類、計算等)、傳播和使用。2023年12月18日第9頁2.信息信息是事物狀態(tài)及運動方式的反映(表現(xiàn)形式),需經(jīng)過加工、處理后才能進行交流和使用。人們往往用數(shù)據(jù)去記載、描述和傳播信息,因此數(shù)據(jù)是描述或表達信息的具體表現(xiàn)形式,是信息的載體。信息與數(shù)據(jù)既有聯(lián)系又有區(qū)別,它們之間的關(guān)系可描述為:信息是對客觀現(xiàn)實世界的反映,數(shù)據(jù)是信息的具體表現(xiàn)形式。注意,可以用不同的數(shù)據(jù)形式表示同樣的信息,信息不隨它的數(shù)據(jù)形式的不同而改變。例如,某個部門要召開會議,可以把“開會”這樣一個信息通過廣播(聲音形式的數(shù)據(jù))、文件(文字形式的數(shù)據(jù))等方式通知給有關(guān)單位,在這里,聲音或文字是不同的反映方式(表現(xiàn)形式),可以表示同一個信息。2023年12月18日第10頁1.1.2數(shù)據(jù)處理數(shù)據(jù)處理也稱為信息處理。所謂數(shù)據(jù)處理,是指利用計算機將各種類型的數(shù)據(jù)轉(zhuǎn)換成信息的過程。它包括對數(shù)據(jù)的采集、整理、存儲、分類、排序、加工、檢索、維護、統(tǒng)計和傳輸?shù)纫幌盗刑幚磉^程。數(shù)據(jù)處理的目的是從大量的、原始的數(shù)據(jù)中獲得人們所需要的資料并提取有用的數(shù)據(jù)成分,從而為人們的工作和決策提供必要的數(shù)據(jù)基礎(chǔ)和決策依據(jù)。2023年12月18日第11頁在敘述了數(shù)據(jù)、信息和數(shù)據(jù)處理的概念之后,這里簡單介紹一下它們之間的聯(lián)系。首先,信息和數(shù)據(jù)是有區(qū)別的。數(shù)據(jù)是一種符號象征它本身是沒有意義的,而信息是有意義的知識。但數(shù)據(jù)經(jīng)過加工處理就能成為有意義的信息,也就是說數(shù)據(jù)處理把數(shù)據(jù)和信息聯(lián)系在了一起。下式可以簡單明確地表明三者的關(guān)系:信息=數(shù)據(jù)+數(shù)據(jù)處理再舉例說明,如計算機中日期數(shù)據(jù)的符號表示“04/12/82”,不加以解釋就不知道它明確的意義,究竟是人的出生日期還是商品的銷售日期。通過以后的學習可以知道,在數(shù)據(jù)庫中可以給它一個標識,解釋這是一個人的出生日期,再用當前日期減去這個出生日期來進行數(shù)據(jù)處理,就可以獲得這個人年齡的信息。2023年12月18日第12頁1.2計算機數(shù)據(jù)管理的發(fā)展數(shù)據(jù)處理的內(nèi)容首先是數(shù)據(jù)的管理。計算機發(fā)明以后,人們一直在努力尋求如何用計算機更有效地管理數(shù)據(jù)。隨著計算機硬件和軟件技術(shù)的發(fā)展,計算機數(shù)據(jù)管理技術(shù)也經(jīng)歷了從低級階段發(fā)展到高級階段的過程,技術(shù)上也越來越成熟。按照一般文獻劃分,計算機數(shù)據(jù)管理的發(fā)展有如下幾個階段。1.2.1人工管理階段20世紀50年代是第一代計算機應(yīng)用階段。當時,計算機沒有磁盤這樣的能長期保存數(shù)據(jù)的存儲設(shè)備,這個時期的數(shù)據(jù)管理是用人工方式把數(shù)據(jù)保存在卡片、紙帶這類的介質(zhì)上,所以稱為人工管理階段。這個階段數(shù)據(jù)管理的最大特征是數(shù)據(jù)由計算數(shù)據(jù)的程序攜帶,二者混合在一起,因此具有以下特點。2023年12月18日第13頁1.數(shù)據(jù)不能獨立由于數(shù)據(jù)和程序混合在一起,這樣就不能處理大量的數(shù)據(jù),更談不上數(shù)據(jù)的獨立與共享,一組數(shù)據(jù)只能被一個程序?qū)S?。此外,當程序中的?shù)據(jù)類型、格式發(fā)生變化時,相應(yīng)程序也必須進行修改。2.數(shù)據(jù)不能長期保存這個階段計算機的主要任務(wù)是科學計算。計算機運行時,程序和數(shù)據(jù)在計算機中,程序運行結(jié)束后,數(shù)據(jù)即從計算機中釋放出來。2023年12月18日第14頁3.數(shù)據(jù)沒有專門的管理軟件由于計算機系統(tǒng)沒有數(shù)據(jù)管理軟件管理數(shù)據(jù),也就沒有數(shù)據(jù)的統(tǒng)一存取規(guī)則。數(shù)據(jù)的存取、輸入輸出方式就由編寫程序的程序員自己確定,這就增加了程序編寫的負擔。1.2.2文件系統(tǒng)階段隨著計算機對數(shù)據(jù)處理要求的不斷增加,人們對數(shù)據(jù)處理的重要性越來越重視。20世紀50年代末至60年代,計算機操作系統(tǒng)中專門設(shè)置了文件系統(tǒng)來管理數(shù)據(jù),計算機的數(shù)據(jù)管理進入了文件系統(tǒng)階段。這個階段的主要特征是數(shù)據(jù)文件和處理數(shù)據(jù)的程序文件分離,數(shù)據(jù)文件由文件系統(tǒng)管理,它確立數(shù)據(jù)文件和程序文件的接口,保證文件能被正確地調(diào)用。與人工階段相比,文件系統(tǒng)階段是有所進步,但還是存在以下缺點。2023年12月18日第15頁1.數(shù)據(jù)獨立性差,不能共享數(shù)據(jù)雖然從程序文件中分離了出來,但文件系統(tǒng)管理的數(shù)據(jù)文件只能簡單地存放數(shù)據(jù),且一個數(shù)據(jù)文件一般只能被相應(yīng)的程序文件專用,相同的數(shù)據(jù)要被另外的程序使用,必須再產(chǎn)生數(shù)據(jù)文件,這樣就出現(xiàn)了數(shù)據(jù)的重復(fù)存儲問題,即數(shù)據(jù)冗余。2.數(shù)據(jù)文件不能集中管理由于這階段的數(shù)據(jù)文件沒有合理和規(guī)范的結(jié)構(gòu),數(shù)據(jù)文件之間不能建立聯(lián)系,使得數(shù)據(jù)文件不能集中管理,數(shù)據(jù)使用的安全性和完整性都得不到保證。2023年12月18日第16頁1.2.3數(shù)據(jù)庫系統(tǒng)階段20世紀60年代末,計算機的數(shù)據(jù)管理進入數(shù)據(jù)庫系統(tǒng)階段。這時,由于計算機的數(shù)據(jù)處理量迅速增長,其數(shù)據(jù)管理得到了人們的高度重視,隨后在美國產(chǎn)生了技術(shù)成熟、具有商業(yè)價值的數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫系統(tǒng)不僅有效地實現(xiàn)了程序和數(shù)據(jù)的分離,而且它把大量的數(shù)據(jù)組織在一種特定結(jié)構(gòu)的數(shù)據(jù)庫文件中,多個不同程序都可以調(diào)用數(shù)據(jù)庫中相同的數(shù)據(jù),從而實現(xiàn)了數(shù)據(jù)的統(tǒng)一管理及數(shù)據(jù)共享。與文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)具有以下特點。1.實現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余度由于數(shù)據(jù)庫文件不僅與程序文件相互獨立,而且具有合理規(guī)范的結(jié)構(gòu),使得不同的程序可以同時使用數(shù)據(jù)庫中相同的數(shù)據(jù),這樣就大大節(jié)省了存儲資源,減少了數(shù)據(jù)的冗余度。2023年12月18日第17頁2.實現(xiàn)數(shù)據(jù)獨立數(shù)據(jù)獨立包括物理數(shù)據(jù)獨立和邏輯數(shù)據(jù)獨立。物理數(shù)據(jù)是指數(shù)據(jù)在硬件上的存儲形式,其獨立性是指當數(shù)據(jù)的存儲結(jié)構(gòu)發(fā)生變化時,不影響數(shù)據(jù)的邏輯結(jié)構(gòu),也就不會影響程序的運行。邏輯數(shù)據(jù)是指數(shù)據(jù)在用戶面前的表現(xiàn)形式,當邏輯數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時也不影響應(yīng)用程序,這就是邏輯數(shù)據(jù)的獨立性。這兩種數(shù)據(jù)的獨立性有效地保證了數(shù)據(jù)庫運行的穩(wěn)定性。3.采用合理的數(shù)據(jù)結(jié)構(gòu)加強了數(shù)據(jù)的聯(lián)系數(shù)據(jù)庫采用了合理的結(jié)構(gòu)來安排其中的數(shù)據(jù),不僅同一數(shù)據(jù)文件中的數(shù)據(jù)之間存在特定的聯(lián)系,各數(shù)據(jù)文件之間也可以建立關(guān)系,這是文件系統(tǒng)不能做到的。4.加強數(shù)據(jù)保護2023年12月18日第18頁

圖1-1客戶機/服務(wù)器數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)圖服務(wù)器網(wǎng)絡(luò)客戶機1客戶機2客戶機3數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫2023年12月18日第19頁1.3數(shù)據(jù)庫系統(tǒng)基本概念在數(shù)據(jù)庫技術(shù)中,人們常常接觸到數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)這些名詞,它們之間有著一定的聯(lián)系和區(qū)別。1.3.1數(shù)據(jù)庫數(shù)據(jù)庫(DataBase,DB)就是按一定的組織形式存儲在一起的相互關(guān)聯(lián)的數(shù)據(jù)的集合。實際上,數(shù)據(jù)庫就是一個存放大量業(yè)務(wù)數(shù)據(jù)的場所,其中的數(shù)據(jù)具有特定的組織結(jié)構(gòu)。所謂“組織結(jié)構(gòu)”,是指數(shù)據(jù)庫中的數(shù)據(jù)不是分散的、孤立的,而是按照某種數(shù)據(jù)模型組織起來的,不僅數(shù)據(jù)記錄內(nèi)的數(shù)據(jù)之間是彼此相關(guān)的,而且數(shù)據(jù)記錄之間在結(jié)構(gòu)上也是有機地聯(lián)系在一起的。數(shù)據(jù)庫具有數(shù)據(jù)的結(jié)構(gòu)化、獨立性、共享性、冗余量小、安全性、完整性和并發(fā)控制等基本特點。在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫已成為各類管理系統(tǒng)的核心基礎(chǔ),為用戶和應(yīng)用程序提供了共享的資源。2023年12月18日第20頁1.3.2數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)是負責數(shù)據(jù)庫的定義、建立、操縱、管理和維護的一種計算機軟件,是數(shù)據(jù)庫系統(tǒng)的核心部分。數(shù)據(jù)庫管理系統(tǒng)是在特定操作系統(tǒng)的支持下進行工作的,它提供了對數(shù)據(jù)庫資源進行統(tǒng)一管理和控制的功能,使數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)存儲具有一定的規(guī)范性,提高了數(shù)據(jù)庫應(yīng)用的簡明性和方便性。DBMS是一種系統(tǒng)軟件,也就是數(shù)據(jù)庫語言本身,常用的有VFP、SQL、Oracle等數(shù)據(jù)庫語言。DBMS為用戶管理數(shù)據(jù)提供了一整套命令,利用這些命令可以實現(xiàn)對數(shù)據(jù)庫的各種操作,如數(shù)據(jù)結(jié)構(gòu)的定義,數(shù)據(jù)的輸入、輸出、編輯、刪除、更新、統(tǒng)計和瀏覽等。具體歸納為以下四大功能。2023年12月18日第21頁1.數(shù)據(jù)定義功能數(shù)據(jù)庫管理系統(tǒng)定義和描述數(shù)據(jù)庫的結(jié)構(gòu)使用數(shù)據(jù)庫定義語言DDL(DataDescriptionLanguage),這就需要用相應(yīng)的解釋和編譯程序來實現(xiàn)該功能,如VFP數(shù)據(jù)庫管理系統(tǒng)中的CREATESTRUCTURE,該命令可創(chuàng)建一個數(shù)據(jù)庫并設(shè)計數(shù)據(jù)庫中數(shù)據(jù)的結(jié)構(gòu)。2.數(shù)據(jù)操作功能DBMS提供的數(shù)據(jù)操作語言DML(DataManipulationLanguage)用于實現(xiàn)數(shù)據(jù)的追加、插入、修改、輸出、檢索等功能。不同的數(shù)據(jù)庫語言提供的功能命令的格式不同,但這些功能對數(shù)據(jù)庫管理來說是最基本的,是構(gòu)成應(yīng)用程序必不可少的元素。2023年12月18日第22頁3.數(shù)據(jù)控制功能為保障數(shù)據(jù)庫中數(shù)據(jù)使用的安全性和可靠性,DBMS要提供一定的手段保護數(shù)據(jù),這就是數(shù)據(jù)控制的概念,包括:數(shù)據(jù)完整性控制、并發(fā)控制、安全性控制、數(shù)據(jù)恢復(fù)控制等。4.數(shù)據(jù)字典(DataDictionary)數(shù)據(jù)字典是以數(shù)據(jù)文件的方式存放關(guān)于數(shù)據(jù)庫的結(jié)構(gòu)描述和說明信息,是一種特殊的數(shù)據(jù)庫。軟件開發(fā)者可以通過數(shù)據(jù)字典的查閱來方便數(shù)據(jù)庫的使用和操作,這對數(shù)據(jù)量大的應(yīng)用程序是很有幫助的。大型數(shù)據(jù)庫管理系統(tǒng)有專門創(chuàng)建數(shù)據(jù)字典的功能,而VFP則需較多的人工操作才能創(chuàng)建數(shù)據(jù)字典庫。2023年12月18日第23頁1.3.3數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS)是由計算機系統(tǒng)引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,它是一個具有管理數(shù)據(jù)庫功能的計算機軟硬件綜合系統(tǒng)。具體地說,它主要包括計算機硬件、操作系統(tǒng)、數(shù)據(jù)庫(DB)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)和相關(guān)軟件、數(shù)據(jù)庫管理員及用戶等組成部分。數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)的結(jié)構(gòu)化、共享性、獨立性、可控冗余度以及數(shù)據(jù)的安全性、完整性和并發(fā)控制等特點?!び布到y(tǒng):是數(shù)據(jù)庫系統(tǒng)的物理支持,包括主機、外部存儲器、輸入/輸出設(shè)備等。2023年12月18日第24頁·軟件系統(tǒng):包括系統(tǒng)軟件和應(yīng)用軟件。系統(tǒng)軟件包括支持數(shù)據(jù)庫管理系統(tǒng)運行的操作系統(tǒng)(如Windows2000)、數(shù)據(jù)庫管理系統(tǒng)(如VisualFoxPro6.0)、開發(fā)應(yīng)用系統(tǒng)的高級語言及其編譯系統(tǒng)等;應(yīng)用軟件是指在數(shù)據(jù)庫管理系統(tǒng)基礎(chǔ)上,用戶根據(jù)實際問題自行開發(fā)的應(yīng)用程序。·數(shù)據(jù)庫:是數(shù)據(jù)庫系統(tǒng)的管理對象,為用戶提供數(shù)據(jù)的信息源。·數(shù)據(jù)庫管理員(DBA):是負責管理和控制數(shù)據(jù)庫系統(tǒng)的主要維護管理人員?!び脩簦菏菙?shù)據(jù)庫的使用者,利用數(shù)據(jù)庫管理系統(tǒng)軟件提供的命令訪問數(shù)據(jù)庫并進行各種操作。用戶包括專業(yè)用戶和最終用戶。專業(yè)用戶即程序員,是負責開發(fā)應(yīng)用程序的設(shè)計人員。最終用戶是對數(shù)據(jù)庫進行查詢或通過數(shù)據(jù)庫應(yīng)用系統(tǒng)提供的界面使用數(shù)據(jù)庫的人員。2023年12月18日第25頁數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和用戶的應(yīng)用程序是構(gòu)成數(shù)據(jù)庫系統(tǒng)的三要素。三者之間的關(guān)系是:用戶為了有效地處理和使用數(shù)據(jù)而建立數(shù)據(jù)庫,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理者,它是一個軟件,其職能是維護數(shù)據(jù)庫中的數(shù)據(jù),響應(yīng)和完成用戶應(yīng)用程序或命令提出的訪問數(shù)據(jù)的各種請求。數(shù)據(jù)庫系統(tǒng)三要素之間的關(guān)系如圖1-2所示。用戶用戶用戶數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫2023年12月18日第26頁圖1-2數(shù)據(jù)庫系統(tǒng)三要素之間的關(guān)系用戶用戶用戶數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫2023年12月18日第27頁1.3.4數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)庫應(yīng)用系統(tǒng)(DataBaseApplicationSystem,DBAS)是在DBMS支持下根據(jù)實際問題開發(fā)出來的數(shù)據(jù)庫應(yīng)用軟件。一個DBAS通常由數(shù)據(jù)庫和應(yīng)用程序兩部分組成,它們都需要在DBMS支持下開發(fā)。由于數(shù)據(jù)庫的數(shù)據(jù)要供不同的應(yīng)用程序共享,因此在設(shè)計應(yīng)用程序之前首先要對數(shù)據(jù)庫進行設(shè)計。數(shù)據(jù)庫的設(shè)計是以“關(guān)系規(guī)范化”理論為指導,按照實際應(yīng)用的報表數(shù)據(jù),首先定義數(shù)據(jù)的結(jié)構(gòu),包括邏輯結(jié)構(gòu)和物理結(jié)構(gòu),然后輸入數(shù)據(jù)形成數(shù)據(jù)庫。開發(fā)應(yīng)用程序也可采用功能分析,總體設(shè)計,模塊設(shè)計,編碼調(diào)試等步驟來實現(xiàn)。2023年12月18日第28頁1.3.5數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)模式從數(shù)據(jù)庫管理系統(tǒng)的角度看,數(shù)據(jù)庫系統(tǒng)可分為三級模式,從外到內(nèi)依次為外模式、模式和內(nèi)模式。1.外模式外模式又稱子模式或用戶模式,它是數(shù)據(jù)庫用戶和數(shù)據(jù)庫系統(tǒng)的接口,是數(shù)據(jù)庫用戶看到的數(shù)據(jù)視圖,是對數(shù)據(jù)庫中局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。外模式通常是模式的子集。一個數(shù)據(jù)庫可以有多個外模式。同一個外模式可以被某一個用戶的多個應(yīng)用程序所使用,但一個應(yīng)用程序只有一個外模式。2.模式2023年12月18日第29頁模式也稱邏輯模式或概念模式,它是對數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。一個數(shù)據(jù)庫只有一個模式。數(shù)據(jù)庫模式以某一種數(shù)據(jù)模型為基礎(chǔ)。模式是在數(shù)據(jù)庫模式結(jié)構(gòu)的中間層中,既不涉及數(shù)據(jù)的物理存儲細節(jié)和硬件環(huán)境,也與具體的應(yīng)用程序、應(yīng)用開發(fā)工具以及高級程序設(shè)計語言無關(guān)。DBMS提供模式定義語言DDL來描述模式。定義模式時要定義數(shù)據(jù)的邏輯結(jié)構(gòu),包括記錄由哪些數(shù)據(jù)項構(gòu)成;數(shù)據(jù)項的名稱、類型、取值范圍;數(shù)據(jù)之間的聯(lián)系;與數(shù)據(jù)有關(guān)的安全性、完整性要求等。2023年12月18日第30頁3.內(nèi)模式內(nèi)模式又稱為存儲模式,它是對數(shù)據(jù)庫物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。它規(guī)定了數(shù)據(jù)在存儲介質(zhì)上的物理組織方式,記錄了尋址技術(shù)、物理存儲塊的大小、溢出處理方法等。一個數(shù)據(jù)庫只有一個內(nèi)模式。為了實現(xiàn)三級模式的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫管理系統(tǒng)在三級模式之間提供了兩層映像:外模式/模式映像和模式/內(nèi)模式映像。映像是一種對應(yīng)規(guī)則,指出映像雙方應(yīng)如何進行轉(zhuǎn)換。數(shù)據(jù)庫的三級模式通過這兩層映像聯(lián)結(jié)起來,從而為各類用戶提供操縱數(shù)據(jù)庫的手段。2023年12月18日第31頁1.4數(shù)據(jù)模型1.4.1數(shù)據(jù)模型概述數(shù)據(jù)模型是對現(xiàn)實世界數(shù)據(jù)特征的抽象,是用來描述數(shù)據(jù)的結(jié)構(gòu)和聯(lián)系的一組概念和定義,是數(shù)據(jù)庫的核心內(nèi)容。由于計算機不能直接處理現(xiàn)實世界中的具體事物,所以必須把具體事物轉(zhuǎn)換成計算機能夠處理的數(shù)據(jù)。在數(shù)據(jù)庫系統(tǒng)中,實現(xiàn)轉(zhuǎn)換的過程通常是先把現(xiàn)實世界中的客觀事物抽象為概念數(shù)據(jù)模型(簡稱概念模型),然后再把概念數(shù)據(jù)模型轉(zhuǎn)換為某一數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模型(簡稱數(shù)據(jù)模型)。2023年12月18日第32頁概念數(shù)據(jù)模型和邏輯數(shù)據(jù)模型是數(shù)據(jù)模型的不同應(yīng)用層次。概念數(shù)據(jù)模型是從現(xiàn)實世界到數(shù)據(jù)世界的一個中間層次,是一種面向客觀世界、面向用戶的模型,是數(shù)據(jù)庫設(shè)計人員進行數(shù)據(jù)庫設(shè)計的重要工具,也是數(shù)據(jù)庫設(shè)計人員和用戶之間進行交流的語言,E-R模型、擴充的E-R模型等是常用的概念模型。邏輯數(shù)據(jù)模型是一種面向數(shù)據(jù)庫系統(tǒng)的模型,即依賴于某種具體的數(shù)據(jù)庫管理系統(tǒng)DBMS,主要用于DBMS的實現(xiàn),常見的邏輯數(shù)據(jù)模型包括層次模型、網(wǎng)狀模型和關(guān)系模型等。2023年12月18日第33頁1.4.2E-R數(shù)據(jù)模型E-R數(shù)據(jù)模型(Entity-RelationshipDataModel)即實體-聯(lián)系數(shù)據(jù)模型,用來描述現(xiàn)實世界,具有直觀、自然、語義豐富及便于向邏輯數(shù)據(jù)模型轉(zhuǎn)換等優(yōu)點。設(shè)計E-R模型的目標是有效和自然地模擬現(xiàn)實世界,而不是關(guān)心它在計算機中如何實現(xiàn),因此E-R模型中只應(yīng)包含那些對描述現(xiàn)實世界具有普遍意義的抽象概念。E-R模型中的基本概念有實體、聯(lián)系、屬性等。2023年12月18日第34頁1.實體(entity)客觀存在并可相互區(qū)分的事物稱為實體。它是信息世界的基本單位。實體既可以是人,也可以是物;既可以是實際對象,也可以是抽象對象;既可以是事物本身,也可以是事物與事物之間的聯(lián)系。例如,一個學生、一個教師、一門課程、一支鉛筆、一部電影、一個部門等都是實體。同類型的實體的集合稱為實體集(entityset)。例如,一個學校的全體學生是一個實體集,而其中的每個學生都是實體集的成員。2023年12月18日第35頁2.聯(lián)系(relationship)聯(lián)系是實體集之間關(guān)系的抽象表示,是對實現(xiàn)世界中事物之間關(guān)系的描述。例如,公司實體集與職工實體集之間存在“聘任”聯(lián)系。實體集之間的聯(lián)系可分為以下3類。(1)一對一聯(lián)系(1:1):如果對于實體集A中的每一個實體,實體集B中至多有一個實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系。例如,在一個學校中,一個班級只有一個正班長,而一個班長只在一個班中任職,則班級與班長之間具有一對一聯(lián)系。又如職工和工號的聯(lián)系是一對一的,每一個職工只對應(yīng)于一個工號,不可能出現(xiàn)一個職工對應(yīng)于多個工號或一個工號對應(yīng)于多名職工的情況。2023年12月18日第36頁(2)一對多聯(lián)系(1:n):如果對于實體集A中的每一個實體,實體集B中有n個實體(n>0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體B有一對多聯(lián)系??疾橄岛蛯W生兩個實體集,一個學生只能在一個系里注冊,而一個系可以有很多學生,所以系和學生是一對多聯(lián)系。又如單位的部門和職工的聯(lián)系是一對多的,一個部門對應(yīng)于多名職工,多名職工對應(yīng)于同一個部門。2023年12月18日第37頁(3)多對多聯(lián)系(m:n):如果對于實體集A中的每一個實體,實體集B中有n個實體(n>0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m>0)與之聯(lián)系,則稱實體集A與實體B具有多對多聯(lián)系。例如,一門課程同時有若干個學生選修,而一個學生可以同時選修多門課程,則課程與學生之間具有多對多聯(lián)系。又如在單位中,一個職工可以參加若干個項目的工作,一個項目可有多個職工參加,則職工與項目之間具有多對多聯(lián)系。2023年12月18日第38頁3.屬性(attribute)描述實體的特性稱為屬性。一個實體可由若干個屬性來刻畫。屬性的組合表征了實體。例如,商品有商品代碼、商品名稱、單價、生產(chǎn)日期、進口否、商品外形等屬性;鉛筆有商標、軟硬度、顏色、價格、生產(chǎn)廠家等屬性。唯一標識實體的一個屬性集稱為碼,例如,學號是學生實體的碼。屬性的取值范圍稱為域,例如,學生實體中,性別屬性的域為(男,女),年齡的域可定為18~60,這里要注意區(qū)分屬性的型與屬性的值,例如,學生實體中的學號、姓名等屬性名是屬性的型,而某個學生的“0001”、“張三”等具體數(shù)據(jù)則稱為屬性值。2023年12月18日第39頁相應(yīng)地,實體也有型和值之分,實體的型用實體名及其屬性名的集合來表示。例如,學生以及學生的屬性名集合構(gòu)成學生實體的型,可以簡記為:學生(學號,姓名,性別,出生日期,籍貫,專業(yè),是否團員,而("0001",'"張三"',"女",{^1982/03/12},"成都"',"信息",.T.)是一個實體值。實體集實際上就是同類型實體的集合,例如,全體學生就是一個實體集。2023年12月18日第40頁1.4.3幾種主要數(shù)據(jù)模型數(shù)據(jù)庫系統(tǒng)能減少數(shù)據(jù)冗余度,實現(xiàn)數(shù)據(jù)共享和集中管理,都是因為數(shù)據(jù)庫中的數(shù)據(jù)有特定的組織結(jié)構(gòu),這就是數(shù)據(jù)模型的概念。不同的數(shù)據(jù)庫系統(tǒng)采用不同的數(shù)據(jù)模型,具體可以分為如下4種。1.層次型數(shù)據(jù)庫系統(tǒng)(HierarchicalModelDatabaseSystem)層次型數(shù)據(jù)庫是按著數(shù)據(jù)的從屬關(guān)系來組織數(shù)據(jù)的。類似于磁盤上的樹型目錄結(jié)構(gòu)。適合于存放和處理一個單位的組織結(jié)構(gòu)、職工的隸屬關(guān)系等數(shù)據(jù)。層次型的數(shù)據(jù)庫管理和檢索類似的數(shù)據(jù)是非常方便的。層次模型如圖1-3所示。2023年12月18日第41頁圖1-3層次模型示意圖系教師教研室課程2023年12月18日第42頁2.網(wǎng)狀型數(shù)據(jù)庫系統(tǒng)(NetworkModelDatabaseSystem)在網(wǎng)狀模型的數(shù)據(jù)庫中,一個數(shù)據(jù)實體與兩個以上的其它數(shù)據(jù)實體存在關(guān)系。在這樣的數(shù)據(jù)庫中,除了要存放數(shù)據(jù)本身之外,還要存儲指向所要聯(lián)系數(shù)據(jù)的指針。這樣,當檢索到一個數(shù)據(jù)之后,就很容易檢索到與之有聯(lián)系的數(shù)據(jù)了。網(wǎng)狀模型如圖1-4所示。層次型和網(wǎng)狀型屬于非關(guān)系型數(shù)據(jù)庫。它們均屬于第一代數(shù)據(jù)庫。系教研室課程學生教師選課任課2023年12月18日第43頁圖1-4網(wǎng)狀模型示意圖系教研室課程學生教師選課任課2023年12月18日第44頁3.關(guān)系型數(shù)據(jù)庫系統(tǒng)(RelationalDatabaseSystem,RDBS)關(guān)系模型是一種以關(guān)系(二維表)的形式表示實體與實體之間聯(lián)系的數(shù)據(jù)模型。關(guān)系模型不像層次模型和網(wǎng)狀模型那樣使用大量的鏈接指針把有關(guān)數(shù)據(jù)集合到一起,而是用一張二維表來描述一個關(guān)系。關(guān)系模型的主要特點如下:·關(guān)系中的每一分量不可再分,是最基本的數(shù)據(jù)單位。·關(guān)系中每一列的分量是同屬性的,列數(shù)根據(jù)需要而設(shè),且各列的順序是任意的。2023年12月18日第45頁·關(guān)系中每一行由一個具體實體或者聯(lián)系的一個或多個屬性構(gòu)成,且各行的順序可以是任意的。·一個關(guān)系是一張二維表,不允許有相同的列(屬性),也不允許有相同的行(元組)。表1-1所示的是一張商品情況表。在二維表中,每一行稱為一個記錄,用于表示一組數(shù)據(jù)項;表中的每一列稱為一個字段或?qū)傩?用于表示每列中的數(shù)據(jù)項。表中的第一行稱為字段名,用于表示每個字段的名稱。2023年12月18日第46頁表1-1關(guān)系模型的二維表學號姓名性別院系生年月日英語計算機獎學金黨員否備注98402017陳超群男文學院1979-12-1849.052.048.5F98404062曲歌男西語學院1980-10-161.067.055.5F97410025劉鐵男男法學院1978-12-1064.067.060.5F98402019王艷女文學院1980-1-1952.078.053.5F98410012李俠女法學院1980-7-763.078.058.5F98402021趙勇男文學院1979-11-1170.075.055.5T98402006彭德強男文學院1979-9-170.078.063.5F98410101畢紅霞女法學院1979-11-1679.067.058.5F98401012王維國男哲學院1979-10-2663.086.055.5F98404006劉向陽男西語學院1980-2-467.084.056.5F2023年12月18日第47頁4.對象關(guān)系型數(shù)據(jù)庫系統(tǒng)(Object-RelationalDatabaseSystem,ORDBS)20世紀90年代,面向?qū)ο缶幊碳夹g(shù)流行以后,人們意識到了關(guān)系模型的某些缺陷,開始研究關(guān)系對象模型。關(guān)系對象模型在關(guān)系模型的基礎(chǔ)上引入了對象操作的概念和手段,使數(shù)據(jù)模型更適用于面向?qū)ο蟮木幊谭椒?,這也是數(shù)據(jù)模型今后的發(fā)展方向。2023年12月18日第48頁隨著多媒體技術(shù)應(yīng)用的不斷擴大,對數(shù)據(jù)庫提出了新的要求。對象關(guān)系型數(shù)據(jù)庫不僅要包含第二代關(guān)系型數(shù)據(jù)庫系統(tǒng)的全部功能,而且還要能夠支持正文、圖像、聲音等新的多媒體數(shù)據(jù)類型,支持類、繼承、函數(shù)或方法等豐富的對象機制。并能提供高度集成的、可支持客戶機/服務(wù)器應(yīng)用的用戶接口。目前,對象關(guān)系數(shù)據(jù)庫系統(tǒng)已經(jīng)顯示出光明的前景和強大的生命力。對象關(guān)系型數(shù)據(jù)庫系統(tǒng)屬于第三代數(shù)據(jù)庫。2023年12月18日第49頁1.5關(guān)系數(shù)據(jù)庫概述1.5.1關(guān)系術(shù)語關(guān)系是建立在數(shù)學集合概念基礎(chǔ)之上的,是由行和列表示的二維表。關(guān)系:一個關(guān)系就是一張二維表,每個關(guān)系有一個關(guān)系名。在VisualFoxPro中,一個關(guān)系就稱為一張數(shù)據(jù)表,如表1-1所示。在VFP中,關(guān)系簡稱為表,是一個擴展名為.DBF的數(shù)據(jù)表文件。元組:二維表中水平方向的行稱為元組,每一行是一個元組在VisualFoxPro中,一行稱為一個記錄,如表1-1中的一行數(shù)據(jù)項。屬性:二維表中垂直方向的列稱為屬性,每一列有一個屬性名。在VisualFoxPro中,一列稱為一個字段,如表1-1中的學號、姓名、院系等對應(yīng)的列。2023年12月18日第50頁域:表中屬性的取值范圍稱為域。VisualFoxPro中,一個字段的取值范圍通過一個字段的寬度定義。如“性別”字段只能是“男”、“女”這樣的字符類型數(shù)據(jù),一個漢字占兩個字節(jié)的寬度。分量:元組中的一個屬性值,如表1-1中的“法學院”。候選碼(候選關(guān)鍵字):表中的某個屬性或?qū)傩越M合,其值可唯一確定一個元組。一個關(guān)系可以有多個候選碼。例如,表1-1中,姓名不重復(fù)的情況下,學號、姓名是候選碼。主碼(主關(guān)鍵字):從候選碼中,選擇一個作為主碼。一個關(guān)系只能有一個主碼。如表1-1中的學號。2023年12月18日第51頁外碼(外關(guān)鍵字):如果關(guān)系中的一個屬性不是本關(guān)系的主碼或候選碼,而是另外一個關(guān)系的主碼或候選碼,則該屬性稱為外碼。例如,“學生登錄表”中的學號不是“學生登錄表”的主碼或候選碼,而是“計算機表”的主碼,則學號是“學生登錄表”的外碼。主屬性:包含在任何一個候選碼中的屬性。例如表1-1中的學號、姓名屬性是主屬性。非主屬性:不包含在任何候選碼中的屬性。例如表1-1中的院系、生年月日等屬性是非主屬性。2023年12月18日第52頁關(guān)系模式:對關(guān)系的描述。一個關(guān)系模式對應(yīng)一個關(guān)系的結(jié)構(gòu)。其格式如下:關(guān)系名(屬性名1,屬性名2,屬性名3,...,屬性名n)例如,表1-1中的關(guān)系模式描述如下:學生登錄表(學號,姓名,性別,院系,生年月日,英語,計算機,獎學金,黨員否,備注)2023年12月18日第53頁1.5.2關(guān)系的規(guī)范化關(guān)系數(shù)據(jù)庫中,每個數(shù)據(jù)表中的數(shù)據(jù)如何收集,如何組織,這是一個很重要的問題。因此,要求數(shù)據(jù)庫的數(shù)據(jù)要實現(xiàn)規(guī)范化,形成一個組織良好的數(shù)據(jù)庫。數(shù)據(jù)的規(guī)范化基本思想是逐步消除數(shù)據(jù)依賴關(guān)系中不合適的部分,使得依賴于同一個數(shù)據(jù)模型的數(shù)據(jù)達到有效的分離。每一張數(shù)據(jù)表具有獨立的屬性,同時又依賴于共同的關(guān)鍵字。2023年12月18日第54頁關(guān)系規(guī)范化理論是研究如何將一個不十分合理的關(guān)系模型轉(zhuǎn)化為一個最佳的數(shù)據(jù)關(guān)系模型的理論,它是圍繞范式而建立的。所謂規(guī)范化是指關(guān)系數(shù)據(jù)庫中的每一個關(guān)系都必須滿足一定的規(guī)范要求。根據(jù)滿足規(guī)范的條件不同,可以劃分為6個等級:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、修正的第三范式(BCNF)、第四范式(4NF)和第五范式(5NF)。通常在解決一般性問題時,只要把數(shù)據(jù)表規(guī)范到第三個范式標準就可以滿足需要。2023年12月18日第55頁關(guān)系規(guī)范化的三個范式有各自不同的原則要求,其原則要求如下:·第一范式:在一個關(guān)系中消除重復(fù)字段,且各字段都是不可再分的基本數(shù)據(jù)項?!さ诙妒剑喝絷P(guān)系模型屬于第一范式,則關(guān)系中所有非主屬性完全依賴于碼?!さ谌妒剑喝絷P(guān)系模型屬于第二范式,則關(guān)系中所有非主屬性直接依賴于碼。2023年12月18日第56頁1.5.3關(guān)系運算在關(guān)系數(shù)據(jù)庫中,經(jīng)常需要對關(guān)系進行特定的關(guān)系運算操作?;镜年P(guān)系運算有選擇、投影和連接三種。關(guān)系運算的結(jié)果仍然是一個關(guān)系。1.選擇運算選擇運算是從關(guān)系中找出滿足條件的元組(記錄)。選擇運算是一種橫向的操作,它可以根據(jù)用戶的要求從關(guān)系中篩選出滿足一定條件的元組,這種運算的結(jié)果是關(guān)系表中的元組的子集,其結(jié)構(gòu)和關(guān)系的結(jié)構(gòu)相同。2023年12月18日第57頁在VisualFoxPro的命令中,可以通過條件子句FOR<條件>、WHILE<條件>等實現(xiàn)選擇運算。例如,通過VisualFoxPro的命令從表1-1中找出計算機成績大于等于80分的學生,應(yīng)使用的命令是:LISTFOR計算機>=802.投影運算投影運算是從關(guān)系中選取若干個屬性組成一個新的關(guān)系。投影運算是一種縱向操作,它可以根據(jù)用戶的要求從關(guān)系中選出若干屬性(字段)組成新的關(guān)系。其關(guān)系模式所包含的屬性個數(shù)往往比原有關(guān)系少,或者屬性的排列順序不同。因此投影運算可以改變關(guān)系中的結(jié)構(gòu)。在VisualFoxPro的命令中,可以通過子句FIELDS<字段1,字段2,…>等實現(xiàn)投影運算。例如,需要在表1-1的(學號,姓名,性別,院系,生年月日,英語,計算機,獎學金,黨員否,備注)關(guān)系中只顯示“學號”,“姓名”,“性別”和“院系”4個字段的內(nèi)容,應(yīng)使用的命令是:2023年12月18日第58頁LIST學號,姓名,性別,院系3.連接運算連接運算是將兩個關(guān)系通過共同的屬性名(字段名)連接成一個新的關(guān)系。連接運算可以實現(xiàn)兩個關(guān)系的橫向合并,在新的關(guān)系中反映出原來兩個關(guān)系之間的聯(lián)系。VFP使用Join命令來實現(xiàn)連接運算。2023年12月18日第59頁1.5.4關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫是若干個關(guān)系的集合。在關(guān)系數(shù)據(jù)庫中,一個關(guān)系就是一張二維表,也稱為數(shù)據(jù)表。所以,一個關(guān)系數(shù)據(jù)庫是由若干張數(shù)據(jù)表組成的,每張數(shù)據(jù)表又由若干個記錄組成,而每一個記錄是由若干個以字段加以分類的數(shù)據(jù)項組成的。關(guān)系數(shù)據(jù)模型理論和關(guān)系數(shù)據(jù)庫中相關(guān)術(shù)語的對照如表1-1所示。前面已經(jīng)介紹過,當許多相關(guān)的數(shù)據(jù)集合到一張二維表后,數(shù)據(jù)的關(guān)系就會變得很復(fù)雜,表中的字段個數(shù)及數(shù)據(jù)量都會使數(shù)據(jù)出現(xiàn)大量的重復(fù),因此,數(shù)據(jù)庫的數(shù)據(jù)要實現(xiàn)規(guī)范化,從而形成一個組織良好的數(shù)據(jù)庫。2023年12月18日第60頁如果將這些數(shù)據(jù)集中在一張表中,則使得表中的數(shù)據(jù)字段太多,數(shù)據(jù)量變大,結(jié)構(gòu)變復(fù)雜,而且數(shù)據(jù)可能重復(fù)出現(xiàn),數(shù)據(jù)的輸入、修改和查找都變得很麻煩,這樣也會造成數(shù)據(jù)的存儲空間的浪費。1.5.5關(guān)系的完整性數(shù)據(jù)庫系統(tǒng)在運行的過程中,由于數(shù)據(jù)輸入錯誤、程序錯誤、使用者的誤操作、非法訪問等各方面原因,容易產(chǎn)生數(shù)據(jù)錯誤和混亂。為了保證關(guān)系中數(shù)據(jù)的正確和有效,需建立數(shù)據(jù)完整性的約束機制來加以控制。2023年12月18日第61頁關(guān)系的完整性是指關(guān)系中的數(shù)據(jù)及具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)間必須遵循的制約條件和依存關(guān)系,以保證數(shù)據(jù)的正確性、有效性和相容性。關(guān)系的完整性主要包括實體完整性、域完整性和參照完整性。1.實體完整性實體是關(guān)系描述的對象,一行記錄是一個實體屬性的集合。在關(guān)系中用關(guān)鍵字來唯一標識實體,關(guān)鍵字也就是關(guān)系模式中的主屬性。實體完整性是指關(guān)系中的主屬性值不能取空值(NULL)且不能有相同值,保證關(guān)系中的記錄的唯一性,是對主屬性的約束。若主屬性取空值,則不可區(qū)分現(xiàn)實世界中存在的實體。例如,商品的名稱、商品的代碼一定都是唯一的,這些屬性都不能取空值。2023年12月18日第62頁2.域完整性域完整性約束也稱為用戶自定義完整性約束。它是針對某一應(yīng)用環(huán)境的完整性約束條件,主要反映了某一具體應(yīng)用所涉及的數(shù)據(jù)應(yīng)滿足的要求。域是關(guān)系中屬性值的取值范圍。域完整性是對數(shù)據(jù)表中字段屬性的約束,它包括字段的值域、字段的類型及字段的有效規(guī)則等約束,它是由確定關(guān)系結(jié)構(gòu)時所定義的字段的屬性所決定的。在設(shè)計關(guān)系模式時,定義屬性的類型、寬度是基本的完整性約束。進一步的約束可保證輸入數(shù)據(jù)的合理有效,例如,性別屬性只允許輸入“男”或“女”,其他字符的輸入則認為是無效輸入,拒絕接受。VisualFoxPro命令中的CHECK子句用于實現(xiàn)域完整性約束。2023年12月18日第63頁3.參照完整性參照完整性是對關(guān)系數(shù)據(jù)庫中建立關(guān)聯(lián)關(guān)系的數(shù)據(jù)表之間數(shù)據(jù)參照引用的約束,也就是對外關(guān)鍵字的約束。準確地說,參照完整性是指關(guān)系中的外關(guān)鍵字必須是另一個關(guān)系的主關(guān)鍵字的有效值,或者是NULL。在實際的應(yīng)用系統(tǒng)中,為減少數(shù)據(jù)冗余,常設(shè)計幾個關(guān)系來描述相同的實體,這就存在關(guān)系之間的引用參照,也就是說一個關(guān)系屬性的取值要參照其他關(guān)系。如對學生信息的描述常用以下兩個關(guān)系:學生(學號,姓名,性別,班級,專業(yè)號)專業(yè)(專業(yè)號,專業(yè)名,負責人,簡介)2023年12月18日第64頁上述關(guān)系中,專業(yè)號不是學生關(guān)系的主關(guān)鍵字,但它是被參照關(guān)系(專業(yè)關(guān)系)的主關(guān)鍵字,稱為學生關(guān)系的外關(guān)鍵字。參照完整性規(guī)則規(guī)定外關(guān)鍵字可取空值或取被參照關(guān)系中主關(guān)鍵字的值。例如,在學生的專業(yè)已經(jīng)確定的情況下,學生關(guān)系中的專業(yè)號可以是專業(yè)關(guān)系中已經(jīng)存在的專業(yè)號的值;在學生的專業(yè)沒有確定的情況下,學生關(guān)系的專業(yè)號就取NULL值。若取其他值,則關(guān)系之間就失去了參照的完整性。2023年12月18日第65頁1.5.6數(shù)據(jù)庫新技術(shù)概述隨著計算機應(yīng)用領(lǐng)域的不斷拓展和多媒體技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)的研究也取得了重大突破,從20世紀60年代末開始,數(shù)據(jù)庫系統(tǒng)已從第一代層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫,第二代的關(guān)系數(shù)據(jù)庫系統(tǒng),發(fā)展到第三代以面向?qū)ο竽P蜑橹饕卣鞯臄?shù)據(jù)庫系統(tǒng)。隨著用戶應(yīng)用需求的提高,硬件技術(shù)的發(fā)展和Internet/Intranet提供的豐富多彩的多媒體交流方式,促進了數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)通信技術(shù)、人工智能技術(shù)、面向?qū)ο蟪绦蛟O(shè)計技術(shù)、并行計算技術(shù)等之間的相互滲透,相互結(jié)合,形成了數(shù)據(jù)庫新技術(shù),出現(xiàn)了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)、分布式數(shù)據(jù)庫、多媒體數(shù)據(jù)庫系統(tǒng)、知識數(shù)據(jù)庫系統(tǒng)、并行數(shù)據(jù)庫系統(tǒng)、模糊數(shù)據(jù)庫系統(tǒng)等新型數(shù)據(jù)庫系統(tǒng)。2023年12月18日第66頁1.6VisualFoxPro6.0及其界面1.6.1VisualFoxPro6.0概述VisualFoxho是在xBase(dBase、FoxBase、FoxPro)數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上發(fā)展起來的,經(jīng)歷了不斷的升級改版,發(fā)展成現(xiàn)在這種在Windows操作系統(tǒng)支持下的數(shù)據(jù)庫語言。C.WayneRatliff是美國加利福尼亞州Martin-Marietta公司的一位從事航空航天工作的工程師,負責管理宇宙飛船地面支持系統(tǒng)的數(shù)據(jù)庫系統(tǒng),由于需要統(tǒng)計分析大量的數(shù)據(jù),他在1975年開發(fā)出了在個人計算機上運行的交互式數(shù)據(jù)庫管理系統(tǒng)。由于意識到這種系統(tǒng)巨大的市場潛力,Ratliff在1980年和三個從事產(chǎn)品推銷的人成立了Ashton-Tate公司來銷售這個軟件,并把這個軟件直接命名為dBaseⅡ,而沒有用dBaseⅠ,以表示這種軟件的成熟,來增強用戶對產(chǎn)品的信心。2023年12月18日第67頁dBaseⅡ經(jīng)過開發(fā)和維護,升級為dBaseⅢ,占領(lǐng)了當時美國個人計算機數(shù)據(jù)庫軟件70%的市場。由于dBaseⅢ具有簡單、易學、實用等特點,20世紀80年代在我國也得到了廣泛應(yīng)用。1986年,由DaveFulton教授領(lǐng)導的FoxSoftware公司在dBase的基礎(chǔ)上推出了FoxBASE數(shù)據(jù)庫管理系統(tǒng),FoxBase完全兼容dBase,使用相同的語言語法和文件格式,但它克服了dBase不能處理數(shù)組以及數(shù)據(jù)處理速度慢的缺陷,從而贏得了市場,成為個人計算機數(shù)據(jù)庫開發(fā)環(huán)境的主角。FoxSoftware公司以后又推出了FoxBase+、FoxPro1.0、FoxPro2.0等升級版本。對于這些建立在dBase語言語法和文件格式基礎(chǔ)上的數(shù)據(jù)庫語言,習慣上稱之為xBase系列的產(chǎn)品。2023年12月18日第68頁Microsoft公司在1992年收購了FoxSoftware公司之后推出了FoxPro2.5,FoxPro2.5有MS-DOS和Windows兩種版本,其中值得一提的是,F(xiàn)oxPro2.5ForWindows版本是一項跨越式的進步,它使多年來運行在DOS環(huán)境下的數(shù)據(jù)庫文件及管理程序,不加修改就可運行在20世紀90年代初期誕生的基于圖形界面的Windows操作平臺上。Microsoft公司于1995年6月推出了VisualFoxPro3.0(簡稱VFP)數(shù)據(jù)庫管理系統(tǒng)。這是一個在Windows環(huán)境下的面向?qū)ο蟮目梢暬幊坦ぞ?它的出現(xiàn)使人們對數(shù)據(jù)庫系統(tǒng)的程序設(shè)計從面向過程的編程階段過渡到面向?qū)ο缶幊痰男码A段,這在數(shù)據(jù)庫語言的發(fā)展史上具有里程碑的意義。VFP不僅增加了字段,擴大了數(shù)據(jù)的處理范圍,而且其友好的圖形界面、強大的功能、高效率的編程方法,使用戶能快速地建立和修改應(yīng)用程序,使初學者也能設(shè)計出界面美觀、功能齊全的具有商業(yè)價值的數(shù)據(jù)庫應(yīng)用系統(tǒng)。2023年12月18日第69頁1997年,Microsoft負公司推出VisualFoxPro5.0版,主要引進了Internet技術(shù)和ActiveX技術(shù);1998年,在推出Windows98操作系統(tǒng)的同時推出了VisualFoxPro6.0版,近年又相繼推出了VisualFoxPro7.0、8.0、9.0版,以后的版本主要是增強VFP的網(wǎng)絡(luò)功能以及與其他應(yīng)用程序的聯(lián)系,例如在Internet上得到全面支持,以Web方式操作數(shù)據(jù)庫,與微軟事物服務(wù)器、VisualBasic和ASP等其他產(chǎn)品實現(xiàn)技術(shù)共同工作。微軟公司向我國用戶推出的是中文版的VFP,中文版除了具有英文版的全部功能外,它提供的中文界面更符合中國用戶的使用習慣。本書以目前在我國廣為流行的VisualFoxPro6.0中文版為基礎(chǔ),介紹數(shù)據(jù)庫管理系統(tǒng)的使用。VisualFoxPro6.0是面向?qū)ο蟮摹⒖梢暬年P(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它采用的核心查詢技術(shù)是Rushmore查詢優(yōu)化技術(shù),大大提高了系統(tǒng)的性能。它是幫助用戶管理數(shù)據(jù)的強有力的工具。2023年12月18日第70頁VisualFoxPro6.0具有多種編程工具,最突出的是面對象編程方法,可重復(fù)使用各種類,直觀、創(chuàng)造性地建立應(yīng)用程序;在表的設(shè)計方面,增加了表的字段與控件直接結(jié)合的機制,使用戶能夠更快地、更容易地設(shè)計和修改用戶應(yīng)用程序界面。VisualFoxPro6.0增強了Internet技術(shù),提供一系列的向?qū)?、生成器、設(shè)計器等自動編程工具;支持其它應(yīng)用程序共享數(shù)據(jù)、交換數(shù)據(jù);支持真正的數(shù)據(jù)庫;通過項目管理器,用戶可以更有效地組織數(shù)據(jù)、程序和文檔。VisualFoxPro6.0由于采用了先進的Rushmore快速查詢技術(shù),使得查詢的響應(yīng)時間由數(shù)小時降低到數(shù)秒,顯著提高了數(shù)據(jù)的查詢速度。2023年12月18日第71頁1.6.2VisualFoxPro6.0界面圖1-5VisualFoxPro6.0的窗口組成標題欄狀態(tài)欄主窗口工作區(qū)菜單欄窗口邊框命令窗口工具欄2023年12月18日第72頁其中,構(gòu)成窗口界面的要素如下。標題欄:顯示VisualFoxPro6.0的名稱和存放窗口控制按鈕。窗口控制菜單圖標:打開窗口控制菜單,以便控制窗口的外觀。菜單欄:顯示VisualFoxPro6.0的主菜單。工具欄:由若干按鈕組成。每個按鈕都對應(yīng)一個特定的菜單功能,是菜單命令的快捷使用方式。VisualFoxPro6.0有11種工具欄供用戶選用。默認顯示常用工具欄,其余的工具欄可由用戶根據(jù)需要決定顯示哪一個。這里需要說明的是,VisualFoxPro6.0有近500個命令,菜單中的菜單項是常用命令,而工具欄中的按鈕,都是最常用命令的快捷方式。2023年12月18日第73頁主窗口工作區(qū):顯示命令或程序的執(zhí)行結(jié)果,顯示工具欄,也是各種對象的編輯區(qū)域。窗口邊框:調(diào)整窗口的大小。狀態(tài)欄:顯示VisualFoxPro6.0當前執(zhí)行狀態(tài)和各種元素(如命令按鈕)的簡要說明等。命令窗口:用于在命令工作方式下輸入待執(zhí)行的命令,同時也可自動顯示與用戶的界面操作相對應(yīng)的命令。用戶使用過的命令和系統(tǒng)根據(jù)用戶的操作所顯示出來的命令,都會作為歷史命令保存在命令窗口中,供用戶翻閱和重復(fù)使用,以節(jié)省操作時間。2023年12月18日第74頁1.6.3VisualFoxPro向?qū)?、設(shè)計器、生成器簡介1.VisualFoxPro的向?qū)isualFoxPro系統(tǒng)為用戶提供許多功能強大的向?qū)?。用戶通過系統(tǒng)提供的各種不同的向?qū)гO(shè)計器,不用編程就可以創(chuàng)建良好的應(yīng)用程序界面,并完成許多有關(guān)對數(shù)據(jù)庫的操作。常用的向?qū)гO(shè)計器有:表向?qū)?、報表向?qū)?、表單向?qū)А⒉樵兿驅(qū)У取?023年12月18日第75頁2.VisualFoxPro生成器VisualFoxPro系統(tǒng)提供的生成器,可以簡化創(chuàng)建和修改用戶界面程序的設(shè)計過程,提高軟件開發(fā)的質(zhì)量。每個生成器都由一系列選項卡組成,允許用戶訪問并設(shè)置所選對象的屬性。用戶可以將生成器生成的用戶界面直接轉(zhuǎn)換成程序代碼,把用戶從逐條編寫程序、反復(fù)調(diào)試程序的工作中解放出來。常用的生成器有:組合框生成器、命令組生成器、表達式生成器、列表框生成器等。2023年12月18日第76頁3.VisualFoxPro設(shè)計器VisualFoxPro系統(tǒng)提供的設(shè)計器,為用戶提供了一個友好的圖形界面。用戶可以通過它創(chuàng)建并定制數(shù)據(jù)表結(jié)構(gòu)、數(shù)據(jù)庫結(jié)構(gòu)、報表格式和應(yīng)用程序組件等。常用的設(shè)計器有:表設(shè)計器、查詢設(shè)計、視圖設(shè)計器、列表框生成器、報表設(shè)計器、數(shù)據(jù)庫設(shè)計器、菜單設(shè)計器等。VisualFoxPro6.0的面向?qū)ο蠼M件(1)工具欄:(11個):顯示→工具欄(2)向?qū)В海?4個):工具→向?qū)Вā肯驅(qū)В?)生成器:(11個):右鍵→“生成器”(4)設(shè)計器:(9個):新建→選擇文件類型→“新建文件”2023年12月18日第77頁4.VisualFoxPro6.0的文件類型VisualFoxPro6.0系統(tǒng)中常見文件類型包括:項目、數(shù)據(jù)庫、表、視圖、查詢、表單、報表、標簽、程序、菜單、類等,各自以不同的文件類型存儲、管理,以不同的系統(tǒng)默認擴展名(類型名)相互區(qū)分、識別。表1-2為VisualFoxPro6.0中常用的文件擴展名及其所代表的文件類型。2023年12月18日第78頁表1-2VisualFoxPro6.0的文件類型文件擴展名文件類型文件擴展名文件類型.pjx項目文件.mnx菜單文件.dbf數(shù)據(jù)表文件.fpt數(shù)據(jù)表備注文件.dbc數(shù)據(jù)庫文件.vue視圖文件.prg程序文件.txt文本文件.scx表單文件.vcx可視類庫文件.cdx復(fù)合索引文件.fmt屏幕格式文件.idx獨立索引文件.exe可執(zhí)行應(yīng)用程序文件.frx報表文件.app應(yīng)用程序文件.qpr查詢文件.lbx標簽文件.mpr菜單程序文件.mem內(nèi)存變量文件2023年12月18日第79頁1.7VisualFoxPro6.0語法基礎(chǔ)1.7.1數(shù)據(jù)類型數(shù)據(jù)類型決定了數(shù)據(jù)的存在形式、存儲方式和運算規(guī)則。VisualFoxPro6.0所能處理的數(shù)據(jù)包括數(shù)據(jù)表中的數(shù)據(jù)和數(shù)據(jù)表以外的數(shù)據(jù)。表中數(shù)據(jù)的類型是在定義表結(jié)構(gòu)時定義的,而數(shù)據(jù)表以外數(shù)據(jù)的類型是數(shù)據(jù)本身來決定的。這里,先來看看數(shù)據(jù)表中數(shù)據(jù)的類型。即先來了解一下在數(shù)據(jù)表中都能存儲什么類型的數(shù)據(jù)。一共有13種數(shù)據(jù)類型,如表1-3所示。2023年12月18日第80頁表1-3數(shù)據(jù)表中字段的數(shù)據(jù)類型數(shù)據(jù)類型說明字段寬度示例字符型(Character)計算機能夠處理的符號及其組合≤254字節(jié)姓名、地址等貨幣型(Currency)貨幣單位8字節(jié)貨物價格數(shù)值型(Numeric)需要和能夠參與數(shù)值計算的數(shù)據(jù)8字節(jié)數(shù)量、工資等浮點型(Float)整數(shù)或小數(shù)≤20位用于科學計算日期型(Date)由年月日構(gòu)成的數(shù)據(jù)8字節(jié)出生日期等日期時間型(DateTime)日期和時間8字節(jié)文件建立日期和時間雙精度型(Duble)雙精度值8字節(jié)實驗所要求的數(shù)據(jù)整型(Integer)不帶小數(shù)的數(shù)值≤4字節(jié)行數(shù)、人數(shù)等邏輯型(Logical)表示真或假的邏輯值1字節(jié)是否黨員、婚否備注型(Memo)不定長的字符數(shù)據(jù)4字節(jié)個人簡歷等通用型(Geneal)OLE(對象的鏈接與嵌入)對象4字節(jié)照片、指紋等字符型(二進制)與字符量類似。代碼磁變值不變4字節(jié)表中用戶、密碼等備注型(二進制)與通用型類似。代碼磁變值不變4字節(jié)不同國家登錄腳本2023年12月18日第81頁1.7.2常量常量是在程序運行過程中其值不變的具體數(shù)據(jù)值。不同類型的常量有不同的書寫格式。VisualFoxPro6.0中有6種不同類型的常量。1.數(shù)值型常量數(shù)值型常量可稱為常數(shù),用以表示一個數(shù)量的大小。數(shù)值型常量可由數(shù)字0~9、小數(shù)點和正負號組成。例如,125、3.1416、-9.87等都是正確的數(shù)值型常量。為了能夠表示很大或很小的數(shù)值,也可使用科學記數(shù)法。例如,5.654E14表示5.654×1014,5.654E-14表示5.654×10-14。數(shù)值型常量在內(nèi)存中用8個字節(jié)存儲。2023年12月18日第82頁2.貨幣型常量貨幣型常量用來表示貨幣的值。書寫格式與數(shù)值型常量類似,但要在貨幣值的前面加上貨幣符號“$”。在存儲和計算時,貨幣型常量采用4位小數(shù),多余的小數(shù)位數(shù)將被四舍五入。例如,$345.6784698,將被四舍五入成$345.6785。貨幣型常量沒有科學記數(shù)法形式。在內(nèi)存中占用8個字節(jié)。2023年12月18日第83頁3.字符型常量字符型常量用來表示一串具體的字符值,也稱為字符串。其書寫格式是將一串字符用定界符(半角的單引號、雙引號或者方括號)括起來。定界符本身不是字符型常量的內(nèi)容,它的作用是規(guī)定了字符型常量的起始和終止的界限。下面是正確的字符型常量的例子,"計算機"、[黑龍江]、'45.234'、[表示'方法']定界符必須成對使用,不能混用。如"計算機'或[等級考試"是不正確的字符型常量。2023年12月18日第84頁如果字符型常量中某部分必須包含定界符,則整個字符型常量必須選用另一種定界符,如[姓名="王維勛"]。不能使用[姓名=[王維勛]]。另外還需要注意,不包含任何字符的字符型常量("")叫空串,與包含一個空格的字符串("")是不同的。2023年12月18日第85頁4.日期型常量日期型常量用來表示一個具體的日期。其嚴格的日期格式的書寫格式必須是用一對花括號將一個4位年份的而且是年月日順序的日期括起來,在年份的前面還必須使用次方號(^),而年份與月份、月份與日數(shù)之間還必須使用分隔符。常用的日期分隔有左斜線(/)、連字符(-)、英文句號(.)。例如,將日期2008年03月28日,寫成{^2008/03/28}或{^2008-03-28}或{^2008.03.28}都是正確的。但系統(tǒng)在顯示時使用的格式是03/28/08(系統(tǒng)默認)。這種顯示格式是可以改變的。改變的方法是使用日期設(shè)置命令。下面給出常用的日期設(shè)置命令。2023年12月18日第86頁(1)SETMARKTO[日期分隔符]:設(shè)置日期分隔符(“/”、“.”、“-”),無選項時恢復(fù)默認。(2)SETDATE[TO]AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|IALIAN|JAPAN|USA|MDY|DMY|YMD:選擇設(shè)置不同國家的日期格式。2023年12月18日第87頁(3)SETCENTURYON/OFF:用于設(shè)置年份的位置。ON——設(shè)置年份用4位數(shù)字表示年份。OFF——設(shè)置年份用2位數(shù)字表示。(4)SETSTRICTDATETO[0|1|2]:設(shè)置是否對日期格式進行檢查。2023年12月18日第88頁5.日期時間型常量日期時間型常量用來同時表示日期和時間。其嚴格的書寫格式如下:{^yyyy-mm-dd[,][hh[:mm[:ss]][|p]]}其中“^”表示該日期格式是嚴格的,并按照YMD的格式來解釋日期和時間。“-”號可以用“/”來代替。必須注意的是,VisualFoxPro6.0默認使用嚴格的日期格式。如果要使用通常的日期格式,必須先執(zhí)行SETSTRICTDATETO0命令,否則會出錯。若要重新設(shè)置嚴格的日期格式,可執(zhí)行命令SETSTRICTDATETO1。注意:空的日期時間可表示為{/.}。2023年12月18日第89頁6.邏輯型常量邏輯型數(shù)據(jù)只有邏輯真和邏輯假兩個值。邏輯型常量用來表示真或假的值。邏輯真的常量表示形式可以是.T.、.t.、.Y.和.y.。邏輯假的常量表示形式可以是.F.、.f.、.N.和.n.。注意:邏輯型常量的的定界符(.)是必不可少的,否則會被誤碼認為是變量名。邏輯型常量在內(nèi)存中只占用1個字節(jié)。2023年12月18日第90頁1.7.3變量變量是在程序運行過程中其值隨時可以改變的量。VisualFoxPro6.0的變量有兩大類:一是字段變量,二是內(nèi)存變量。1.字段變量字段變量是在定義數(shù)據(jù)表的結(jié)構(gòu)時被定義的。即表中的字段名就是字段變量。由于每個字段值的個數(shù)是由記錄多少而決定的,所以,字段變量是多值變量。例如,表中的學號、姓名、年齡及出生日期等。2.內(nèi)存變量2023年12月18日第91頁(1)內(nèi)存變量概述(2)內(nèi)存變量的賦值給簡單內(nèi)存變量賦值可以有多種方法,這里先介紹兩個最常用的賦值命令:格式1:<內(nèi)存變量名>=<表達式>格式2:STORE<表達式>TO<內(nèi)存變量名表>功能:為指定的內(nèi)存變量賦值。2023年12月18日第92頁(3)內(nèi)存變量值的顯示格式1:?[<表達式表>]格式2:??<表達式表>功能:計算表達式表中各表達式的值并輸出。(4)內(nèi)存變量的顯示格式1:LISTMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<文件名>]格式2:DISPLAYMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<文件名>]功能:顯示內(nèi)存變量的當前信息,包括變量名、作用域、類型及取值。2023年12月18日第93頁(5)內(nèi)存變量的清除格式1:CLEARMEMORY格式2:RELEASE<內(nèi)存變量名表>格式3:RELEASEALL[EXTENDED]格式4:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]功能:格式1清除所有的內(nèi)存變量。格式2清除指定的內(nèi)存變量。格式3清除所有的內(nèi)存變量,在交互方式下其作用與格式相同。如果出現(xiàn)在程序中,則應(yīng)加上選項EXTENDED,否則不能刪除公共內(nèi)存變量。格式4若選用ALL選項,則清除與通配符相匹配的內(nèi)存變量,選用EXCEPT選項,則清除與通配符不相匹配的內(nèi)存變量。2023年12月18日第94頁1.7.4數(shù)組數(shù)組是一組連續(xù)的有序的內(nèi)存變量的集合。在內(nèi)存中占用一片連續(xù)的存儲區(qū)域。數(shù)組中的每一個內(nèi)存變量稱為數(shù)組元素。1.數(shù)組的定義與簡單內(nèi)存變量不同,數(shù)組在使用之前必須用命令DIMENSION和DECLARE來定義。命令格式:DIMENSION<數(shù)組名>(<下標1>[,<下標2>])[,…]DECLARE<數(shù)組名>(<下標1>[,<下標2>])[,…]功能:定義數(shù)組。兩個命令功能完全相同。2023年12月18日第95頁例如:DIMENSIONX(5),A(2,3)此命令定義了兩個數(shù)組:一維數(shù)組X,含5個數(shù)組元素:X(1),X(2),X(3),X(4),X(5)二維數(shù)組A,含6個數(shù)組元素:A(1,1),A(1,2),A(1,3),A(2,1),A(2,2),A(2,3)2023年12月18日第96頁2.數(shù)組的應(yīng)用數(shù)組的應(yīng)用主要體現(xiàn)在兩個方面,一是數(shù)值計算,二是用來交換表中的數(shù)據(jù)。關(guān)于數(shù)組在數(shù)值計算方面的應(yīng)用,將在循環(huán)結(jié)構(gòu)程序中詳述。這里簡單介紹兩個用于數(shù)據(jù)表和數(shù)組之間數(shù)據(jù)交換的命令。(1)將表中當前記錄的數(shù)據(jù)傳送給一維數(shù)組格式:SCATTETO<數(shù)組名>[FIELDS<字段名表>][MEMO][BLANK]功能:將表中當前記錄的數(shù)據(jù)依次傳送給指定的數(shù)組。2023年12月18日第97頁【例1-2】數(shù)組應(yīng)用舉例。將XSDB中的第10條記錄復(fù)制到數(shù)組X中并顯示數(shù)組內(nèi)容。USEXSDBGO10SCATTETOX?X(1),X(2),X(3),X(4),X(5)99408003化學學院邵南兵男02/03/802023年12月18日第98頁(2)將數(shù)組中的數(shù)據(jù)傳送給數(shù)據(jù)表中的當前記錄。格式:GATHERFROM<數(shù)組名>[FIELDS<字段名表>][MEMO]功能:將數(shù)組中的數(shù)據(jù)作為一個記錄復(fù)制到表的當前記錄中。2023年12月18日第99頁1.7.5常用函數(shù)函數(shù)是事先編制好的能夠?qū)崿F(xiàn)特定運算或處理功能的標準程序。有了這些標準程序之后,用戶就不用重復(fù)編寫這些程序了。1.算術(shù)函數(shù)(數(shù)值函數(shù))(1)絕對值函數(shù)格式:ABS(<數(shù)值表達式>)功能:返回指定數(shù)值表達式的絕對值?!纠?-4】顯示X的絕對值。X=5?ABS(X),ABS(5-10)552023年12月18日第100頁(2)符號函數(shù)格式:SIGN(<數(shù)值表達式>)功能:返回指定數(shù)值表達式的符號。即當表達式的值為正、負、零時,函數(shù)結(jié)果分別為1、-1和0。(3)平方根函數(shù)格式:SQRT(<數(shù)值表達式>)功能:返回指定表達式的平方根。說明:作為參數(shù)的數(shù)值表達式的值必須大于零?!纠?-5】求100的平方根。?SQRT(100)102023年12月18日第101頁(4)圓周率函數(shù)格式:PI()功能:返回圓周率π的值。該函數(shù)沒有參數(shù)。(5)取整函數(shù)格式:INT(<數(shù)值表達式>)功能:對給定的數(shù)值表達式截尾取整。即只取表達式值的整數(shù)部分,小數(shù)部分舍去,不進行四舍五入?!纠?-6】取整。X=345.678?INT(X)3452023年12月18日第102頁(6)求上限函數(shù)。格式:CEILING(<數(shù)值表達式>)功能:返回大于或等于指定數(shù)值表達式值的最小整數(shù)?!纠?-7】取X的上限。x=7.8?CEILING(X),CEILING(-X)8-72023年12月18日第103頁(7)求下限函數(shù)格式:FLOOR(<數(shù)值表達式>)功能:返回小于或等于指定數(shù)值表達式值的最大整數(shù)?!纠?-8】取X的下限。X=7.8?FLOOR(X),FLOOR(-X)7-8(8)四舍五入函數(shù)格式:ROUND(<數(shù)值表達式1>,<數(shù)值表達式2>)功能:返回數(shù)值表達式經(jīng)過四舍五入操作的結(jié)果。2023年12月18日第104頁【例1-9】對X的值進行四舍五入。X=2345.5678?ROUND(X,3),ROUND(X,0),ROUND(X,-2)2345.56823462300(9)取余函數(shù)格式:MOD(<數(shù)值表達式1>,<數(shù)值表達式2>)功能:返回<數(shù)值表達式1>除以<數(shù)值表達式2>的余數(shù)。說明:余數(shù)的正負號與除數(shù)相同。若被除數(shù)與除數(shù)同號,則函數(shù)值為兩數(shù)相除所得的余數(shù);如果被除數(shù)與除數(shù)異號,則函數(shù)值為兩數(shù)相除所得余數(shù)再加上除數(shù)。2023年12月18日第105頁【例1-10】取余數(shù)。?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)1-22-1(10)求最大值函數(shù)格式:MAX(表達式1,表達式2[,表達式3…])功能:計算各表達式的值并返回其中最大的值。【例1-11】取最大值。?MAX("2","12","05"),MAX("汽車","輪船","飛機")2汽車2023年12月18日第106頁(11)求最小值函數(shù)格式:MIN(表達式1,表達式2[,表達式3…])功能:計算各表達式的值并返回其中最小的值。說明:同MAX函數(shù)?!纠?-12】取最小值。?MIN("2","12","05"),MIN("汽車","輪船","飛機")05飛機2023年12月18日第107頁(12)指數(shù)函數(shù)格式:EXP(<數(shù)值表達式>)功能:求e的冪。數(shù)值表達式是冪次?!纠?-13】求e為底的冪。?EXP(2)7.39(13)對數(shù)函數(shù)格式:LOG(<數(shù)值表達式>)功能:求以e為底的自然對數(shù)。2023年12月18日第108頁【例1-14】求e為底的自然對數(shù)。?LOG(7.39)2.00(14)產(chǎn)生隨機數(shù)函數(shù)格式:RAND(<數(shù)值表達式>)功能:產(chǎn)生指定范圍內(nèi)的隨機數(shù)。說明:無參數(shù)時,產(chǎn)生0~1之間的隨機數(shù),不包括0和1。如果需要產(chǎn)生連續(xù)的多個隨機數(shù),應(yīng)使用循環(huán)?!纠?-15】產(chǎn)生隨機數(shù)。?RAND()0.742023年12月18日第109

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論