這是一本嚴格采用“工作過程導向”模式規范編寫的Microsoft SQL Server 2012的教材。本書內容可分為兩個部分:數據庫的創建和數據庫的管理。本書的內容組織以關系數據庫理論知識為基礎,注重操作技能的培養和實際問題的解決,旨在使學生掌握使用和管理Microsoft SQL Server 2012。本書以創建“學生管理系統”的數據庫為工作任務,具體內容包括設計數據庫、創建數據庫、創建表、更新和查詢記錄、Transact-SQL語言、視圖和索引、用戶定義函數、存儲過程、觸發器、管理數據庫安全、備份和還原數據庫、導入和導出數據庫中的數據。最后的項目18中介紹了學生管理系統應用程序的設計和實施,從而完成了一個完整的數據庫系統。本書貼切實際,結構合理,內容豐富,操作方便。本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業教育計算機及相關專業的教材,也可作為Microsoft SQL Server 2012的各種培訓班、職業資格等級考試或認證考試的培訓教材,還可用于讀者自學。
這是一本嚴格采用“工作過程導向”模式規范編寫的Microsoft SQLServer 2012的教材。本書內容可分為兩個部分:數據庫的創建和數據庫的管理。本書的內容組織以關系數據庫理論知識為基礎,注重操作技能的培養和實際問題的解決,旨在使學生掌握使用和管理MicrosoftSQL Server 2012。本書以創建“學生管理系統”的數據庫為工作任務,具體內容包括設計數據庫、創建數據庫、創建表、更新和查詢記錄、Transact-SQL語言、視圖和索引、用戶定義函數、存儲過程、觸發器、管理數據庫安全、備份和還原數據庫、導入和導出數據庫中的數據。*后的項目18中介紹了學生管理系統應用程序的設計和實施,從而完成了一個完整的數據庫系統。本書貼切實際,結構合理,內容豐富,操作方便。本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業教育計算機及相關專業的教材,也可作為MicrosoftSQL Server 2012的各種培訓班、職業資格等級考試或認證考試的培訓教材,還可用于讀者自學。
為適應高職院校應用型人才培養迅速發展的趨勢,培養以就業市場為導向的具備“職業化”特征的高級應用型人才,著眼于國家發展和培養造就綜合能力人才的需要,“任務驅動、項目導向”成了主流的教學模式。本書以Microsoft SQL Server 2012為數據庫管理系統,通過完成一個完整的學生管理系統,引導學生掌握Microsoft SQL Server 2012的使用和管理。
本書特色
本書以實際工作任務為背景,將知識的學習、技能的練習與任務相結合,再通過課后練習幫助讀者鞏固所學內容。每一個項目均針對數據庫設計和實施中的一個工作過程環節來傳授相關的課程內容,實現實踐技能與理論知識的整合,將工作環境與學習環境有機地結合在一起。本書內容簡明扼要,結構清晰,通過工作過程的講解將掌握關系數據庫的理論知識和掌握Microsoft SQL Server 2012的使用方法有機結合,示例眾多,步驟明確,講解細致,突出可操作性和實用性。再輔以豐富的實訓題和課后練習,使學生得到充足的訓練,具備使用Microsoft SQL Server 2012解決實際問題的能力。
本書由高職院校的優秀教師編寫,是在其現有教學成果基礎上整合編寫而成的,作者擁有豐富的開發案例和教學經驗。本書共分為18個項目,計劃需要80個課時,需要用一學期進行學習。
本書主要內容
項目1介紹數據庫的設計。通過該項目的學習,主要了解數據庫的基本概念、數據模型、關系代數和數據庫的設計方法與步驟,掌握數據庫的理論知識,為后面使用Microsoft SQL Server 2012做好準備。
項目2介紹安裝SQL Server 2012。通過該項目的學習,了解SQL Server的組成,掌握如何安裝SQL Server 2012。
項目3講解如何創建數據庫。通過該項目的學習,主要掌握SQL Server數據庫的分類和文件組成,掌握創建、修改、刪除和查看數據庫的方法,掌握分離和附加數據庫的方法。
項目4介紹如何創建數據庫中的表,設置表的數據完整性。通過該項目的學習,掌握表的概念,掌握創建、修改、刪除表的方法,掌握數據完整性的概念、分類和具體實施方法。
項目5介紹如何創建索引。通過該項目的學習,掌握索引的概念和分類,掌握創建、修改、刪除索引的方法,了解設計和優化索引的方法。
項目6介紹如何創建視圖。通過該項目的學習,掌握視圖的概念、分類、創建和使用。
項目7介紹了Transact-SQL語言。通過該項目的學習,了解Transact-SQL語言的基礎知識。
項目8講解如何查詢數據庫中的記錄。通過該項目的學習,了解SELECT語句的組成,掌握SELECT語句的書寫。
項目9學習使用Transact-SQL語句插入、更新和刪除記錄。
項目10介紹事務和鎖。通過該項目的學習,掌握事務的概念、屬性、類型和使用,掌握并發控制的概念和類型,掌握隔離級別的類型,掌握鎖定、鎖粒度、鎖模式、鎖兼容性和死鎖的概念。
項目11學習使用游標。通過該項目的學習,掌握游標的概念、類型和使用方法。
項目12講解創建存儲過程。通過該項目的學習,掌握存儲過程的概念、分類和作用,介紹創建、修改、刪除、執行和查看存儲過程的方法。
項目13學習使用用戶定義函數。通過該項目的學習,掌握用戶定義函數的概念、作用和類型,掌握創建、修改、刪除、執行和查看用戶定義函數的方法。
項目14學習使用觸發器。通過該項目的學習,掌握觸發器的概念、分類、工作原理、創建和使用。
項目15講解對數據庫的備份和還原。通過該項目的學習,掌握備份、還原和恢復的概念,掌握備份設備的概念,掌握恢復模式的概念和類型,掌握不同恢復模式下對數據庫備份和還原的方法。
項目16講解導入和導出數據庫中的數據。通過該項目的學習,掌握SQL Server導入和導出向導的使用,學習SSIS的作用和工作方式,掌握創建和執行SSIS包來導入和導出數據庫中的數據。
項目17學習管理數據庫安全。通過該項目的學習,掌握數據庫權限層次結構,掌握身份驗證模式的分類,掌握登錄名、用戶、權限、角色的概念、分類、創建和使用。
項目18設計并完成了基于Windows的學生管理系統和基于Web的學生管理系統。通過本項目的完成,學習Windows應用程序的創建方法,學習Web應用程序的創建方法,學習注冊和登錄頁面的設計方法,學習查詢學生功能的實現方法。
讀者對象
本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業教育計算機及相關專業的教材,也可作為Microsoft SQL Server 2012的各種培訓班、職業資格等級考試或認證考試的培訓教材,還可用于讀者自學。
本書由高云(南京信息職業技術學院教師)任主編,崔艷春(南京信息職業技術學院教師)、夏平(南京信息職業技術學院教師)任副主編,其中項目1、2、3、4、5、6、7、8、9、10由高云編寫,項目11、12、13、14由夏平編寫,項目15、16、17、18由崔艷春編寫,高云負責本書的校對。全書框架結構由何光明擬定,王珊珊、石雅琴、盧振俠、鄭愛琴、楊橙、陳鳳、曹冬梅等參與了部分資料整理工作。
由于作者水平有限,書中難免存在不當之處,懇請廣大讀者批評指正。
編 者
項目1
設計數據庫
【項目要點】
* 數據庫的基本概念。
* 數據管理技術的發展歷史。
* 數據庫的三級模式結構。
* 數據模型的概念、組成和類型。
* 概念數據模型的概念。
* 實體-聯系模型的基本概念和E-R圖。
* 邏輯數據模型的概念和類型。
* 關系模型的基本概念。
* 關系代數。
* 數據庫設計的方法和步驟。
【學習目標】
* 掌握數據庫的基本概念、數據管理技術的發展歷史和數據庫三級模式結構。
* 掌握數據模型的概念、組成和類型。
* 掌握概念數據模型的概念。
* 掌握實體-聯系模型的基本概念。
* 掌握E-R圖的組成和畫法。
* 掌握關系模型的基本概念。
* 掌握關系代數表達式的書寫。
* 掌握數據庫設計的方法和步驟。
1.1 數據庫的基本概念
1.1.1 數據庫
信息(Information)是現實世界事物的存在方式或運動狀態的反映,其內容描述的是事物之間的相互聯系和相互作用。
數據(Data)是描述事物的符號記錄。數據包括文字、圖形、圖像、聲音等。數據包括兩個方面,即型和值。型是指數據的類型,是數值類、字符類還是日期類等;值是指數據在給定類型下的值,比如數值類的值可以是12、字符類的值可以是“中國”、日期類的值可以是“2015-3-22”等。
數據和信息之間存在著聯系,信息通過數據表示,而信息是數據的含義。
數據庫(Database,DB)是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。數據庫中的數據是按照一定的數據模型組織、描述和存儲的,有較小的冗余度、較高的數據獨立性和易擴展性。
1.1.2 數據庫管理系統
數據庫管理系統(Database Management System,DBMS)是使用和管理數據庫的系統軟件,位于用戶與操作系統之間,負責對數據庫進行統一的管理和控制。所有對數據庫的操作都交由數據庫管理系統完成,這使得數據庫的安全性和完整性得以保證。
數據庫管理系統主要具備6個功能:數據定義,數據的組織、存儲和管理,數據操縱,數據庫的運行管理和安全保護,數據庫的維護,通信和互操作。
數據定義功能用于建立和修改數據庫的庫結構,數據庫管理系統提供數據定義語言(Data Definition Language,DDL)來完成數據定義功能。
數據的組織、存儲和管理功能的目標是提高存儲空間利用率,選擇合適的存取方法提高存取效率。數據的組織、存儲與管理功能主要包括DBMS如何分類組織、存儲和管理各種數據,包括數據字典、用戶數據、存取路徑等,需確定以何種文件結構和存取方式在存儲級上組織這些數據,如何實現數據之間的聯系。
數據操縱功能用于用戶對數據庫插入、更新、刪除和查詢數據,數據庫管理系統提供數據操縱語言(Data Manipulation Language,DML)來完成數據操縱功能。
數據庫的運行管理和安全保護功能確保數據庫系統的正常運行,內容包括多用戶環境下的并發控制、安全性檢查、存取限制控制、完整性檢查、日志的管理、事務的管理和發生故障后數據庫的恢復。數據庫管理系統提供數據控制語言(Data Control Language,DCL)來完成數據庫的運行管理和安全保護功能。
數據庫的維護功能包括數據庫的數據輸入、轉換、轉儲、數據庫的重組織、數據庫性能監視和分析等功能,這些功能是由若干實用程序和管理工具來完成的。
通信和互操作功能是指數據庫管理系統與其他系統的通信和不同數據庫之間的互操作。
1.1.3 數據庫系統
數據庫系統(Database Systems,DBS)是指在計算機系統中引入了數據庫的系統,專門用于完成特定的業務信息處理。數據庫系統包括硬件、軟件和用戶。其中,軟件包括數據庫、數據庫管理系統、操作系統、應用開發工具和數據庫應用程序。用戶包括系統分析員、數據庫設計人員、程序開發人員、數據庫管理員和最終用戶。數據庫系統的核心是數據庫管理系統。
數據庫管理員(Database Administrator,DBA)是專門負責管理和維護數據庫系統的人。通常,數據庫管理員的工作職責包括參與或負責數據庫設計,根據應用來創建和修改數據庫,設計系統存儲方案并制定未來的存儲需求計劃,維護數據庫的數據安全性、完整性、并發控制,安裝和升級數據庫服務器以及應用程序工具,管理和監控數據庫的用戶,監控和優化數據庫的性能,制定數據庫備份計劃,定期進行數據庫備份,在災難出現時對數據庫信息進行恢復,等等。在實際工作中,一個數據庫系統可能有一個或多個數據庫管理員,也可能數據庫管理員同時也負責系統中的其他工作。
數據庫應用系統(Database Application Systems,DBAS)是指由數據庫、數據庫管理系統、數據庫應用程序組成的軟件系統。
1.1.4 數據管理技術的發展
數據管理技術是指對數據進行分類、組織、編碼、存儲、檢索和維護的技術。數據管理技術的發展大致劃分為3個階段,即人工管理階段、文件系統階段和數據庫系統階段。
(1) 人工管理階段。20世紀50年代中期之前,計算機剛剛出現,主要用于科學計算。硬件存儲設備只有磁帶、卡片和紙帶;軟件方面還沒有操作系統,沒有專門管理數據的軟件。因此,程序員在程序中不僅要規定數據的邏輯結構,還要設計其物理結構,包括存儲結構、存取方法、輸入輸出方式等。數據的組織面向應用,不同的計算程序之間不能共享數據,使得不同的應用之間存在大量的重復數據,數據與程序不獨立。數據通過批處理方式進行處理,處理結果不保存,難以重復使用。
(2) 文件系統階段。20世紀50年代中期到60年代中期,隨著計算機大容量存儲設備(如硬盤)和操作系統的出現,數據管理進入文件系統階段。在文件系統階段,數據以文件為單位存儲在外存,且由操作系統統一管理。用戶通過操作系統的界面管理數據文件。文件的邏輯結構與物理結構相獨立,程序和數據分離。用戶的程序與數據可分別存放在外存儲器上,各個應用程序可以共享一組數據,通過文件來進行數據共享。但是,數據在文件中的組織方式仍然是由程序決定,因此必然存在相當的數據冗余。數據的邏輯結構和應用程序相關聯,一方修改,必然導致另一方也要隨之修改。此外,簡單的數據文件不能體現現實世界中數據之間的聯系,只能交由應用程序來進行處理,缺乏獨立性。
(3) 數據庫系統階段。20世紀60年代后,隨著計算機在數據管理領域的普遍應用,數據管理開始運用數據庫技術,進入了數據庫系統階段。數據庫技術以數據為中心組織數據,采用一定的數據模型,數據模型不僅體現數據本身的特征,而且體現數據之間的聯系,數據集成性高。根據數據模型建成的數據庫數據冗余小,易修改、易擴充,便于共享,程序和數據有較高的獨立性。數據庫管理系統統一管理與控制數據庫,保證了數據的安全性和完整性,可以有效地控制并發管理。
20世紀80年代中期以來,數據庫技術與其他新技術相結合,陸續產生了多種類型的數據庫,如面向對象數據庫、分布式數據庫、并行數據庫、多媒體數據庫、模糊數據庫、時態數據庫、實時數據庫、知識數據庫、統計數據庫等。隨著大數據時代的到來,各行各業不僅越來越多地面對海量數據,更迫切需求信息的挖掘和決策的制定,從而推動數據管理技術的進一步發展。
1.1.5 數據庫系統的體系結構
從數據庫管理系統角度看,數據庫系統通常采用三級模式結構,即數據庫系統由外模式、模式和內模式三級組成,如圖1-1所示。
圖1-1 數據庫系統三級模式結構圖
* 模式:模式也稱邏輯模式或概念模式,是數據庫中全體數據的邏輯結構和特性的描述,是所有用戶的公共數據視圖。模式和數據的物理存儲及硬件無關,也和使用的應用程序無關。一個數據庫只有一個模式。
* 外模式:外模式也稱子模式或用戶模式,是數據庫用戶能夠使用的部分數據的邏輯結構和特征的描述,是用戶的數據視圖。外模式面向用戶,描述用戶所關心的數據,是模式的子集。一個數據庫可以有多個外模式。
* 內模式:內模式也稱物理模式或存儲模式,是數據庫中數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式。一個數據庫只有一個內模式。
數據庫系統的三級模式滿足了數據庫的不同層面的需求。數據庫管理系統在三級模式結構之間提供了兩層映像,即外模式/模式映像和模式/內模式映像。這種兩層映像機制保證了數據庫系統的數據獨立性。數據獨立性包括邏輯獨立性和物理獨立性。
* 外模式/模式映像:每個外模式和模式之間存在外模式/模式映像,是外模式所描述的數據局部邏輯結構和模式所描述的全局邏輯結構之間的對應關系。當模式改變時,只要修改外模式/模式的映像,使得外模式保持不變,那么使用外模式的應用程序也保持不變,從而保證了數據的邏輯獨立性。邏輯獨立性將數據庫的結構與應用程序相分離,減少了修改應用程序的工作量。
* 模式/內模式映像:模式和內模式之間存在模式/內模式映像,是模式所描述的全局邏輯結構和內模式所描述的物理存儲結構之間的對應關系。當內模式改變時,只要修改模式/內模式的映像,使得模式保持不變,那么外模式以及相關的應用程序都不用修改,從而保證了數據的物理獨立性。
1.2 數 據 模 型
1.2.1 數據模型的概念
數據模型是數據庫的核心和基礎,是對現實世界的抽象描述。數據模型描述現實世界的數據、數據之間的聯系、數據的語義和完整性約束。數據模型應能夠比較真實地模擬現實世界,容易被人們理解,便于在計算機上實現。通過數據模型的建立,人們完成了從現實世界到信息世界和機器世界之間信息的抽象和表示,使得現實中的問題通過計算機系統得到精準的描述和解決。
1.2.2 數據模型的組成
數據模型描述了數據庫系統的靜態特征、動態特征和完整性約束條件。數據模型包括數據結構、數據操作和完整性約束3個部分。
1. 數據結構
數據結構是數據庫中所有對象類型的集合,是對系統靜態特征的描述。數據結構是數據模型的核心。通常根據數據模型中數據結構的類型來命名數據模型,如將采用層次結構、網狀結構和關系結構的數據模型命名為層次模型、網狀模型和關系模型。
2. 數據操作
數據操作是基于數據結構并對數據庫中對象可執行的操作和操作規則的集合,是對系統動態特征的描述。數據操作主要包括數據庫中數據的插入、更新、修改和查詢的操作。數據模型必須定義這些操作的確切含義、操作符號、操作規則及實現操作的語言。
3. 完整性約束
完整性約束是一組完整性規則的集合。完整性約束規定了數據模型中的數據本身及數據之間所需要遵守的約束條件,以便確保數據庫中數據的正確、有效和相容。
1.2.3 數據模型的類型
用計算機解決現實中的問題,這其實就是建立不同階段的數據模型的過程。通過建立不同階段的數據模型,人們將現實世界的特征抽象出來,然后轉化為能用計算機建立的模型,從而達到解決實際問題的目的。
根據數據建模的不同階段,數據模型分為概念數據模型、邏輯數據模型和物理數據模型3個類型。
1. 概念數據模型
概念數據模型,也稱概念模型,能夠真實地反映現實世界,包括事物和相互之間的聯系,能滿足用戶對數據的處理要求,是表示現實世界的一個抽象模型。概念數據模型是用戶與數據庫設計人員之間進行交流的語言。概念數據模型不依賴于特定的數據庫管理系統,但可以轉換為特定的數據庫管理系統所支持的數據模型。因此,概念數據模型要易于理解、易于擴充和易于向各種類型的邏輯數據模型轉換。
概念數據模型有實體-聯系模型、面向對象的數據模型、二元數據模型、語義數據模型、函數數據模型等。下面主要介紹實體-聯系(E-R)模型。
實體-聯系模型是采用E-R圖來描述現實世界的概念模型。E-R圖由簡單的圖形構成,可以直觀地表示現實世界中各類對象的特征和對象之間的聯系。
1)??E-R圖的介紹
E-R圖的組成元素包括實體集、屬性、聯系。E-R圖中,實體集用矩形表示,內有實體集名稱;屬性用橢圓形表示,內有屬性名稱,并以直線與所屬實體集或聯系相連;聯系用菱形表示,內有聯系名稱,并以直線與實體集相連,并在聯系旁邊注明聯系的類型(1∶1、1∶n或者m∶n)。如果聯系有屬性,那么也要用直線將屬性和聯系相連。
2) 實體-聯系模型中的基本概念
(1) 實體:實體是現實世界中可區分的客觀對象或抽象概念。例如,一個學生、一門課程。
(2) 屬性:屬性是實體所具有的特征。一個實體往往有多個屬性。例如,每個學生都有學號、姓名、性別、班級、出生日期等屬性。
(3) 實體集:實體集是具有相同屬性描述的實體的集合。例如,所有學生、所有課程。
(4) 實體型:實體型將實體集抽象為實體的名稱和所有屬性來表示該類實體。例如,學生(學號,姓名,性別,班級,出生日期)就是學生實體集的實體型。
(5) 碼:碼也稱鍵,是可以將實體集中每個實體進行區分的屬性或屬性集。例如,每個學生的學號絕不相同,學號這個屬性可以作為學生實體集的鍵。
(6) 域:域是實體集的各個屬性的取值范圍。例如,學生的性別屬性取值為“男”或“女”。
(7) 聯系:兩個實體集之間存在一對一、一對多和多對多3種聯系。例如,一個班主任只管理一個班級,一個班級只有一個班主任,班主任和班級之間是一對一的聯系;一個班級有多個學生,一個學生只屬于一個班級,班級和學生之間是一對多的聯系;一門課程有多個學生選修,一個學生選修多門課程,課程和學生之間是多對多的聯系。兩個實體集之間的3種聯系如圖1-2所示。
?(a)??1∶1聯系 ? (b)??1∶n聯系 (c)??m∶n聯系
圖1-2 兩個實體集之間的聯系圖
單一實體集之間也存在一對一、一對多和多對多3種聯系。例如,領導和職工之間,一個領導可以管理多個職工,而領導本人也是職工,如圖1-3所示。
兩個以上的實體集之間也存在一對一、一對多和多對多3種聯系。例如,一門課程由多個教師講授,一門課程有多個學生學習,一個學生的一門課程可能由多個教師講授(因為有可能存在補考和重修),如圖1-4所示。
圖1-3 單個實體集之間的一對多聯系圖 圖1-4 3個實體集之間的多對多聯系圖
班主任、班級、學生、課程4個實體集組成的E-R圖如圖1-5所示。
圖1-5 班主任、班級、學生、課程實體集的E-R圖
2. 邏輯數據模型
邏輯數據模型,也稱邏輯模型,是與特定的數據庫管理系統相關的數據模型。邏輯模型設計的要求是把概念模型轉換成所選用的數據庫管理系統所支持的特定類型的邏輯模型。
現有的邏輯模型主要包括層次模型、網狀模型和關系模型。
1) 層次模型
層次模型的總體結構為樹形結構,其中結點表示記錄類型,每個記錄類型包含多個字段,結點之間的連線表示記錄類型之間的聯系。層次模型有且只有一個根結點,除根結點外的所有結點向上有且只有一個父結點,向下可以有一個或多個子結點。層次模型的優點是數據結構簡單,完整性支持良好,但僅適用于數據具有層次性聯系的場合,插入和刪除結點操作的限制較多,查詢必須逐級通過父結點。
2) 網狀模型
網狀模型允許每個結點有零個或多個父結點,還允許結點之間有多個聯系。網狀模型較層次模型相比更接近現實,存取效率高,但數據獨立性復雜,在存取時要指定路徑,應用程序訪問困難。
3) 關系模型
關系模型建立在嚴格的數學概念基礎上,是當前流行的邏輯模型。以二維表為基本結構所建立的模型稱為關系模型。關系模型中,表是基礎邏輯結構,由行和列組成,如表1-1所示。
表1-1 教師信息表
教師工號
姓 名
性 別
出生日期
職 稱
09001
王斌
男
1975-3-26
副教授
09002
李梅
女
1977-6-2
講師
09003
金志明
男
1957-12-15
教授
09004
王思思
女
1981-3-2
助教
關系模型中以表來表示實體以及實體之間的聯系,以表來存儲記錄,數據結構簡單,存取路徑透明,具有良好的數據獨立性和安全保密性。關系模型中的基本概念如下。
* 關系:表。
* 元組:也稱記錄,是表中的一行,代表該關系所包含的一個實體。
* 屬性:也稱字段,是表中的一列,代表該關系所具有的一個特性。
* 碼:表中可以唯一確定一個元組的屬性或者屬性組。
* 候選碼:表中所有可以唯一確定一個元組的屬性或者屬性組的集合。其中,屬性組中應沒有可去除的屬性。
* 主碼:表中唯一確定一個元組的屬性或者屬性組。一個表只能有一個主碼。
* 外碼:不是表中的碼,但與另一個表中的主碼相對應的屬性或者屬性組。
* 域:屬性的取值范圍。
* 分量:一個元組中的某個屬性值。
* 關系模式:對關系的描述,可寫成“關系名(屬性1,屬性2,…,屬性n)”。
關系具有以下7個性質。
* 關系中元組的個數有限。
* 關系中的元組不能重復,
* 關系中的元組可以交換順序。
* 關系中的屬性具有原子性,不可分解。
* 關系中各屬性的名稱不能重復。
* 關系中的屬性可以交換順序。
* 關系中各元組同一屬性值的值域是相同的。
關系模型的數據操作主要包括查詢、插入、更新和刪除。
關系模型的完整性分為實體完整性、參照完整性和域完整性3類。其中,實體完整性是指關系的主碼值不能為空值;參照完整性是指關系的外碼值必須為空值或者等于所對應主碼所在關系中某個元組的主碼值;域完整性是指關系的屬性值滿足特定的語義要求。
1.2.4 數據庫的規范化
既然關系模型是用關系來保存數據,那么是不是關系中只要能裝入所有數據就行了呢?答案是否定的。關系模式不是隨意設計的。關系模式設計不佳,會導致后續使用出現如數據冗余量過大、插入異常、更新異常、刪除異常等問題。
因此,關系模式的設計必須滿足一定的標準,這個標準就是范式。關系數據庫中的關系模式必須滿足一定級別的范式。范式是符合某一種級別的關系模式的集合。目前,關系模式有6種范式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、改進的第三范式(BCNF)、第四范式(4NF)和第五范式(5NF)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎上進一步滿足更多要求的稱為第二范式(2NF),其余范式依次類推。
第一范式是指關系模式的每一個屬性都是不可分割的基本數據項,同一行同一列中不能有多個值。在任何一個關系數據庫中,第一范式是對關系模式的基本要求,不滿足第一范式的數據庫就不是關系數據庫。例如,學生表包含學號、學生姓名、班級編號和聯系方式,其中聯系方式不能將電話、地址和郵編3類數據合在一列中顯示,解決的方法是在學生表中設置電話、地址和郵編3個屬性,分別保存這3部分數據。
第二范式建立在第一范式的基礎上,即滿足第二范式必須先滿足第一范式。第二范式要求關系模式的非主屬性完全函數依賴于碼,不能存在對碼的部分函數依賴。例如,成績表包含學號、學生姓名、班級編號、課程編號、成績,主碼是學號、課程編號和班級編號。但是,只知道學號和課程編號就可以查出該學生的成績,不需要知道學生的班級編號,因此成績表的現有結構不符合第二范式。這樣設計的表在使用中有很多問題,插入一個學生的所有課程成績將反復插入該生的基本信息,如果刪除該生的所有課程成績將導致刪除該生的基本信息,如果該生的基本信息有變化又需要將其所有的成績記錄進行更新。為了解決數據冗余和重復操作的問題,可以將其中的學號和班級編號分解出來,形成學生表,原有的成績表保留學號、學生姓名、課程編號和成績。學生表的主碼是學號,成績表的主碼是學號和課程編號,這樣調整使得兩個表均滿足第二范式。
第三范式建立在第二范式的基礎上,要求關系模式中的非主屬性不依賴于其他非主屬性,也就是不存在傳遞依賴。例如,班級表包含班級編號、班級名稱、系編號、系名稱,主碼是班級編號。如果插入同一個系的兩個班級的信息,將產生兩條記錄,其中系編號和系名稱完全一樣。其實,系編號決定了系名稱,這樣又會產生大量的數據冗余。可以添加系表,系表包含系編號、系名稱、系簡介,主碼是系編號,在班級表中刪除系名稱和系簡介,添加系編號。這樣使得關系模式滿足第三范式。
BCNF建立在第三范式的基礎上,是指關系模式的所有非主屬性完全函數依賴于碼,所有主屬性完全函數依賴于不包含它的碼,沒有屬性完全函數依賴于非碼的任何屬性組。例如,排課表包含課程編號、教師編號和學號。一名教師教一門課程,一名學生上一門課程,一門課程有多名教師任教。由此可見,知道學號和教師編號便可推斷課程編號,但根據教師編號也可以推斷課程編號。這個關系模式有學號和教師編號及教師編號兩個碼,雖然滿足第三范式,但不滿足BCNF。可以將這個關系模式分解成任教表和選課表,任教表包含教師編號和課程編號,選課表包含學號和教師編號。這兩個關系模式滿足了BCNF。
第一范式到第五范式的6種范式之間的關系:第五范式高于第四范式高于BCNF高于第三范式高于第二范式高于第一范式。但并不是說關系模式分解的數量越多越好,表的數量過多反而會導致連接操作的代價增大,影響數據庫的使用效率。一般說來,工程項目中關系數據庫設計只需滿足第三范式(3NF)就行了。
1.3 關 系 代 數
關系模型的數據結構是關系,也就是表。對于關系中元組的操作包括插入、更新、刪除和查詢4種。這些操作可以使用數學理論來進行表述,其中最重要的是關系代數。
1.3.1 傳統的集合運算
關系代數中,傳統的集合運算包括并、差、交和笛卡兒積。
(1) 并:假設關系R和關系S,R和S的關系模式完全一樣,則R和S并運算的結果是由關系R和關系S中所有的元組組成(重復元組需要去除),記作R∪S,如圖1-6所示。
圖1-6 并運算示意圖
(2) 差:假設關系R和關系S,R和S的關系模式完全一樣,則R和S差運算的結果是僅存在于關系R而不存在于關系S的元組組成,記作R-S,如圖1-7所示。
圖1-7 差運算示意圖
(3) 交:假設關系R和關系S,R和S的關系模式完全一樣,則R和S交運算的結果是由關系R和關系S共同存在的元組組成,記作R∩S,如圖1-8所示。
圖1-8 交運算示意圖
(4) 笛卡兒積:假設關系R和關系S,則R和S笛卡兒積運算的結果是由關系R的元組和關系S的元組拼接組成,笛卡兒積的關系模式同樣也是R和S的關系模式的拼接結果,記作R×S,如圖1-9所示。
圖1-9 笛卡兒積運算示意圖
1.3.2 專門的關系運算
關系代數中,專門的關系運算包括選擇、投影、連接和除運算。
在使用關系運算時,往往還會使用到比較運算符和邏輯運算符。比較運算符包括>、>=、<、<=、=和<>(代表不等于)。邏輯運算符包括∧(與)、∨(或)和非(?)。比較運算符和邏輯運算符可以組合使用,就是邏輯表達式。例如,a=0、b<3∧c>=10、?(a='abc'∧b<10)。邏輯表達式的結果只能為邏輯值“真”或者“假”。
(1) 選擇:選擇運算是在關系R中選擇滿足給定條件F的元組,記作?F(R),其中的F是一個邏輯表達式。選擇運算是對關系進行水平分解,也就是說運算結果的模式和原關系的模式完全一樣。例如,在關系R中選擇屬性A值為“a”并且屬性C值為1的元組,表達式寫作?A='a'∧C=1(R),如圖1-10所示。
?A='a'∧C=1(R)也可以寫作?1='a'∧3=1(R),這里的1='3'的意思是第一屬性列的值等于3,3=1的意思是第三屬性列的值等于1。
(2) 投影:選擇運算是在關系R中選擇所需的屬性列,記作?A(R),其中的A是R中的屬性列。投影運算是對關系進行垂直分解,也就是說運算結果的模式和原關系的模式不完全一樣,屬性列少于或等于原有關系,如果出現重復行則需要去除。例如,在關系R中對屬性A和屬性B進行投影,表達式寫作A,B(R),如圖1-11所示。
圖1-10 選擇運算示意圖 圖1-11 投影運算示意圖
(3) 連接:連接也稱?連接。連接運算是從關系R和關系S的笛卡兒積運算結果中選擇屬性值之間滿足條件的元組,記作。其中,i和j分別是關系R和關系S上的屬性組,值具備可比性,?是比較運算符。
連接運算中有兩種最重要的運算,分別是等值運算和自然連接。等值運算是指?為“=”的連接運算。等值運算從是從關系R和關系S的笛卡兒積運算結果中選擇屬性值相等的元組,記作。自然連接將關系R和關系S中相同屬性組具有相同值的元組進行等值連接,結果中相同屬性需要去重,記作RS。連接、等值連接和自然連接如圖1-12所示。
(4) 除:假設關系R(X,Y)和關系S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作R÷S,如圖1-13所示。
圖1-12 連接、等值連接、自然連接運算示意圖
圖1-13 除運算示意圖
1.4 數據庫設計的方法和步驟
數據庫設計是指將基于特定的信息內容、操作方法和應用環境來設計數據庫的數據模式。數據庫設計的目標是為用戶提供一個高效、安全的數據庫,滿足用戶的使用需求。大型數據庫設計是一項復雜的工程,要求數據庫設計人員既要具有堅實的數據庫知識,還要具備應用系統開發的能力,同時要了解應用系統的業務使用。因此,數據庫設計是一項涉及多學科的綜合性技術。系統設計師、程序設計師、數據庫管理員和用戶代表也應參與整個數據庫設計過程。
1.4.1 數據庫設計的方法
目前常用的各種數據庫設計方法都屬于規范設計法,即都是運用軟件工程的思想與方法,根據數據庫設計的特點,提出了各種設計準則與設計規程。這種工程化的規范設計方法也是在目前技術條件下設計數據庫的最實用的方法。規范設計法中,最著名的是新奧爾良(New Orleans)方法。新奧爾良方法采用軟件工程的思想,按照軟件開發生命周期來完成數據庫的設計,開發過程采取工程化方法,按照步驟來進行,確保數據庫設計的質量。
1.4.2 數據庫設計的步驟
按照常用的規范設計法——新奧爾良方法來劃分,數據庫設計分為6個階段,即需求分析、概念設計、邏輯設計、物理設計、數據庫的實施和部署、數據庫的運行和維護。
1. 需求分析
需求分析的內容是充分調查研究,收集基礎數據,了解系統運行環境,明確用戶需求,確定新系統的功能,最終得到系統需求分析說明書,作為設計數據庫的依據。需求分析所調查的重點是數據和處理,以獲得用戶對數據庫的以下要求:①用戶需要從數據庫中獲得信息的內容與性質;②用戶要完成什么處理功能,處理有哪些業務規則;③數據操作、系統吞吐量、并發訪問的性能要求;④安全性和數據完整性的要求;⑤數據庫及其應用系統的環境要求。
在做需求分析時,首先要了解用戶單位的組織機構組成,然后調查用戶單位的日常業務活動流程。在此基礎上,明確用戶的信息需求和系統概念需求,明確用戶對系統的性能和成本的要求,確認數據項,產生系統需求說明書。需求分析的調查方法包括跟班作業、開調查會、請專人調查、發放用戶調查表和查閱原系統有關記錄。
經過需求分析,可以產生數據字典、數據流圖、判定表和判定樹等。①數據字典是系統中所有數據及其處理的描述信息的集合。數據字典由數據項、數據結構、數據流、數據存儲、處理過程組成。②數據流圖是結構化分析方法中使用的圖形化工具,描繪數據在系統中流動和處理的過程。數據流圖中包括數據流、數據源、對數據的加工處理和數據存儲。數據流圖根據層級不同分為頂層數據流圖、中層數據流圖和底層數據流圖。頂層數據流圖經過細化可以產生中層數據流圖和底層數據流圖。③判定表和判定樹是描述加工的圖形工具,分別是表格和樹狀結構,適合描述問題處理中具有多個判斷,而且每個決策與若干條件有關。判定表和判定樹給出判定條件和判定決策,以及判定條件的從屬關系、并列關系、選擇關系。
2. 概念設計
概念設計的任務是根據需求分析說明書對現實世界進行數據抽象,建立概念模型。概念模型的作用是與用戶溝通,確認系統的信息和功能,與數據庫管理系統無關。
概念設計方法有4種,分別是自頂向下、自底向上、逐步擴張和混合策略。①自頂向下是指先設計概念模型的總體框架,再逐步細化。②自底向上是指先設計局部概念模型,再合并成總體。③逐步擴張是指先設計概念模型的主要部分,再逐步擴充。④混合策略是指將自頂向下和自底向上相結合,先設計概念模型的總體框架,再根據框架來合并各局部概念模型。
概念模型有實體-聯系模型、面向對象的數據模型、二元數據模型、語義數據模型、函數數據模型等。
采用實體-聯系模型進行概念模型設計的步驟如下。
(1) 設計局部實體-聯系模型。具體任務是確定局部實體-聯系模型中的實體、實體的屬性、關鍵字、實體之間的聯系和屬性,畫出局部E-R圖。
(2) 設計全局實體-聯系模型。具體任務是合并局部E-R圖,生成全局E-R圖,并消除局部E-R圖合并時產生的沖突。這里的沖突包括屬性沖突、命名沖突和結構沖突,僅在合并E-R圖時才會發現。①屬性沖突是指同名的屬性的類型、值域或單位不同;②命名沖突是指業務內容相同的屬性命名不同或業務內容不同的屬性命名相同;③結構沖突是指實體在其他圖中作為聯系或屬性出現,或是同一實體的屬性不同。
(3) 優化全局E-R模型。具體任務是修改全局E-R圖,消除冗余屬性、消除冗余聯系,得到最終的E-R圖。
3. 邏輯設計
邏輯模型設計的任務是把概念模型轉換為所使用的數據庫管理系統所支持的邏輯模型,定義數據完整性、安全性,評估性能。
將實體-聯系模型轉換成關系模型的步驟如下。
(1) 將E-R圖轉換為關系模式集合。在轉換時,E-R圖中的一個實體轉換為一個關系模式,實體的屬性轉換為關系模式的屬性,實體的碼轉換為關系模式的關鍵字。E-R圖中的聯系也要進行轉換,轉換方法如下:①一對一的聯系可以轉換成單個關系模式,也可以與任意一端的實體型轉換成的關系模式合并;②一對多的聯系可以轉換成單個關系模式,也可以與多端的實體型轉換成的關系模式合并;③多對多、3個及3個以上的聯系只能轉換成單個關系模式。
(2) 對關系模式集合進行規范化處理,滿足一定的范式。規范化目的是使結構更合理,消除存儲異常,使數據冗余盡量小,便于插入、刪除和更新。在對關系模式進行規范化時,必須遵從概念單一化原則,即一個關系模式描述一個實體或實體間的一種聯系。規范化的操作方法是確定數據依賴,用關系來表示E-R圖中的所有實體,對所有數據依賴進行極小化處理,對需要分解的關系模式逐一進行分解,分解后的關系模式集合必須保證不丟失原有關系的信息。實際操作時,并不一定要求全部模式都達到BCNF,有時會故意保留部分冗余便于數據查詢。
(3) 設計外模式。外模式是提供給數據庫不同用戶的使用接口。對于關系數據庫來說,外模式就是視圖。視圖能夠為用戶屏蔽不需要的數據庫結構,按用戶的需求顯示數據庫中的數據。同時,視圖使得用戶在使用數據庫時,只能使用被視圖引用的數據,而不能使用數據庫中其他數據,保證了數據庫的安全性。在數據庫結構發生變化時,只需要修改視圖的定義,用戶的使用接口保持不變,從而保證了與數據庫相關的應用程序無須修改,達到了數據獨立性。
(4) 評價數據庫性能并優化關系模式。
4. 物理設計
物理設計是要選取一個最適合數據庫的應用環境的物理結構,包括數據庫的存儲記錄格式、存儲記錄安排和存取方法,使得數據庫具有良好的響應速度、足夠的事務流量和適宜的存儲空間。它與系統硬件環境、存儲介質性能和DBMS有關。
在關系模型數據庫中,物理設計主要包括存儲記錄結構的設計、數據存放位置和存取方法。其中,存儲記錄結構包括記錄的組成、數據項的類型和長度,以及邏輯記錄到存儲記錄的映像。數據存放位置是指是否要把經常訪問的數據結合在一起。存取方法是指聚集索引和非聚集索引的使用。物理設計還要對綜合分析影響數據庫的因素,確定系統配置,建立最優化設計方案,使空間利用率達到最大,系統數據操作負荷最小。
5. 數據庫的實施和部署
數據庫實施的內容包括使用數據庫管理系統創建實際數據庫結構、加載初始數據、編制和調試相應的應用程序、測試數據庫及其應用程序。
數據庫部署的內容是指將完成并通過測試的數據庫及其應用程序,包括相關的系統軟件安裝在規定的硬件平臺上,在數據庫中裝入完整的數據,配置系統運行環境,對系統的用戶進行操作培訓,提交用戶手冊及系統使用文檔。
6. 數據庫的運行和維護
數據庫的運行和維護主要是由數據庫管理員來負責。數據庫的運行和維護主要包括調整數據庫的結構,重組與重構數據庫,調整數據庫的安全性和完整性條件,制定合理的數據備份計劃,完成備份以及故障恢復任務,監控數據庫性能并優化數據庫結構。
1.5 小型案例實訓
創建一個學生成績數據庫,所涉及的信息包括校內所有的系、班級、學生、課程、教師和學生成績。
學生成績數據庫的信息內容如下:每個系有系號、系名和系主任,每個班級有班號、班名、入學年份、人數、系號和班主任,每個學生有學號、姓名、性別、出生日期,每門課程有課程號、課程名、學分和學時,每個教師有教師號、姓名、性別、出生日期、職稱。每位學生屬于一個班級,每個班級屬于一個系,每個班級有一個班主任,每個系有一個系主任,每個學生修多門課程,每門課程有多個學生選修,并有課程成績。學生成績需要記錄該課程的授課教師、學期、成績。
先畫出學生成績數據庫的E-R圖,再轉換成關系模型。E-R圖和關系模式中加下劃線的屬性分別是該實體集的和關系模式的主碼。
由題意可知,學生成績數據庫E-R圖中包含5個實體,即系、班級、學生、課程和教師。各實體的屬性設計如下:系(系號,系名,系主任號),班級(班號,班名,入學年份,人數,系號,班主任號),學生(學號,姓名,性別,出生日期,班號),課程(課程號,課程名,學分,學時),教師(教師號,姓名,性別,出生日期,職稱,系號)。各實體之間的聯系包括:班級與系之間的隸屬關系,學生與班級之間的隸屬關系,教師與系之間的隸屬關系,學生選修課程之間的“選修”聯系,“選修”聯系應有成績屬性。根據以上分析,得到學生成績數據庫的E-R圖,如圖1-14所示。
圖1-14 學生成績數據庫E-R圖
根據學生成績數據庫E-R圖,轉換得到學生成績數據庫關系模式如下。
系(系號,系名,系主任號)
班級(班號,班名,入學年份,人數,系號,班主任號)
學生(學號,姓名,性別,出生日期,班號)
課程(課程號,課程名,學分,學時)
教師(教師號,姓名,性別,出生日期,職稱,系號)
成績(學號,課程號,教師號,成績,學期)
小 結
數據庫(Database,DB)是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。數據庫中的數據是按照一定的數據模型組織、描述和存儲的,有較小的冗余度、較高的數據獨立性和易擴展性。
數據庫管理系統(Database Management System,DBMS)是使用和管理數據庫的系統軟件,位于用戶與操作系統之間,負責對數據庫進行統一的管理和控制。所有對數據庫的操作都交由數據庫管理系統完成,這使得數據庫的安全性和完整性得以保證。
數據庫系統(Database Systems,DBS)是指在計算機系統中引入了數據庫的系統,專門用于完成特定的業務信息處理。數據庫系統包括硬件、軟件和用戶。其中,軟件包括數據庫、數據庫管理系統、操作系統、應用開發工具和數據庫應用程序。用戶包括系統分析員、數據庫設計人員、程序開發人員、數據庫管理員和系統用戶。數據庫系統的核心是數據庫管理系統。
數據管理技術是指對數據進行分類、組織、編碼、存儲、檢索和維護的技術。數據管理技術的發展大致劃分為3個階段,即人工管理階段、文件系統階段和數據庫系統階段。
從數據庫管理系統角度看,數據庫系統通常采用三級模式結構,即數據庫系統由外模式、模式和內模式三級組成。兩層映像機制保證了數據庫系統的數據獨立性,數據獨立性包括邏輯獨立性和物理獨立性。
數據模型是數據庫系統的核心和基礎,是對現實世界的抽象描述。數據模型描述現實世界的數據、數據之間的聯系、數據的語義和完整性約束。數據模型包括數據結構、數據操作和完整性約束3部分。數據模型分為概念數據模型、邏輯數據模型和物理數據模型3類。
實體-聯系模型是采用E-R圖來描述現實世界的概念模型。E-R圖的組成元素包括實體集、屬性和聯系。
現有的邏輯模型主要包括層次模型、網狀模型和關系模型。以二維表為基本結構所建立的模型稱為關系模型。
關系數據庫中的關系模式必須滿足一定級別的范式。目前關系模式有6種范式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、改進的第三范式(BCNF)、第四范式(4NF)和第五范式(5NF)。一般說來,工程項目中關系數據庫設計只需滿足第三范式(3NF)即可。
關系代數中,傳統的集合運算包括并、差、交和笛卡兒積,專門的關系運算包括選擇、投影、連接和除運算。
目前常用的各種數據庫設計方法都屬于規范設計法,最著名的是新奧爾良(New Orleans)方法。按照常用的規范設計法——新奧爾良方法來劃分,數據庫設計分為6個階段,即需求分析、概念設計、邏輯設計、物理設計、數據庫實施和部署、數據庫運行和維護。
習 題
1. 填空題
(1) 數據庫是一個____________________________________的數據集合。數據庫中的數據是按照一定的____________________________________組織、描述和存儲的,有較小的_______________________________、較高的__________________________________和____________________________________。
(2)??__________________________用于建立和修改數據庫的庫結構,數據庫管理系統提供__________________________來完成該功能。________________________用于用戶對數據庫插入、更新、刪除和查詢數據,數據庫管理系統提供__________________________來完成該功能。______________________________確保數庫系統的正常運行,內容包括多用戶環境下的并發控制、安全性檢查、存取限制控制、完整性檢查、日志的管理、事務的管理和發生故障后數據庫的恢復,數據庫管理系統提供____________________________來完成該功能。
(3) 數據庫系統包括硬件、軟件和用戶。其中,軟件包括_______________________。用戶包括_____________________。數據庫系統的核心是__________________________。
(4) 數據管理技術的發展大致劃分為3個階段,即___________________________、____________________________和_______________________________。
(5) 從數據庫管理系統角度看,數據庫系統通常采用三級模式結構,即數據庫系統由_______________________________三級組成。_______________________________保證了邏輯獨立性,________________________________保證了物理獨立性。
(6) 數據模型包括____________________________、__________________________和____________________________3部分。
(7) 根據數據建模的不同階段,數據模型分為_________、________和________三類。
(8)??____________________________是用戶與數據庫設計人員之間進行交流的語言。
(9)??____________________________是采用E-R圖來描述現實世界的概念模型。E-R圖的組成元素包括___________________________。___________________________用矩形表示,____________________________用橢圓形表示,___________________________用菱形表示,兩個實體集之間存在_____________________________3種聯系。
(10) 現有的邏輯模型主要包括____________________________________。
(11) 以____________________________________為基本結構所建立的模型稱為關系模型。關系模型中,表是基礎邏輯結構,由____________________________________組成。
(12) 第一范式是指___________________________。第二范式要求關系模式的非主屬性完全函數依賴于碼,不能存在對碼的________________________。第三范式要求關系模式中的非主屬性不依賴于其他非主屬性,也就是不存在____________________________。_______________________________是指關系模式的所有非主屬性完全函數依賴于碼,所有主屬性完全函數依賴于不包含它的碼,沒有屬性完全函數依賴于非碼的任何屬性組。
(13) 關系代數中,傳統的集合運算包括____________________________________,專門的關系運算包括____________________________________。
(14) 按照常用的規范設計法——____________________________________來劃分,數據庫設計分為6個階段,即____________________________________。
2. 操作題
設計一個圖書館管理數據庫。圖書館管理數據庫的信息內容如下:
每種圖書屬于一個圖書類別,每個圖書類別有多種圖書。每種圖書有ISBN、書名、版次、類型、作者、出版社、價格、可借數量和庫存數量。每種圖書有多本。每本圖書有圖書編號、ISBN、狀態和狀態更新時間。
每個讀者屬于一個讀者類型,每個讀者類型有多個讀者。每個讀者有讀者編號、姓名、類型、證件號、性別、聯系方式、登記日期、有效日期、已借書數量和是否掛失。
每個讀者可以借閱多本圖書,每本圖書可以被多次借閱。每次借閱記錄有借閱編號、圖書編號、讀者編號、借閱日期、到期日期、處理日期和狀態。
先畫出圖書館管理數據庫的E-R圖,再轉換成關系模型。
……