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