




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、123 本章拋開MySQL講解關系數據庫設計的相關知識,以“選課系統”為例,講解“選課系統”數據庫的設計流程。 4內容一覽 數據庫設計的相關知識數據庫概述 E-R圖關系數據庫設計1123 簡單地說:數據庫(Database或DB)是存儲、管理數據的容器; 嚴格地說:數據庫是“按照某種數據結構對數據進行組織、存儲和管理的容器”。 總結:數據永遠是數據庫的核心。關系數據庫關系數據庫管理系統結構化查詢語言SQL1.1 數據庫概述 21.1.1 關系數據庫管理系統 通過“數據庫管理系統”,數據庫用戶可以輕松地實現數據庫容器中各種數據庫對象的訪問(增、刪、改、查等操作),并可以輕松地完成數據庫的維護工作
2、(備份、恢復、修復等操作) 數據庫用戶無法直接通過操作系統獲取數據庫文件中的具體內容; 數據庫管理系統通過調用操作系統的進程管理、內存管理、設備管理以及文件管理等服務,為數據庫用戶提供管理、控制數據庫容器中各種數據庫對象、數據庫文件的接口。1.1.1 關系數據庫管理系統添加標題添加標題5層次模型面向對象模型網狀模型關系模型數據庫管理系統常用的數學模型 6添加標題 基于“關系模型”的數據庫管理系統稱為關系數據庫管理系統(簡稱為RDBMS)。隨著關系數據庫管理系統的日臻完善,目前關系數據庫管理系統已占據主導地位。1.1.1 關系數據庫管理系統/blog/jdd-2013-what-we-found
3、-out-about-databases2014年2月數據庫流行度排行榜截至目前,MySQL已經成功逆襲!1.1.1 關系數據庫管理系統2014年3月數據庫流行度排行榜1.1.1 關系數據庫管理系統2014年4月數據庫流行度排行榜1.1.1 關系數據庫管理系統開源MySQL源代碼免費下載簡單MySQL體積小,便于安裝MySQL性能足夠與商業數據庫媲美功能強大MySQL提供的功能足夠與商業數據庫媲美逆襲原因性能優越1.1.1 關系數據庫管理系統 關系數據庫中所謂的“關系”,實質上是一張二維表。請看下面的課程表。字段名(列名)第1個字段(列)第1條記錄第2條記錄第3條記錄第4條記錄第5條記錄第3個
4、字段(列)第2個字段(列)第4個字段(列)1.1.2 關系數據庫 作為數據庫中最為重要的數據庫對象,數據庫表的設計過程并非一蹴而就,上述課程表根本無法滿足“選課系統”的功能需求。 事實上,數據庫表的設計過程并非如此簡單,本章的重點就是討論如何設計結構良好的數據庫表。1.1.2 關系數據庫 結構化查詢語言(Structured Query Language或簡稱為SQL)是一種應用最為廣泛的關系數據庫語言,該語言定義了操作關系數據庫的標準語法,幾乎所有的關系數據庫管理系統都支持SQL。1.1.3 結構化查詢語言SQL 學習重點123 數據庫設計是一個“系統工程”,要求數據庫開發人員:熟悉“商業領
5、域”的商業知識。利用“管理學”的知識與其他開發人員進行有效溝通。掌握一些數據庫設計輔助工具。數據庫設計輔助工具商業知識和溝通技能“選課系統”概述45定義問題域編碼規范1.2 數據庫設計的相關知識16 數據庫技術解決的是“商業領域”的“商業問題”。 數據庫開發人員有必要成為該“商業領域”的專家,與其他開發人員(包括最終用戶)一起工作,繼而使用數據庫技術解決該“商業領域”的“商業問題” 。1.2.1 商業知識和溝通技能1.2.2 數據庫設計輔助工具 工具模型技術業務模型面向對象分析和設計技術結構化分析和設計技術軟件測試技術關系數據庫設計技術 ErwinPowerDesignerRational R
6、oseVisio VC+6.0Visual studioEclipseNetBeans 單元測試工具功能測試工具性能測試 工具程序流程圖 DFD 時序圖 狀態圖CASE工具IDE工具測試工具數據模型類圖E-R圖 限于篇幅,在不影響“選課系統”核心功能的基礎上,適當地對該系統進行“定制”、“擴展”以及“瘦身”。 1.2.3 “選課系統”概述 定義問題域是數據庫設計過程中重要的活動,它的目標是準確定義要解決的商業問題。 “選課系統”亟需解決的“商業”問題有哪些?1.2.4 定義問題域 在編程的時候會考慮代碼的可讀性嗎?你覺得代碼可讀性是需要考慮的問題嗎?1. 代碼不僅要自己能讀懂,還要別人也能看懂
7、?2. 盡量做到可讀,但時間緊任務重的時候就顧不上了?3. 代碼只要自己能讀懂就可以了?4. 代碼寫完就完了,不用管以后是否能讀懂?5. 不知道,沒有想過這個問題?1.2.5 編碼規范 請記住:盡最大努力把方便留給別人和將來的自己。 建議大家遵循本書羅列的常用編程規范!22123關系實體和屬性E-R圖的設計原則 E-R圖設計的質量直接決定了關系數據庫設計的質量。 1.3 E-R圖23 實體不是某一個具體事物,而是某一種類別所有事物的統稱。 屬性通常用于表示實體的某種特征,也可以使用屬性表示實體間關系的特征實體屬性屬性1.3.1 實體和屬性 E-R圖中的關系用于表示實體間存在的聯系,在E-R圖中
8、,實體間的關系通常使用一條線段表示。 E-R圖中實體間的關系是雙向的。關系關系1.3.2 關系 基數表示一個實體到另一個實體之間關聯的數目,基數是針對關系之間的某個方向提出的概念,基數可以是一個取值范圍,也可以是某個具體數值基數可選基數強制1.3.2 關系 元表示關系所關聯的實體個數。二元關系二元關系一元關系1.3.2 關系 使用關聯(Association)表示實體間關系的屬性。關聯關聯1.3.2 關系123實體是一個單獨的個體,不能存在于另一個實體中,成為另一個實體的屬性。屬性應該存在于、且只存在于某一個地方(實體或者關聯)。同一個實體在同一個E-R圖內,僅出現一次。 數據庫開發人員通常采
9、用“一事一地”的原則從系統的功能描述中抽象出來E-R圖。1.3.3 E-R圖的設計原則1為E-R圖中的每個實體建立一張表。2為每張表定義一個主鍵(如果需要,可以向表添加一個沒有實際意義的字段作為該表的主鍵)3增加外鍵表示一對多關系。4建立新表表示多對多關系。5為字段選擇合適的數據類型。6定義約束條件(如果需要)。7評價關系的質量,并進行必要的改進。1.4 關系數據庫設計30student(student_no,student_name,student_contact)course(course_name,up_limit,description,status)teacher(teacher_n
10、o,teacher_name,teacher_contact)classes(class_name,department_name)1.4.1 為每個實體建立一張數據庫表關鍵字(key):用以唯一標識表中的每行記錄。主鍵(Primary Key):在所有的關鍵字中選擇一個關鍵字,作為該表的主關鍵字,簡稱主鍵。1.4.2 為每張表定義一個主鍵主鍵有以下兩個特征: (1)表的主鍵可以是一個字段,也可以是多個字段的組合(這種情況稱為復合主鍵)。 (2)表中主鍵的值具有唯一性且不能取空值(NULL);當表中的主鍵由多個字段構成時,每個字段的值都不能取NULL。 主鍵設計技巧,請參看本書內容。1.4.2
11、 為每張表定義一個主鍵student(student_no,student_name,student_contact)course(course_no,course_name,up_limit,description,status)teacher(teacher_no,teacher_name,teacher_contact)classes(class_no,class_name,department_name)1.4.2 為每張表定義一個主鍵 外鍵(Foreign Key):如果表A中的一個字段a對應于表B的主鍵b,則字段a稱為表A的外鍵,此時存儲在表A中字段a的值,要么是NULL,要么是來
12、自于表B主鍵b的值。1.4.3 增加外鍵表示一對多關系 情形一:如果實體間的關系為一對多關系,則需要將“一”端實體的主鍵放到“多”端實體中,然后作為“多”端實體的外鍵,通過該外鍵即可表示實體間的一對多關系。1.4.3 增加外鍵表示一對多關系 讓學生記住所在班級,遠比班級“記住”所有學生容易的多 。1.4.3 增加外鍵表示一對多關系 情形二:實體間的一對一關系,可以看成一種特殊的一對多關系:將“一”端實體的主鍵放到另“一”端的實體中,并作為另“一”端的實體的外鍵,然后將外鍵定義為唯一性約束(Unique Constraint)。1.4.3 增加外鍵表示一對多關系PK1.4.3 增加外鍵表示一對多
13、關系PK后的方案:student(student_no,student_name,student_contact,class_no)course(course_no,course_name,up_limit,description,status,teacher_no)teacher(teacher_no,teacher_name,teacher_contact)classes(class_no,class_name,department_name)1.4.3 增加外鍵表示一對多關系 情形三:如果兩個實體間的關系為多對多關系,則需要添加新表表示該多對多關系,然后將該關系涉及到的實體的“主鍵”分別
14、放入到新表中(作為新表的外鍵),并將關系自身的屬性放入到新表中作為新表的字段。1.4.4 建立新表表示多對多關系teacher(teacher_no,teacher_name,teacher_contact)classes(class_no,class_name,department_name)course(course_no,course_name,up_limit,description,status,teacher_no)student(student_no,student_name,student_contact,class_no)choose(choose_no,student_no
15、,course_no,score,choose_time)1.4.4 建立新表表示多對多關系1.4.4 建立新表表示多對多關系1.4.5 為字段選擇合適的數據類型常用的約束條件有6種: 主鍵(Primary Key)約束 外鍵(Foreign Key)約束 唯一性(Unique)約束 默認值(Default)約束 非空(Not NULL)約束 檢查(Check)約束。1.4.6 定義約束(Constraint)條件設計數據庫時,有兩個不爭的事實。數據庫中冗余的數據需要額外的維護,因此質量好的一套表應該盡量“減少冗余數據”。數據庫中經常發生變化的數據需要額外的維護,因此質量好的一套表應該盡量“避
16、免數據經常發生變化”。1.4.7 評價數據庫表設計的質量 冗余的數據需要額外的維護,并且容易導致“數據不一致”、“插入異常”以及“刪除異常”等問題的發生。1.4.8 使用規范化減少數據冗余場景一:插入異常。場景二:修改復雜。場景三:刪除異常。1.4.8 使用規范化減少數據冗余 規范化是通過最小化數據冗余來提升數據庫設計質量的過程,規范化是基于函數依賴以及一系列范式定義的,最為常用的是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。1.4.8 使用規范化減少數據冗余 函數依賴:一張表內兩個字段值之間的一一對應關系稱為函數依賴。 第一范式:如果一張表內同類字段不重復出現,該表就滿足第一范式的要求。1.4.8 使用規范化減少數據冗余第一范式1.4.8 使用規范化減少數據冗余 第二范式:一張表在滿足第一范式的基礎上,如果每個“非關鍵字”字段“僅僅”函數依賴于主鍵,那么該表滿足第二范式的要求。1.4.8 使用規范化減少數據冗余第二范式1.4.8 使用規范化減少數據冗余 第三范式:如果一張表滿足第二范式的要求,并且不存在“非關鍵字”字段函數依賴于任何其他“非關鍵字”字段,那么該表滿足第三范式的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司春季種植活動方案
- 2025年語言學基礎認知考試題及答案
- 2025年專業英語與外語能力測試的知識考核考試題及答案
- 2025年項目風險管理課程考試題及答案
- 2025年物業管理師考試試題及答案
- 2025年司法考試試題及答案
- 2025年數字創新管理師職業資格考試試卷及答案
- 2025年計算機視覺與圖像處理理論考試試題及答案
- 2025年高考數學科目模擬試題及答案
- 2025年檔案管理與信息資源考試試卷及答案
- 2024年11月-礦山隱蔽致災因素普查
- DBJ51T 163-2021 成都軌道交通設計防火標準
- 加熱爐安全操作規程培訓課件
- 學校紅十字會工作手冊
- 特種設備隱患排查與整治
- 2024年人教版七年級下冊生物期末檢測試卷及答案
- 藥劑師知識科普大賽單選題100道及答案解析
- 荊州市國土空間總體規劃(2021-2035年)
- 2024年變電設備檢修工(高級技師)技能鑒定理論考試題庫(含答案)
- 單位食堂配送菜合同協議書
- 家具家居運輸合同三篇
評論
0/150
提交評論