MySQL數(shù)據(jù)庫基礎(chǔ)與實例教程第1章.ppt
《MySQL數(shù)據(jù)庫基礎(chǔ)與實例教程第1章.ppt》由會員分享,可在線閱讀,更多相關(guān)《MySQL數(shù)據(jù)庫基礎(chǔ)與實例教程第1章.ppt(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。
,孔祥盛,MySQL數(shù)據(jù)庫基礎(chǔ)與實例教程之?dāng)?shù)據(jù)庫設(shè)計概述,,1,,2,,3,本章拋開MySQL講解關(guān)系數(shù)據(jù)庫設(shè)計的相關(guān)知識,以“選課系統(tǒng)”為例,講解“選課系統(tǒng)”數(shù)據(jù)庫的設(shè)計流程。,,4,內(nèi)容一覽,數(shù)據(jù)庫設(shè)計的相關(guān)知識,數(shù)據(jù)庫概述,E-R圖,關(guān)系數(shù)據(jù)庫設(shè)計,,1,,2,,3,簡單地說:數(shù)據(jù)庫(Database或DB)是存儲、管理數(shù)據(jù)的容器;嚴(yán)格地說:數(shù)據(jù)庫是“按照某種數(shù)據(jù)結(jié)構(gòu)對數(shù)據(jù)進(jìn)行組織、存儲和管理的容器”??偨Y(jié):數(shù)據(jù)永遠(yuǎn)是數(shù)據(jù)庫的核心。,關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫管理系統(tǒng),結(jié)構(gòu)化查詢語言SQL,1.1數(shù)據(jù)庫概述,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),通過“數(shù)據(jù)庫管理系統(tǒng)”,數(shù)據(jù)庫用戶可以輕松地實現(xiàn)數(shù)據(jù)庫容器中各種數(shù)據(jù)庫對象的訪問(增、刪、改、查等操作),并可以輕松地完成數(shù)據(jù)庫的維護(hù)工作(備份、恢復(fù)、修復(fù)等操作),數(shù)據(jù)庫用戶無法直接通過操作系統(tǒng)獲取數(shù)據(jù)庫文件中的具體內(nèi)容;數(shù)據(jù)庫管理系統(tǒng)通過調(diào)用操作系統(tǒng)的進(jìn)程管理、內(nèi)存管理、設(shè)備管理以及文件管理等服務(wù),為數(shù)據(jù)庫用戶提供管理、控制數(shù)據(jù)庫容器中各種數(shù)據(jù)庫對象、數(shù)據(jù)庫文件的接口。,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),添加標(biāo)題,添加標(biāo)題,,,,,,,,,層次模型,面向?qū)ο竽P?網(wǎng)狀模型,關(guān)系模型,,,,,數(shù)據(jù)庫管理系統(tǒng)常用的數(shù)學(xué)模型,添加標(biāo)題,基于“關(guān)系模型”的數(shù)據(jù)庫管理系統(tǒng)稱為關(guān)系數(shù)據(jù)庫管理系統(tǒng)(簡稱為RDBMS)。隨著關(guān)系數(shù)據(jù)庫管理系統(tǒng)的日臻完善,目前關(guān)系數(shù)據(jù)庫管理系統(tǒng)已占據(jù)主導(dǎo)地位。,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),,2014年2月數(shù)據(jù)庫流行度排行榜,截至目前,MySQL已經(jīng)成功逆襲!,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),2014年3月數(shù)據(jù)庫流行度排行榜,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),2014年4月數(shù)據(jù)庫流行度排行榜,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),開源,MySQL源代碼免費下載,簡單,MySQL體積小,便于安裝,MySQL性能足夠與商業(yè)數(shù)據(jù)庫媲美,功能強大,MySQL提供的功能足夠與商業(yè)數(shù)據(jù)庫媲美,逆襲原因,性能優(yōu)越,1.1.1關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫中所謂的“關(guān)系”,實質(zhì)上是一張二維表。請看下面的課程表。,,,,,,,,字段名(列名),第1個字段(列),第1條記錄,第2條記錄,第3條記錄,第4條記錄,第5條記錄,,第3個字段(列),,第2個字段(列),,第4個字段(列),1.1.2關(guān)系數(shù)據(jù)庫,作為數(shù)據(jù)庫中最為重要的數(shù)據(jù)庫對象,數(shù)據(jù)庫表的設(shè)計過程并非一蹴而就,上述課程表根本無法滿足“選課系統(tǒng)”的功能需求。事實上,數(shù)據(jù)庫表的設(shè)計過程并非如此簡單,本章的重點就是討論如何設(shè)計結(jié)構(gòu)良好的數(shù)據(jù)庫表。,1.1.2關(guān)系數(shù)據(jù)庫,結(jié)構(gòu)化查詢語言(StructuredQueryLanguage或簡稱為SQL)是一種應(yīng)用最為廣泛的關(guān)系數(shù)據(jù)庫語言,該語言定義了操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語法,幾乎所有的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL。,1.1.3結(jié)構(gòu)化查詢語言SQL,學(xué)習(xí)重點,,1,,2,,3,數(shù)據(jù)庫設(shè)計是一個“系統(tǒng)工程”,要求數(shù)據(jù)庫開發(fā)人員:?熟悉“商業(yè)領(lǐng)域”的商業(yè)知識。?利用“管理學(xué)”的知識與其他開發(fā)人員進(jìn)行有效溝通。?掌握一些數(shù)據(jù)庫設(shè)計輔助工具。,數(shù)據(jù)庫設(shè)計輔助工具,商業(yè)知識和溝通技能,“選課系統(tǒng)”概述,,4,,5,定義問題域,編碼規(guī)范,1.2數(shù)據(jù)庫設(shè)計的相關(guān)知識,數(shù)據(jù)庫技術(shù)解決的是“商業(yè)領(lǐng)域”的“商業(yè)問題”。數(shù)據(jù)庫開發(fā)人員有必要成為該“商業(yè)領(lǐng)域”的專家,與其他開發(fā)人員(包括最終用戶)一起工作,繼而使用數(shù)據(jù)庫技術(shù)解決該“商業(yè)領(lǐng)域”的“商業(yè)問題”。,1.2.1商業(yè)知識和溝通技能,1.2.2數(shù)據(jù)庫設(shè)計輔助工具,面向?qū)ο蠓治龊驮O(shè)計技術(shù)結(jié)構(gòu)化分析和設(shè)計技術(shù)軟件測試技術(shù)關(guān)系數(shù)據(jù)庫設(shè)計技術(shù),ErwinPowerDesignerRationalRoseVisio,VC++6.0VisualstudioEclipseNetBeans,單元測試工具功能測試工具性能測試工具,程序流程圖DFD時序圖狀態(tài)圖,CASE工具IDE工具測試工具,,,,數(shù)據(jù)模型,,,類圖,E-R圖,,限于篇幅,在不影響“選課系統(tǒng)”核心功能的基礎(chǔ)上,適當(dāng)?shù)貙υ撓到y(tǒng)進(jìn)行“定制”、“擴展”以及“瘦身”。,1.2.3“選課系統(tǒng)”概述,,定義問題域是數(shù)據(jù)庫設(shè)計過程中重要的活動,它的目標(biāo)是準(zhǔn)確定義要解決的商業(yè)問題。“選課系統(tǒng)”亟需解決的“商業(yè)”問題有哪些?,1.2.4定義問題域,,在編程的時候會考慮代碼的可讀性嗎?你覺得代碼可讀性是需要考慮的問題嗎?1.代碼不僅要自己能讀懂,還要別人也能看懂?2.盡量做到可讀,但時間緊任務(wù)重的時候就顧不上了?3.代碼只要自己能讀懂就可以了?4.代碼寫完就完了,不用管以后是否能讀懂?5.不知道,沒有想過這個問題?,1.2.5編碼規(guī)范,請記?。罕M最大努力把方便留給別人和將來的自己。,建議大家遵循本書羅列的常用編程規(guī)范!,,1,,2,,3,關(guān)系,實體和屬性,E-R圖的設(shè)計原則,E-R圖設(shè)計的質(zhì)量直接決定了關(guān)系數(shù)據(jù)庫設(shè)計的質(zhì)量。,1.3E-R圖,,實體不是某一個具體事物,而是某一種類別所有事物的統(tǒng)稱。屬性通常用于表示實體的某種特征,也可以使用屬性表示實體間關(guān)系的特征,,實體,,屬性,,屬性,1.3.1實體和屬性,,E-R圖中的關(guān)系用于表示實體間存在的聯(lián)系,在E-R圖中,實體間的關(guān)系通常使用一條線段表示。E-R圖中實體間的關(guān)系是雙向的。,,關(guān)系,,關(guān)系,1.3.2關(guān)系,,基數(shù)表示一個實體到另一個實體之間關(guān)聯(lián)的數(shù)目,基數(shù)是針對關(guān)系之間的某個方向提出的概念,基數(shù)可以是一個取值范圍,也可以是某個具體數(shù)值,,基數(shù),,,,可選,基數(shù),強制,1.3.2關(guān)系,,元表示關(guān)系所關(guān)聯(lián)的實體個數(shù)。,,二元關(guān)系,,二元關(guān)系,,一元關(guān)系,1.3.2關(guān)系,,使用關(guān)聯(lián)(Association)表示實體間關(guān)系的屬性。,,關(guān)聯(lián),關(guān)聯(lián),,1.3.2關(guān)系,,1,,2,,3,實體是一個單獨的個體,不能存在于另一個實體中,成為另一個實體的屬性。,屬性應(yīng)該存在于、且只存在于某一個地方(實體或者關(guān)聯(lián))。,同一個實體在同一個E-R圖內(nèi),僅出現(xiàn)一次。,數(shù)據(jù)庫開發(fā)人員通常采用“一事一地”的原則從系統(tǒng)的功能描述中抽象出來E-R圖。,1.3.3E-R圖的設(shè)計原則,,1.為E-R圖中的每個實體建立一張表。2.為每張表定義一個主鍵(如果需要,可以向表添加一個沒有實際意義的字段作為該表的主鍵)3.增加外鍵表示一對多關(guān)系。4.建立新表表示多對多關(guān)系。5.為字段選擇合適的數(shù)據(jù)類型。6.定義約束條件(如果需要)。7.評價關(guān)系的質(zhì)量,并進(jìn)行必要的改進(jìn)。,1.4關(guān)系數(shù)據(jù)庫設(shè)計,student(student_no,student_name,student_contact)course(course_name,up_limit,description,status)teacher(teacher_no,teacher_name,teacher_contact)classes(class_name,department_name),1.4.1為每個實體建立一張數(shù)據(jù)庫表,關(guān)鍵字(key):用以唯一標(biāo)識表中的每行記錄。主鍵(PrimaryKey):在所有的關(guān)鍵字中選擇一個關(guān)鍵字,作為該表的主關(guān)鍵字,簡稱主鍵。,1.4.2為每張表定義一個主鍵,主鍵有以下兩個特征:(1)表的主鍵可以是一個字段,也可以是多個字段的組合(這種情況稱為復(fù)合主鍵)。(2)表中主鍵的值具有唯一性且不能取空值(NULL);當(dāng)表中的主鍵由多個字段構(gòu)成時,每個字段的值都不能取NULL。主鍵設(shè)計技巧,請參看本書內(nèi)容。,1.4.2為每張表定義一個主鍵,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為每張表定義一個主鍵,外鍵(ForeignKey):如果表A中的一個字段a對應(yīng)于表B的主鍵b,則字段a稱為表A的外鍵,此時存儲在表A中字段a的值,要么是NULL,要么是來自于表B主鍵b的值。,1.4.3增加外鍵表示一對多關(guān)系,情形一:如果實體間的關(guān)系為一對多關(guān)系,則需要將“一”端實體的主鍵放到“多”端實體中,然后作為“多”端實體的外鍵,通過該外鍵即可表示實體間的一對多關(guān)系。,1.4.3增加外鍵表示一對多關(guān)系,,讓學(xué)生記住所在班級,遠(yuǎn)比班級“記住”所有學(xué)生容易的多。,1.4.3增加外鍵表示一對多關(guān)系,情形二:實體間的一對一關(guān)系,可以看成一種特殊的一對多關(guān)系:將“一”端實體的主鍵放到另“一”端的實體中,并作為另“一”端的實體的外鍵,然后將外鍵定義為唯一性約束(UniqueConstraint)。,1.4.3增加外鍵表示一對多關(guān)系,,,PK,1.4.3增加外鍵表示一對多關(guān)系,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增加外鍵表示一對多關(guān)系,情形三:如果兩個實體間的關(guān)系為多對多關(guān)系,則需要添加新表表示該多對多關(guān)系,然后將該關(guān)系涉及到的實體的“主鍵”分別放入到新表中(作為新表的外鍵),并將關(guān)系自身的屬性放入到新表中作為新表的字段。,1.4.4建立新表表示多對多關(guān)系,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,course_no,score,choose_time),1.4.4建立新表表示多對多關(guān)系,,1.4.4建立新表表示多對多關(guān)系,,1.4.5為字段選擇合適的數(shù)據(jù)類型,,常用的約束條件有6種:主鍵(PrimaryKey)約束外鍵(ForeignKey)約束唯一性(Unique)約束默認(rèn)值(Default)約束非空(NotNULL)約束檢查(Check)約束。,,1.4.6定義約束(Constraint)條件,,設(shè)計數(shù)據(jù)庫時,有兩個不爭的事實。?數(shù)據(jù)庫中冗余的數(shù)據(jù)需要額外的維護(hù),因此質(zhì)量好的一套表應(yīng)該盡量“減少冗余數(shù)據(jù)”。?數(shù)據(jù)庫中經(jīng)常發(fā)生變化的數(shù)據(jù)需要額外的維護(hù),因此質(zhì)量好的一套表應(yīng)該盡量“避免數(shù)據(jù)經(jīng)常發(fā)生變化”。,,1.4.7評價數(shù)據(jù)庫表設(shè)計的質(zhì)量,,冗余的數(shù)據(jù)需要額外的維護(hù),并且容易導(dǎo)致“數(shù)據(jù)不一致”、“插入異?!币约啊皠h除異?!钡葐栴}的發(fā)生。,,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,場景一:插入異常。場景二:修改復(fù)雜。場景三:刪除異常。,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,規(guī)范化是通過最小化數(shù)據(jù)冗余來提升數(shù)據(jù)庫設(shè)計質(zhì)量的過程,規(guī)范化是基于函數(shù)依賴以及一系列范式定義的,最為常用的是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,函數(shù)依賴:一張表內(nèi)兩個字段值之間的一一對應(yīng)關(guān)系稱為函數(shù)依賴。第一范式:如果一張表內(nèi)同類字段不重復(fù)出現(xiàn),該表就滿足第一范式的要求。,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,第一范式,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,第二范式:一張表在滿足第一范式的基礎(chǔ)上,如果每個“非關(guān)鍵字”字段“僅僅”函數(shù)依賴于主鍵,那么該表滿足第二范式的要求。,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,,第二范式,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,第三范式:如果一張表滿足第二范式的要求,并且不存在“非關(guān)鍵字”字段函數(shù)依賴于任何其他“非關(guān)鍵字”字段,那么該表滿足第三范式的要求。,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,,第三范式,1.4.8使用規(guī)范化減少數(shù)據(jù)冗余,,,統(tǒng)計學(xué)生的個人資料時,如果讀者是一名數(shù)據(jù)庫開發(fā)人員,應(yīng)該讓學(xué)生上報年齡信息,還是讓學(xué)生上報出生日期?如何確保每一門課程選報學(xué)生的人數(shù),不超過人數(shù)上限?,1.4.9避免數(shù)據(jù)經(jīng)常發(fā)生變化,,,方案一:course(course_no,course_no,course_name,up_limit,description,status,teacher_no,available)方案二:數(shù)據(jù)庫表無需進(jìn)行任何更改。,1.4.9避免數(shù)據(jù)經(jīng)常發(fā)生變化,任務(wù)1:描述“選課系統(tǒng)”的問題域。任務(wù)2:將本書圖1-7中“團(tuán)購網(wǎng)站、顧客以及房源之間的三元關(guān)系表示方法”E-R圖轉(zhuǎn)化為關(guān)系(模式)。任務(wù)3:使用筆紙或者word繪圖工具,繪制“選課系統(tǒng)”的E-R圖。任務(wù)4:將“選課系統(tǒng)”的E-R圖轉(zhuǎn)化為關(guān)系(模式)。,任務(wù)布置,Thanks,,,,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MySQL 數(shù)據(jù)庫 基礎(chǔ) 實例教程
鏈接地址:http://appdesigncorp.com/p-11497568.html