1.1 算法
1.1.1 算法的基本概念 (P1—P4)
所謂算法是指解題方案的準確完整的描述。
1. 算法的基本特征
(1)可行性(2)確定性(3)有窮性(4)擁有夠的情報
2. 算法的基本要素
壹個算法通常由兩種基本要素組成:壹是對數據對象的運算和操作,二是算法的控制結構。
(1) 算法中對數據的運算和操作 (插入、刪除)
(2) 算法的控制結構
壹個算法壹般都可以用順序、選擇、循環三種基本控制結構組合而成。
1.1.2 算法復雜度(P4—P6)
算法的復雜度主要包括時間復雜度和空間復雜度。
1. 算法的時間復雜度
所謂算法的時間復雜度,是指執行算法所需要的計算工作量。
可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量。
3. 算法的空間復雜度
壹個算法的空間復雜度,壹般是指執行這個算法所需要的內存空間。
1.2數據結構的基本概念
數據結構,主要研究和討論以下三個方面的問題:
① 數據的邏輯結構;
② 數據的存儲結構;
③ 對各種數據結構進行的運算。(插入、刪除)
主要目的是為了提高數據處理的效率。所謂提高數據處理的效率,主要包括兩個方面:壹是提高數據處理的速度,(時間復雜度)二是盡量節省在數據處理過程中所占用的計算機存儲空間。(空間復雜度)
1.2.1什麽是數據結構 (P6—P11)
1. 數據的邏輯結構
所謂數據的邏輯結構,是指反映數據元素之間邏輯關系的數據結構。
2. 數據的存儲結構
數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構(也稱為數據的物理結構)
壹種數據的邏輯結構根據需要可以表示成多種存儲結構,常用的存儲結構有順序、鏈接、索引等存儲結構。而采用不同的存儲結構,其數據處理的效率是不同的。
1.2.3線性結構與非線性結構 (P12)
壹般將數據分為兩大類型:線性結構與非線性結構。
線性結構又稱線性表
如果壹個數據結構不是線性結構,則稱之為非線性結構。
1.3線性表及其順序存儲結構
1.3.1線性表的基本概念 (P12—P13)
線性表是由n (n≥0)個數據元素a1,a2,…,an組成的壹個有限序列,表中的每壹個數據元素,除了第壹個外,有且只有壹個前件,除了最後壹個外,有且只有壹個後件。即線性表或是壹個空表,或可以表示為。
(a1,a2,…,ai,…,an)
非空線性表有如下壹些結構特征:
① 有且只有壹個根結點a1,它無前件;
② 有且只有壹個終結點an,它無後件;
③ 除根結點與終端結點外,其他所有結點有且只有壹個前件,也有且只有壹個後件。
1.3.2線性表的順序存儲結構 (P13—P14)
在計算機中存放線性表,壹種最簡單的方法是順序存儲,也稱為順序分配。
線性表的順序存儲結構具有以下兩個基本特點:
① 線性表中所有元素據所占的存儲空間是連續的;
② 線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。
假設線性表中的第壹個數據元素的存儲地址為ADR(a1),每壹個數據元素占K個字節,則線性表中第i 個元素ai在計算機存儲空間中的存儲地址為
ADR(a1)=ADR(a1)+(i-1)K
1.3.3順序表的插入運算 (P14—P15)
在平均情況下,要在線性表中插入壹個新元素,需要移動表中壹半的元素。因此,在線性表順序存儲的情況下,要插入壹個新元素,其效率是很低的。
1.3.4順序表的刪除運算 (P15—P16)
在平均情況下,要在線性表中刪除壹個元素,需要移動表中表中壹半的元素。因此,在線性表順序存儲的情況下,要刪除壹個元素,其效率也是很低的。
由線性表在存儲結構下的插入與刪除運算可以看出,線性表的順序存儲結構對於小線性表或者其中元素不常變動的線性表來說是合適的,因為順序存儲的結構比較簡單。但這種順序存儲的方式對於元素經常需要變動的大線性表就不太合適了,因為插入刪除的效率比較低。
1.4棧和隊列
1.4.1棧及其基本運算 (P16—P18)
1.什麽是棧
棧是限定在壹端進行插入與刪除的另壹端稱為棧底。即棧是按照“先進後出”(FILO)或“後進先出”(LIFO)的原則組織數據的,因此,棧也被稱為“先進後出”表或“後進先出”表。由此可以看出,棧具有記憶作用。
2.棧的順序存儲及其運算(采用順序存儲結構的棧稱為順序棧)
棧的基本運算有三種:入棧、退棧與讀棧頂元素。
(1) 入棧運算(2)退棧運算(3)讀棧頂元素
1.4.2隊列及其基本運算 (P18—P20)
1.什麽是隊列
隊列(queue)是指允許在壹端進行插入、而在另壹端進行刪除的線性表。允許插入的壹端稱為隊尾,通常用壹個稱為尾指針(rear)的指針指向隊尾元素,壹端稱為排頭(也稱為隊頭)通常也用壹個排頭指針(front)指向排頭元素的前壹個位置。
隊列雙稱為“先進先出”或“後進後出”的線性表。
3. 循環隊列及其運算
在實際應用中,隊列的順序存儲結構壹般采用循環隊列的形式。
所謂循環隊列,就是將隊列存儲空間的最後壹個位置繞到第壹個位置,形成邏輯上的環狀空間,供隊列循環使用。
(1) 入隊運算
(2) 退隊運算
1.5線性鏈表
1.5.1線性鏈表的基本概念 (P20—P23)
由於線性表的順序存儲結構存在以上這些缺點,對於大的線性表,特別是元素變動頻繁的大線性表不宜采用順序存儲結構,而是采用下面要介紹的鏈式存儲結構。
在鏈式存儲方式中,要求每個結點由兩部分組成:壹部分用於存放數據元素值,稱為數據域;另壹部分用於存放指針,稱為指針域。
在鏈式存儲結構中,存儲數據結構的存儲空間可以下連續,各數據結點的存儲順序與數據元素之間的邏輯關系可以不壹致,而數據元素之間的邏輯關系是由指針域來確定的。
鏈式存儲方式既可用於表示線性結構,也可以用於表示非線性結構。
1. 線性鏈表
線性表的鏈式存儲結構稱為線性鏈表。
2. 帶鏈的棧
棧也是線性表,也可以采用鏈式存儲結構。
3. 帶鏈的隊列
與棧類似,隊列也是線性表,也可以采用鏈式存儲結構。
1.5.2線性鏈表的基本運算 (P23—P25)
線性鏈表在插入過程中不發生數據元素移動的現象,只需改變有關結點的指針即可,從而提高了插入的效率。
從線性鏈表的刪除過程可以看出,在線性鏈表中刪除壹個元素後,不需要移動表的數據元素,只需改變被刪除元素所在結點的前壹個結點的指針域即可。
1.5.3循環鏈表及其基本運算 (P25—P26)
循環鏈表具有以下兩個特點:
(1) 在循環鏈表中增加了壹個表頭結點,指針域指向線性表的第壹個元素的結點。循環鏈表的頭指針指向表頭結點。
(2) 循環鏈表中最後壹個結點的指針域不是空,而是指向表頭結點。即在循環鏈表中,所有結點的指針構成了壹個環狀鏈。
1. 6樹與二叉樹
1.6.1樹的基本概念 (P26—P28)
在樹結構中,每壹個結點只有壹個前件,稱為父結點,沒有前件的結點只有壹個,稱為樹的根結點,簡稱為樹的根。
在樹結構中,每壹個結點可以有多個後件,它們都稱為該結點的子結點。沒有後件的結點稱為葉子結點。
在樹結構中,壹個結點所擁有的後件個數稱為該結點的度
在樹中,所有結點中的最大的度稱為樹的度。
根結點在第1層。
樹的最大層次稱為樹的深度。
1.6.2二叉樹及其基本性質 (P28—P31)
1. 什麽是二叉樹
二叉樹具有以下兩個特點:
① 非空二叉樹只有壹個根結點;
② 每壹個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。
2. 二叉樹的基本性質
性質1在二叉樹的第K層上,最多有2K-1(K≥1)個結點。
性質2深度為m的二叉樹最多有2m-1個結點。
性質3在任意壹棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多壹個。
3. 滿二叉樹與完全二叉樹
(1)滿二叉樹
所謂滿二叉樹是指這樣的壹種二叉樹:除最後壹層外,每壹層上的所有結點都有兩個子結點,這就是說,在滿二叉樹中,每壹層上的結點數都達到最大值,即在滿二叉樹的第K層上有2K-1個結點,且深度為m的滿二叉樹有2m-1個結點。
(2)完全二叉樹
所謂完全二叉樹是指這樣的二叉樹:除最後壹層外,每壹層上的結點數均達到最大值;在最後壹層上只缺少右邊若幹結點。
滿二叉樹也是完全二叉樹,而完全二叉樹壹般不是滿二叉樹。
性質6設完全二叉樹***有n個結點。從根結點開始,按層序用自然數1,2,…,n給結點進行編號,則對於編號為k(k=1,2,…,n)的結點有以下結論:
① 若k=1,則該結點為根結點,它沒有父結點;若k>1,則該結點的父結點編號為INT(k/2)。
② 若2k≤n,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點。
③ 若2k+1≤n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。
1.6.3二叉樹的存儲結構 (P31—P32)
在計算機中,二叉樹通常采用鏈式存儲結構。
1.6.4二叉樹的遍歷 (P32—P33)
二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷、後序遍歷。
1. 前序遍歷(DLR)
2. 中序遍歷(LDR)
3. 後序遍歷(LRD)
1.7查找技術
1.7.1順序查找 (P33)
順序查找又稱順序搜索。
對於大的線性表來說,順序查找的效率是很低的。雖然順序查找的效率不高,但在下列兩種情況下也只能采用順序查找:
(1) 線性表無序表,則不管是順序存儲結構還是鏈式存儲結構,都只能用順序查找。
(2) 即使是有序線性表,如果采用鏈式存儲結構,也只能用順序查找。
1.7.2二分法查找 (P33—P34)
二分法查找只適用於順序存儲的有序表。
顯然,當有序線性表為順序存儲時都能采用二分查找,並且,二分查找的效率要比順序查找高得多。可以證明,對於長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次,而順序查找需要比較n次。
1.8排充技術
1.8.1交換類排序法 (P34—P35)
1. 冒泡排序法
冒泡排序法是壹種最簡單的交換類排序方法。
假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為n(n-1)/2。
2. 快速排序法
快速排序法也是壹種互換類的排序方法,但由於它比冒泡排序法的速度快,因此稱之為快速排序法。
1.8.2插入類排序法 (P35—P37)
1. 簡單插入排序法
自以為插入排序,是指將無序序列中的各元素依次插入到已經有序的線性表中。
在簡單插入排序法中,這種排序方法的效率與冒泡排序法相同。在最壞情況下,證券交易插入排序需要n(n-1)/2次比較。
2. 希爾排序法
希爾排序法屬於插入類排序,但它對簡單插入排序做了較大的改進。
1.8.3選擇類排序法 (P37—P38)
1. 簡單選擇排序法
從中選出最小的元素,將它交換到表的最前面。
簡單選擇排序法在最壞情況下需要比較n(n-2)/2次。
2. 堆排序法
堆排序法屬於選擇類的排序方法。
堆排序的方法對於規模較小的線性表並不合適,但對於較大規模的來說是很有效的。
分享到搜狐微博
第2章 程序設計基礎 (P40—P45)
2.1程序設計方法與風格
程序設計的風格總體而言應該強調簡單和清晰,程序必須是可以理解的。可以認為,著名的“清晰第壹,效率第二”的論點已成為當今主導的程序設計風格。
源程序文檔化應考慮如下幾點:
(1) 符號名的命名:符號名的命名應具有壹定的實際含義,以便於對程序功能的理解。
(2) 程序註釋:正確的註釋能夠幫助讀者理解程序。註釋壹般分為序言性註釋和功能性註釋。
(3) 視覺組織:為使程序的結構壹目了然,可以在程序中利用空格、空行、縮進等技巧使程序層次清晰。
2.2結構化程序設計
2.2.1結構化程序設計的原則 (P41—P42)
結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。
2.2.2結構化程序的基本結構與特點 (P42—P43)
1. 順序結構
2. 選擇結構:選擇結構又稱為分支結構。
3. 重復結構:重復結構又稱為循環結構。
2.3面向對象的程序設計
今天面向對象方法已經發展成為主流的軟件開發方法。
壹些著名的面向對象語言(如C++、Java)
2.3.2面向對象方法的基本概念 (P45—P48)
1. 對象
對象是面向對象方法中最基本的概念。對象可以用來表示客觀世界中的任何實體。
面向對象的程序設計方法中涉及的對象由壹組表示其靜態特征的屬性和它可執行的壹組操作組成。
(4) 封裝性。
2. 類(Class)和實例(Instance)
將屬性、操作相似的對象歸為類,也就是說,類是具有***同屬性、***同方法方法的對象的集合。所以,類是對象的抽象,而壹個對象則是其對應類的壹個實例。
3. 消息
對象間的這種相互合作需要壹個機制協助進行,這樣的機制稱為“消息”。消息是壹個實例與另壹個實例之間傳遞的信息。
4. 繼承
繼承是面向對象的方法的壹個主要特征。
第3 章 軟件工程基礎
3.1軟件工程基本概念
3.1.1軟件定義與軟件特點 (P50)
計算機軟件是包括程序、數據及相關文檔的完整集合。
可見軟件由兩部分組成:壹是機器可執行和程序和數據;二是機器不可執行的,與軟件開發、運行、維護、使用等有關的文檔。
軟件的特點:
① 軟件是壹種邏輯實體,而不是物理實體,具有抽象性。
② 軟件的生產與硬件不同,它沒有明顯的制作過程。
③ 軟件在運行、使用期間不存在磨損、老化問題。
④ 軟件的開發、運行對計算機系統具有依賴性,受計算機系統的限制,這導致了軟件移植的問題。
⑤ 軟件復雜性高,成本昂貴。
⑥ 軟件開發涉及諸多的社會因素。
3.1.2軟件危機與軟件工程 (P51—P52)
軟件工程概念的出現源自軟件危機。
20世紀60年代末以後,“軟件危機”。所謂軟件危機是泛指在計算機軟件的開發和維護過程中所遇到的壹系列嚴重問題。
1968年在北大西洋公約組織會議(NATO會議)上,討論擺脫軟件危機的辦法,軟件工程作為壹個概念首次被提出。
軟件工程包括個要素,即方法、工具和過程。
3.1.3軟件工程過程與軟件生命周期 (P52—P53)
2.軟件生命周期
通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。
3.1.4軟件工程的目標與原則(P53—P54)
1. 軟件工程的目標
軟件工程內容主要包括:軟件開發技術和軟件工程管理。
3.1.5軟件開發工具與軟件開發環境 (P54)
1. 軟件開發工具 (VB、VC++、VFP)
2. 軟件開發環境
軟件開發環境或稱軟件工程環境是全面支持軟件開發全過程的軟件工具集合。
計算機輔助軟件工程(CASE)
3.2結構化分析方法
3.2.1需求分析與需求分析方法 (P53—P59)
1. 需求分析
(1) 需求分析階段的工作
需求分析階段的工作,可以概括為四個方面:
① 需求獲取
② 需求分析
③ 編寫需求規格說明書
④ 需求評審
2. 需求分析方法
常見的需求分析方法有:
① 結構化分析方法。主要包括:面向數據流的結構化分析方法(SA)面向數據結構的Jackson方法(JSD)面向數據結構的結構化數據系統開發方法(DSSD)
② 面向對象的分析方法(OOA)
3.2.2結構化分析方法 (P55—P59)
2.結構化分析的常用工具
(1) 數據流圖(DFD)
(2) 數據字典(DD)
數據字典是結構化分析方法的核心。
(3) 判定樹
(4) 判定表
3.2.3軟件需求規格說明書 (P59—P60)
軟件規格說明書(SRS)是需求分析階段的最後成果,是軟件開發中的重要文檔。
軟件需求規格說明書的作用是:
① 便於用戶、開發人員進行理解和交流。
② 反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據
③ 作為確認測試和驗收的依據。
3.3結構化設計方法
3.3.1軟件設計基本概念 (P60—P62)
1.軟件設計的基礎
軟件設計分兩步完成:概要設計和詳細設計。
2.軟件設計的基本原理
(1) 抽象
(2) 模塊化
(3) 信息隱蔽
(4) 模塊獨立性
模塊獨立程度是評價設計好壞的重要度量標準。衡量軟件的模塊獨立軟件的模塊獨立性使用耦合性和內聚性兩個定性的度量標準。
① 內聚性:內聚性是壹個模塊內部各個元素間彼此結合的緊密程度的度量。
② 耦合性:耦合性是模塊間互相連接的緊密程度的度量。
耦合性與內聚性是模塊獨立性的兩個定性標準,耦合與內聚是相互關聯的。在程序結構中,各模塊的內聚性越強,則耦合性越弱。壹般較優秀的軟件設計,應盡量做到高內聚,低耦合。
3.3.3詳細設計 (P67—P71)
幾種主要的工具:
1. 程序流程圖(PFD)
2. N-S (盒圖)
3. PAD圖 PAD圖是問題分析圖(Problem Analysis Diagram)的英文縮寫。
4. PDL
過程設計語言(PDL)也稱為結構化的英語和偽碼。
3.4軟件測試
軟件測試的投入,通常其工作量、成本占軟件開發總工作量、總成本的40%以上。
軟件測試是保證軟件質量的重要手段,其主要過程涵蓋了整個軟件生命期的過程。
3.4.1軟件測試的目的 (P71)
關於軟件測試的目的,軟件測試是為了發現錯誤而執行程序的過程。
3.4.3軟件測試技術與方法綜述(P71—P77)
可以分為靜態測試和動態測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。
1. 靜態測試與動態測試
(1) 靜態測試
靜態測試可以由人工進行,充分發揮人的邏輯思維優勢。
(2) 動態測試
靜態測試不實際運行軟件,主要通過人工進行。動態測試是基於計算機的測試,是為了發現錯誤而執行程序的過程。
2. 白盒測試
白盒測試方法也稱結構測試或邏輯驅動測試。
3. 黑盒測試方法
黑盒測試方法也稱功能測試或數據驅動測試。黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證。黑盒測試完全不考慮程序內部和邏輯結構和內部特性。
3.4.4軟件測試的實施(P77—P80)
軟件測試是保證軟件質量的重要手段。
軟件測試過程壹般按4個步驟進行,
1. 單元測試
單元測試是對軟件設計的最小單位——模塊(程序單元)進行正確性檢驗的測試。
2. 集成測試
集成測試是測試和組裝軟件的過程。
3. 確認測試
4. 系統測試
3.5程序的調試
3.5.1基本概念 (P80—P81)
程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。
軟件測試貫穿整個軟件生命期,調試主要在開發階段。
3.5.2軟件調試方法 (P81—P82)
1. 強行排錯法
2. 回溯法
3. 原因排除法
第4章 數據庫設計基礎 (P84—P111)
4.1數據庫系統的基本概念
4.1.1數據、數據庫、數據庫管理系統 (P84—P87)
1. 數據
數據(Data)實際上就是描述事物的符號記錄。
2. 數據庫
數據庫(簡稱DB)是數據的集合。
3. 數據庫管理系統
數據庫管理系統(簡稱DBMS)它是壹種軟件。
數據庫管理系統是數據庫系統的核心。
目前流行的DBMS均為關系數據庫系統,如微軟的Visual FoxPro和Access等。
4. 數據庫管理員(簡稱DBA)
5. 數據庫系統
數據庫系統(簡稱DBS)由如下幾部分組成:數據庫(數據)、數據庫管理系統(軟件)、數據庫管理員(人員)、系統平臺之壹____硬件平臺(硬件)、系統平臺之二——軟件平臺(軟件)這五個部分構成了壹個以數據庫為核心的完整的運行實體,稱為數據庫系統。
4.1.2數據庫系統的發展 (P87—P88)
數據管理發展至今已經歷了三個階段:人工管理階段、文件系統階段和數據庫系統階段。
1. 關系數據庫系統階段
數據管理三個階段的比較
人工管理 文件系統 數據庫系統
特點 數據***享程度 無***享
冗余度大 ***享性差
冗余度大 ***享性大
冗余度小
數據獨立性 不獨立,完全依賴於程序 獨立性差 具有高度的物理獨立性和壹定的邏輯獨立性
4.1.3數據庫系統的基本特點 (P88—P890
數據庫系統具有以下特點:
1. 數據的集成性
2. 數據的高***享性與低冗余性
3. 數據獨立性
數據獨立性是數據與程序間的互不依賴性,數據獨立性壹般分為物理獨立性與邏輯獨立性兩級。
(1) 物理獨立性:物理獨立性即是數據的物理結構的改變,從而不致引起應用程序的變化。
(2) 邏輯獨立性:數據庫總體邏輯結構的改變,不需要相應修改應用程序,這就是數據 的邏輯獨立性。
4. 數據統壹管理與控制
4.1.4數據庫系統的內部結構體系 (P89—P91)
1. 數據庫系統的三級模式
(1) 概念模式。概念模式是數據庫系統中全局數據邏輯結構的描述,是全體用戶(應用)公***數據視圖。
(2) 外模式。外模式也稱子模式或用戶模式。它是用戶的數據視圖。
(3) 內模式。內模式又稱物理模式,它給出了數據庫物理存儲結構與物理存取方法。
2. 數據庫系統的兩級映射
(1) 概念模式到內模式的映射。
(2) 外模式到概念模式的映射。
4.2數據模型
4.2.1數據模型的基本概念 (P91)
數據模型按不同的應用層次分成三種類型,它們是概念數據模型、邏輯模型、物理數據模型,
概念模型有E-R模型、邏輯數據模型又稱數據模型,
層次模型、網狀模型、關系模型,
物理數據模型又稱物理模型。
1.2.2 E-R模型 (P91—P95)
概念模型是E-R模型(或實體聯系模型)
1.E-R模型的基本概念
(1)實體
現實世界中的事物可以抽象成為實體
(2)屬性
現實世界均有壹些特性,這些特性可以用屬性來表示。屬性刻畫了實體的特征。
(3)聯系
壹對壹的聯系,簡記為1:1。
壹對多或多對壹聯系,簡記為1:M(1:m)或M:1(m:1)。
多對多聯系,簡高為M:N或m:n。
3.E-R模型的圖示法
在E-R圖中用橢圓形表示屬性。
在E-R圖中用菱形表示聯系。
4.2.3層次模型的基本結構是樹形結構 (P95)
4.2.4網狀模型 (P95—P96)
網狀模型是壹個不加任何條件限制的無向圖。
4.2.5關系模型 (P96—P98)
1.關系的數據結構
關系模型采用二維表來表示。
4.3關系代數
(4)查詢
① 投影運算
② 選擇運算
③ 笛卡爾積運算
則關系R與S經笛卡爾積記為R×S。
3.關系代數中的擴充運算
(1)交運算 (還有並和差)
關系R與S經交運算後所得到的關系是由那些既在R內又在S內的有序組成,記為R∩S。
(2)除運算
如果將笛卡爾積運算看作乘運算的話,那麽除運算就是它的運算。
T÷R=S或R/R=S
4.4數據庫設計與管理
數據庫設計是數據庫應用核心。
4.4.1數據庫設計概述 (P104)
整個數據庫應用系統的開發成目標獨立的若幹階段。它們是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段。
4.4.2數據庫設計的需求分析 (P104—P105)
4.4.3數據庫概念設計 (畫E-R圖) (P105—P108)
4.4.4數據庫的邏輯設計 (P108—P109)
1. 從E-R圖向關系模式轉換。
4.4.5數據庫的物理設計 (P110)