《物聯(lián)網(wǎng)技術創(chuàng)新應用》數(shù)據(jù)庫基礎知識_第1頁
《物聯(lián)網(wǎng)技術創(chuàng)新應用》數(shù)據(jù)庫基礎知識_第2頁
《物聯(lián)網(wǎng)技術創(chuàng)新應用》數(shù)據(jù)庫基礎知識_第3頁
《物聯(lián)網(wǎng)技術創(chuàng)新應用》數(shù)據(jù)庫基礎知識_第4頁
《物聯(lián)網(wǎng)技術創(chuàng)新應用》數(shù)據(jù)庫基礎知識_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫基礎知識InternetofThings目錄ContentsSuccessWords2相關知識數(shù)據(jù)結構搭建任務實踐數(shù)據(jù)庫基礎知識數(shù)據(jù)庫的安裝與使用數(shù)據(jù)基本操作目錄ContentsSuccessWords3數(shù)據(jù)庫基礎知識4數(shù)據(jù)庫基本概念數(shù)據(jù)(Data)數(shù)據(jù)是描述現(xiàn)實世界事物的符號記錄,是用物理符號記錄的可以鑒別信息。包括文字、圖形、聲音等,他們都是用來描述事物特性的。數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡記為DBMS)一種系統(tǒng)軟件,用于數(shù)據(jù)庫的建立、使用和維護。如Access、SQLServer、FoxPro、Oracle、Dbase、DB2、MySQL、Sybase等。數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一個數(shù)據(jù)管理軟件,它的基本功能包括以下幾個方面:數(shù)據(jù)定義功能用戶通過數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)它可以方便地對數(shù)據(jù)庫中的數(shù)據(jù)對象進行定義。數(shù)據(jù)操縱功能用戶可以使用數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)操縱數(shù)據(jù),實現(xiàn)對數(shù)據(jù)的基本操作。如查詢、插入、刪除和修改。數(shù)據(jù)庫的運行管理功能數(shù)據(jù)庫在建立、運行和維護時由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理和控制,以保證數(shù)據(jù)的安全性、完整性,對并發(fā)操作的控制以及發(fā)生故障后的系統(tǒng)恢復等。數(shù)據(jù)庫的建立和維護功能它包括數(shù)據(jù)庫初始數(shù)據(jù)的輸入、轉換功能,數(shù)據(jù)庫的轉儲、恢復功能,數(shù)據(jù)庫的重組織功能和性能監(jiān)視、分析功能等。5數(shù)據(jù)庫基本概念數(shù)據(jù)庫(DataBase,簡記為DB)數(shù)據(jù)庫是長期存儲在計算機內(nèi)、有組織的、可共享的數(shù)據(jù)集合。這種集合具有如下特點:最小的冗余度應用程序對數(shù)據(jù)資源共享數(shù)據(jù)獨立性高統(tǒng)一管理和控制計算機數(shù)據(jù)管理數(shù)據(jù)處理中最重要的問題就是數(shù)據(jù)管理,包括如何對數(shù)據(jù)分類、組織、編碼、存儲、檢索和維護。隨著計算機軟、硬件的不斷升級,數(shù)據(jù)管理經(jīng)歷了以下幾個階段:面向對象數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫管理文件系統(tǒng)人工管理獨立性越來越高,使用越來越方便,技術越來越復雜6數(shù)據(jù)庫基本概念7數(shù)據(jù)庫技術的發(fā)展人工管理階段這一階段是指20世紀50年代中期以前,計算機主要用于科學計算,當時的計算機硬件狀況是:外存只有磁帶、卡片、紙帶,沒有磁盤等直接存取的存儲設備;軟件狀況是:沒有操作系統(tǒng),沒有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。人工管理階段的特點是:數(shù)據(jù)不保存、數(shù)據(jù)無專門軟件進行管理、數(shù)據(jù)不共享、數(shù)據(jù)不具有獨立性、數(shù)據(jù)無結構。文件系統(tǒng)階段這一階段從20世紀50年代后期到60年代中期,計算機硬件和軟件都有了一定的發(fā)展。計算機不僅用于科學計算,還大量用于管理。這時硬件方面已經(jīng)有了磁盤、磁鼓等直接存取的存儲設備。在軟件方面,操作系統(tǒng)中已經(jīng)有了數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。處理方式上不僅有了文件批處理,而且能夠聯(lián)機實時處理數(shù)據(jù)庫系統(tǒng)階段20世紀60年代末數(shù)據(jù)管理進入新時代--數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫系統(tǒng)階段出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng),即數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫系統(tǒng)是一種較完善的高級數(shù)據(jù)管理方式,也是當今數(shù)據(jù)管理的主要方式,獲得了廣泛的應用。數(shù)據(jù)結構化在描述數(shù)據(jù)時不僅描述數(shù)據(jù)本身,還描述數(shù)據(jù)之間的聯(lián)系。數(shù)據(jù)共享性高、冗余度小、易擴充數(shù)據(jù)可以被多個應用共享。這不僅大大減小了數(shù)據(jù)的冗余度、節(jié)約存儲空間、減少存取時間,而且可以避免數(shù)據(jù)之間的不相容性和不一致性。數(shù)據(jù)獨立性高數(shù)據(jù)獨立性包括物理獨立性和邏輯獨立性。數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的物理存儲改變時,應用程序不用改變。數(shù)據(jù)的邏輯獨立性是指當數(shù)據(jù)的邏輯結構改變時,用戶應用程序不用改變。統(tǒng)一的數(shù)據(jù)管理和控制數(shù)據(jù)庫對系統(tǒng)中的用戶是共享資源。計算機的共享一般是并發(fā)的,即多個用戶可以同時存取數(shù)據(jù)庫中的數(shù)據(jù),甚至可以同時存取數(shù)據(jù)庫中同一個數(shù)據(jù)。因此,數(shù)據(jù)庫管理系統(tǒng)必須提供以下幾個方面的數(shù)據(jù)控制保護功能。8數(shù)據(jù)庫基本概念

分布式數(shù)據(jù)庫系統(tǒng)階段分布式數(shù)據(jù)庫系統(tǒng)是由若干個站集合而成。這些站又稱為節(jié)點,它們在通訊網(wǎng)絡中聯(lián)接在一起,每個節(jié)點都是一個獨立的數(shù)據(jù)庫系統(tǒng),它們都擁有各自的數(shù)據(jù)庫、中央處理機、終端,以及各自的局部數(shù)據(jù)庫管理系統(tǒng)。因此分布式數(shù)據(jù)庫系統(tǒng)可以看作是一系列集中式數(shù)據(jù)庫系統(tǒng)的聯(lián)合。它們在邏輯上屬于同一系統(tǒng),但在物理結構上是分布式的。

面向對象數(shù)據(jù)庫系統(tǒng)面向對象程序語言操縱的是對象,所以面向對象數(shù)據(jù)庫(簡稱OODB)的一個優(yōu)勢是面向對象語言程序員在做程序時,可直接以對象的形式存儲數(shù)據(jù)9數(shù)據(jù)庫基本概念現(xiàn)實世界數(shù)據(jù)庫管理的對象存在于現(xiàn)實世界中,現(xiàn)實世界中的事物存在著各種各樣的聯(lián)系。這種聯(lián)系是客觀存在的,是由事物本身的性質決定的。例如,學??紕展芾硐到y(tǒng)中有老師、學生、課程、教室等構成元素。概念世界概念世界也叫做信息世界,是現(xiàn)實世界在人們頭腦中的反映,是對客觀事物及其聯(lián)系的一種抽象描述。從現(xiàn)實世界到概念世界是通過概念模型來表達的。如對學生的描述可分為:學號、姓名、班級、籍貫、性別等概念。數(shù)據(jù)世界存入計算機系統(tǒng)的數(shù)據(jù)是將概念世界中的事物數(shù)據(jù)化的結果。為準確地反映事物本身及事物之間的各種聯(lián)系,數(shù)據(jù)庫中的數(shù)據(jù)一定存在一個結構,數(shù)據(jù)模型可用來準確描述這種結構。在實現(xiàn)數(shù)據(jù)庫管理,也就是三個世界的轉化過程中,概念模型和數(shù)據(jù)模型是實現(xiàn)現(xiàn)實世界數(shù)據(jù)化的橋梁,是對現(xiàn)實世界中的事物進行抽象的工具。10數(shù)據(jù)庫管理的實現(xiàn)模型概念模型(model):一般而言,模型是現(xiàn)實世界某些特征的模擬和抽象,分為實物模型與抽象模型。建筑模型,汽車模型,飛機模型等都是實物模型,它們通常是客觀事物的某些外觀特征或者功能的模擬與刻畫;數(shù)學模型s=πr2是一種抽象模型,它抽象描述了園的面積和園的半徑之間的數(shù)量關系,揭示客觀事物的某些本質的、內(nèi)部的特征。數(shù)據(jù)模型在實現(xiàn)數(shù)據(jù)庫管理的過程中,數(shù)據(jù)模型起著關鍵作用。整個數(shù)據(jù)庫技術的發(fā)展就是沿著數(shù)據(jù)模型的主線展開的?,F(xiàn)有的數(shù)據(jù)庫均是基于某種數(shù)據(jù)模型,了解數(shù)據(jù)模型的基本概念是學習數(shù)據(jù)庫的基礎。根據(jù)模型應用的不同目的,可以將這些模型劃分為兩類,他們分屬于兩個不同的層次。 第一類模型是概念模型,也稱信息模型。它是按用戶的觀點來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫設計。另一類模型是數(shù)據(jù)模型,主要包括網(wǎng)狀模型、層次模型、關系模型等,它是按計算機系統(tǒng)的觀點對數(shù)據(jù)建模,主要用于DBMS的實現(xiàn),這種數(shù)據(jù)模型也叫結構數(shù)據(jù)模型。11數(shù)據(jù)模型1.2數(shù)據(jù)庫管理的實現(xiàn)數(shù)據(jù)模型的要素:數(shù)據(jù)結構數(shù)據(jù)結構是所研究的對象類型的集合,這些對象是數(shù)據(jù)庫的組成成分,它們包括兩類,一類是與數(shù)據(jù)類型、內(nèi)容、性質有關的對象;一類是與數(shù)據(jù)之間聯(lián)系有關的對象。數(shù)據(jù)操作數(shù)據(jù)操作是指對數(shù)據(jù)庫中各種對象的(型)的實例(值)允許執(zhí)行的操作的集合,包括操作及有關的操作規(guī)則。數(shù)據(jù)庫主要有檢索和更新(包括插入、刪除、修改)兩大類操作,數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號、操作規(guī)則(如優(yōu)先級)以及實現(xiàn)操作的語言。數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。數(shù)據(jù)的約束條件數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。如:入學年齡不超過30歲,成績不得有三門以上不及格等。12數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)1.2.3概念模型概念模型的相關概念(1)實體(Entity):客觀存在并相互區(qū)別的事物及其事物之間的聯(lián)系。例如,一個學生、一門課程、學生的一次選課、一次考試等都是實體。(2)屬性(Attribute):實體所具有的某一特性。例如,學生的學號、姓名、性別、出生年份、系、入學時間等。(3)碼(Key):唯一標示實體的屬性集。例如,學號是學生實體的碼。(4)域(Domain):屬性的取值范圍。例如,年齡的域為15至35之間。(5)實體型(EntityType):用實體名及其屬性名集合來抽象和刻畫同類實體,稱為實體型。例如,學生(學號,姓名,性別,出生年份,系,入學時間)就是一個實體型。(6)實體集(EntitySet):同型實體的集合稱為實體集。如,全體學生就是一個實體集。(7)聯(lián)系(Relationship):實體與實體之間以及實體與組成它的各屬性間的關系。13數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)實體間聯(lián)系的三種情況(1)一對一聯(lián)系(1:1)如果對于實體集A中的每一個實體,實體集B中至少有一個(也可以沒有)實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系,記為1:1。例如,一個學生只能有一個學號,而一個學號只能指向一個學生,則學生與學號之間具有一對一聯(lián)系。(2)一對多聯(lián)系(1:n)如果對于實體集A中的每一個實體,實體集B中有個n實體(n≥0)之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系,記為1:n。例如,一個班級中有若干名學生,而每個學生只在一個班級中學習,則班級與學生之間具有一對多聯(lián)系。(3)多對多聯(lián)系(m:n)如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m≥0)與之聯(lián)系,則稱實體集A與實體集B具有多對多聯(lián)系,記為m:n。例如,一門課程同時有若干個學生選修,而一個學生可以同時選修多門課程,則課程與學生之間具有多對多聯(lián)系。

注意:實際上,一對一聯(lián)系是一對多聯(lián)系的特例,而一對多聯(lián)系又是多對多聯(lián)系的特例。

14數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)概念模型的表示方法概念模型的表示方法很多,最常用的是實體—聯(lián)系方法。該方法用E-R(Entity-RelationshipApproch)圖來描述現(xiàn)實世界的概念模型。E-R圖提供了表示實體型、屬性和聯(lián)系的方法。E-R圖有三個要素:(1)實體型:用矩形表示,矩形框內(nèi)寫明實體名。(2)屬性:用橢圓形表示,并用無向邊將其與相應的實體連接起來。(3)聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1:1,1:n或m:n)。15數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)16數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)1.2.4數(shù)據(jù)模型這里講的數(shù)據(jù)模型是在概念級的模型(概念模型)的基礎上形成的,為計算機上某一DBMS支持的數(shù)據(jù)模型。本書主要介紹前三種模型。層次模型若用圖來表示,層次模型是一棵倒立的樹。在數(shù)據(jù)庫中,滿足以下條件的數(shù)據(jù)模型稱為層次模型:①有且僅有一個結點無父結點,這個結點稱為根結點;②其他結點有且僅有一個父結點。17數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)網(wǎng)狀模型

在現(xiàn)實世界中,事物之間的聯(lián)系更多的是非層次關系的,用層次模型表示非樹型結構是很不直接的,網(wǎng)狀模型則可以克服這一弊病。網(wǎng)狀模型是一個網(wǎng)絡。在數(shù)據(jù)庫中,滿足以下兩個條件的數(shù)據(jù)模型稱為網(wǎng)狀模型。①允許一個以上的結點無父結點;②一個結點可以有多于一個的父結點。從以上定義看出,網(wǎng)狀模型構成了比層次結構復雜的網(wǎng)狀結構,適宜表示多對多的聯(lián)系。網(wǎng)狀模型和網(wǎng)頁上的“超鏈接數(shù)據(jù)”模式有類似之處。18數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)關系模型以二維表的形式表示實體和實體之間聯(lián)系的數(shù)據(jù)模型稱為關系數(shù)據(jù)模型。從模型的三要素角度看,關系模型的內(nèi)容為:(1)數(shù)據(jù)結構:一張二維表格。(2)數(shù)據(jù)操作:數(shù)據(jù)表的定義,檢索、維護等。(3)數(shù)據(jù)約束條件:表中列的取值范圍即域值的限制條件。關系模型的幾個常見概念:(1)關系:一個關系就是一張二維表,每個關系都有一個關系名,即數(shù)據(jù)表名。(2)元組:表中的行稱為元組,一行就是一個元組,對應表中一條記錄。(3)屬性:表中的列稱為屬性,即字段。字段名稱為屬性名,字段值稱為屬性值。(4)域:屬性的取值范圍,如,分數(shù)在0~100之間。(5)關鍵字:表中的一個屬性(組),它的值可以唯一地標志一個元組。如:學號。(6)候選碼:表中的某一個屬性,它的值可以唯一地標志一個元組。一個表中可能有多個候選碼,選擇一個作為主鍵,主鍵的屬性稱為主屬性。(7)外關鍵字:如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它們是另外一個關系的關鍵字,則稱其為該關系的外關鍵字。19數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)20數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)關系模型的完整性關系模型對數(shù)據(jù)一般都具有一定的限制,這種限制稱為完整性或完整性約束。關系模型的完整性是保證關系數(shù)據(jù)表正確的關鍵。關系模型支持實體完整性約束、參照完整性約束和域約束3種完整性約束。(1)實體完整性約束假設A是一個表R的主鍵,則A不能接收空值,即單列主鍵的值不能為空,復合主鍵的任何列也不能接收空值。例如,在學生信息表中,“學號”為該表的主鍵,那么在數(shù)據(jù)庫的任何記錄中,“學號”列的值都不能為空。這樣的約束稱為實體完整性約束。21數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)(2)參照完整性約束參照完整性約束關心的是邏輯相關的表中值與值之間的關系。假設X是一個表A的主鍵,在表B中是外鍵,那么若K是表B中一個外部鍵值,則表A中必然存在在X上的值為K的記錄。例如,“系編碼”是院系信息表的主鍵,而在學生信息表中是相對于院系信息表的外鍵(學生信息表中的主關鍵字是由“學號”和“系編碼”組合而成),對于學生信息表的任何記錄,其所包含的“系編碼”的值,在院系信息表的“系編碼”列中必然存在一個相同的值。這樣的約束稱為參照完整性約束。

22數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)(3)域約束域是邏輯相關的值的集合,從域中可以得出特定列的值。例如,在學生信息表中:[出生日期]域的值必須按照特定的統(tǒng)一格式存放,而不能有時用:1986.12.23格式,有時用:12/23/1986格式,造成數(shù)據(jù)混亂;[學生名字]、[院系名稱]等域的值必須屬于字符集合;對于[性別],該域中的值必須局限于男、女等。23數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)1.2.5關系運算關系的基本運算有兩類:傳統(tǒng)的集合運算和專門的關系運算。

傳統(tǒng)的集合運算(1)并(Union):設有兩個關系R和S,它們具有相同的結構。R和S的并是由屬于R或屬于S的元組組成的集合,運算符為∪。例如:設每個班有一個學生關系R1,R2,R3,…則全校學生關系T是:

T=R1∪R2∪R3∪…(2)差(Difference):設有兩個關系R和S,它們具有相同的結構。R和S的差是由屬于R但不屬于S的元組組成的集合。運算符為-。例如:設有參加計算機小組的學生關系R,參加橋牌小組的學生關系S。求參加了計算機

小組但沒有參加橋牌小組的學生。結果放在關系T1中,則T1=R-S。24數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)(3)交(Intersection):設有兩個關系R和S,它們具有相同的結構。R和S的交是由既屬于R又屬于S的元組組成的集合,運算符為∩。交運算的結果是R和S的共同元組。例如:設有參加計算機小組的學生關系R,參加橋牌小組的學生關系S。求既參加了計算機小組又參加橋牌小組的學生。結果放在關系T2中,則T2=R∩S。關系的交可以用關系的差來表示。即R∩S=R-(R–S),所以,上式也可以寫成:T2=R-(R–S)。25數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)專門的關系運算(1)選擇(Selection):按照給定條件從指定的關系中挑選出滿足條件的元組構成新的關系,其關系模式不變,但其中元組的數(shù)目小于等于原來的關系中元組的個數(shù),它是原關系的一個子集。這是從行的角度進行的運算,即水平方向抽取元組(2)投影(projection):從指定的關系中挑選出某些屬性構成新的關系,其關系模式所包含的屬性個數(shù)往往比原關系少,或者屬性的排列順序不同。投影的結果將取消由于取消了某些列而產(chǎn)生的重復元組。 例如:設有讀者關系,讀者(借書證號,姓名,性別,單位,職稱,地址)。按照單位在前,姓名在后的次序列出讀者名單。此運算結果包括元組數(shù)目不變,但減少了列的數(shù)目,同時改變了列的顯示順序。26數(shù)據(jù)庫基本概念1.2數(shù)據(jù)庫管理的實現(xiàn)(3)聯(lián)接(join):聯(lián)接是將兩個和多個關系模式通過公共的屬性名拼接成一個更寬的關系模式,生成的新關系包含滿足聯(lián)接條件的元組。例如:設有三個關系:學生(學號,姓名,所在系,性別,現(xiàn)住址);課程(課程號,課程名,學分);選修(學號,課程號,成績)。若想查詢成績90分以上的學生姓名。聯(lián)接結果包括學生、課程、選修三個關系中屬性的并集。自然聯(lián)接:是去掉重復屬性的等值連接。它屬于聯(lián)接運算的一個特例27數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計1.3.1數(shù)據(jù)庫設計方法手工試湊法

數(shù)據(jù)庫的設計水平和與設計人員的經(jīng)驗有直接關系。數(shù)據(jù)庫設計只是一種經(jīng)驗的反復實施,而不能稱為是一門科學,缺乏科學分析理論基礎和工程手段的支持,所以設計質量很難保證。規(guī)范設計法

主要是將設計的步驟分為:需求分析、概念設計、邏輯設計和物理設計等幾個步驟,并采用了許多規(guī)范化的手段和工具完成每個階段的任務。比如基于E-R模型的數(shù)據(jù)庫設計方法,基于3NF(第三范式)的設計方法,基于抽象語法規(guī)則的設計方法等,就是在數(shù)據(jù)庫設計的各個過程中采用的具體的技術與方法。

注意:規(guī)范設計法仍舊是一種手工方法。對于大型的項目,規(guī)范化是必須遵循的設計思想。28數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計1.3.2數(shù)據(jù)庫設計步驟

按照規(guī)范化的設計方法,數(shù)據(jù)庫設計步驟分為六個階段,這個過程也叫數(shù)據(jù)庫的生命周期。

需求分析:這個階段的工作是要充分調查研究,了解用戶需求概念結構設計:概念結構是整個系統(tǒng)的信息結構。它是現(xiàn)實世界的真實反映,包括實體與實體之間的關系。邏輯結構設計:這個階段的任務是將概念結構轉換成與所選用的DBMS所支持的數(shù)據(jù)模型相符合的過程。物理結構設計:這個階段的任務是為一個給定的邏輯數(shù)據(jù)模型選取一個合適的物理結構,并對物理結構進行評價。

29數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計物理結構設計:這個階段的任務是為一個給定的邏輯數(shù)據(jù)模型選取一個合適的物理結構,并對物理結構進行評價。編碼測試:進入這個階段后,就要按照邏輯設計和物理設計的結果利用DBMS的數(shù)據(jù)定義語言把數(shù)據(jù)庫描述出來個階段運行維護:試運行的主要工作是檢查應用程序的功能,測量系統(tǒng)的性能指標,在物理設計階段所做的評估是否正確,此時可以得到檢驗。30數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計1.3.3數(shù)據(jù)庫設計規(guī)范范式的概念

:規(guī)范化是數(shù)據(jù)庫設計中的一個重要過程,可以通過它來剔除數(shù)據(jù)庫中冗余的數(shù)據(jù)。EF–Codd在1971年提出規(guī)范化理論,他和后來的研究人員為數(shù)據(jù)庫結構定義了五種規(guī)范化模式,簡稱范式。規(guī)范化的優(yōu)點:

◆大大減少了數(shù)據(jù)冗余◆改進了數(shù)據(jù)庫整體組織◆增強了數(shù)據(jù)的一致性◆增加了數(shù)據(jù)庫設計的靈活性31數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計

第一范式

第一范式規(guī)定表的每個列的值都是不可分的簡單數(shù)據(jù)項。在任何一個數(shù)據(jù)庫中,第一范式都是一個最基本的要求。32數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計第二范式

第二范式有兩項要求:(1)所有表必須符合第一范式;(2)表中每一個非主鍵列都必須完全函數(shù)依賴于主鍵(關鍵字)。表的不完全函數(shù)依賴關系將導致很多問題的發(fā)生?!魯?shù)據(jù)冗余:如果外語系有700個學生,就得重復700次相同系名?!舾庐惓#喝绻巴庹Z系”升格成了“外語學院”,那么所有原外語系學生的元組都要

◆更新,很難保證修改不出錯誤。◆插入異常:如果增加了一個新系,但該系還沒有學生,那么這個系將不能入數(shù)據(jù)庫。33數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計第三范式第三范式有兩項要求:(1)所有表必須符合第二范式。(2)表中每一個非主鍵列對主鍵都不存在傳遞依賴,而應是直接依賴。傳遞依賴的存在與違背第二范式一樣,也將會導致添加、刪除、更新、冗余等問題。表中出現(xiàn)上述問題的原因是對主鍵依賴的傳遞。解決的方法同樣是在遵守無損分解的條件下,將表分解成多個表,從而消除傳遞依賴的情況。34數(shù)據(jù)庫基本概念1.3關系數(shù)據(jù)庫設計第四范式第四范式禁止了主鍵列和非主鍵列之間的一對多關系。在表中,一個學生可以有多種喜歡的運動,也可以有多類喜歡的圖書。這樣在同一表中具有這樣兩個不相關的列,與主鍵存在多對一關系,使得表中存在冗余現(xiàn)象和不對稱情況,因為不知道每個人的喜好情況,也就無法知道哪列的值多,哪列的值少,使得表格中出現(xiàn)了很多不規(guī)則的空白。解決的方法同樣是在遵守無損分解的條件下,將表分解成多個表,從而消除傳遞依賴的情況。

35數(shù)據(jù)庫基本概念目錄ContentsSuccessWords36任務實踐——數(shù)據(jù)庫的安裝與使用MySQL是一個關系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前屬于Oracle旗下公司。MySQL最流行的關系型數(shù)據(jù)庫管理系統(tǒng),在WEB應用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關系數(shù)據(jù)庫管理系統(tǒng))應用軟件之一。體積小、速度快、成本低、開放源代碼等特點。37數(shù)據(jù)庫的安裝與使用在MySQL官網(wǎng)下載社區(qū)版mysql-installer-community-,此版本為免費的。38數(shù)據(jù)庫的安裝與使用(1)選擇接受許可條款“Iacceptthelicenseterms”39數(shù)據(jù)庫的安裝與使用(2)如果只想安裝MySQL服務,選擇“Serveronly”,建議選擇Serveronly”,點擊“Next”40數(shù)據(jù)庫的安裝與使用(3)點擊“Execute”,執(zhí)行安裝41數(shù)據(jù)庫基本概念(4)安裝完成點擊下一步42數(shù)據(jù)庫的安裝與使用43數(shù)據(jù)庫基本概念(5)進行服務配置,MySQL默認端口為330644數(shù)據(jù)庫的安裝與使用(6)為root用戶設置密碼??商砑右粋€具有普通用戶權限的MySQL用戶賬戶,也可不添加,一般不添加用戶,而是用root賬戶。45數(shù)據(jù)庫基本概念以系統(tǒng)用戶運行windows服務,在Windows下MySQL服務名為:mysql56,后面步驟將講到mysql56的用處。而且要牢牢記住此名字。46數(shù)據(jù)庫的安裝與使用(8)請求服務配置47數(shù)據(jù)庫基本概念48數(shù)據(jù)庫的安裝與使用產(chǎn)品配置信息,安裝MySQLServer5.6.31完成。49數(shù)據(jù)庫基本概念50數(shù)據(jù)庫的安裝與使用前面步驟完成后安裝好MySQL,為MySQL配置環(huán)境變量。MySQL默認安裝在C:\ProgramFiles下。1)新建MYSQL_HOME變量,并配置:C:\ProgramFiles\MySQL\MySQLServer5.6MYSQL_HOME:C:\ProgramFiles\MySQL\MySQLServer5.62)編輯path系統(tǒng)變量,將%MYSQL_HOME%\bin添加到path變量后。配置path環(huán)境變量,也可不新建MYSQL_HOME變量,而是直接將MySQL安裝目錄下的bin配置到path變量下,即:C:\ProgramFiles\MySQL\MySQLServer5.6\binPath:%MYSQL_HOME%\bin或Path:C:\ProgramFiles\MySQL\MySQLServer5.6\bin51數(shù)據(jù)庫的安裝與使用52數(shù)據(jù)庫的安裝與使用以管理員權限運行命令提示符,用netstartmysql56啟動MySQL服務。用netstopmysql56關閉MySQL服務。其中mysql56為Windows下MySQL的服務名。53數(shù)據(jù)庫的安裝與使用54數(shù)據(jù)庫的安裝與使用從官網(wǎng)上下載mysql-5.6.31-winx64.zip,將其解壓,接下來的安裝是通過命令來安裝MySQL數(shù)據(jù)庫的。(1)mysql-5.6.31-winx64.zip解壓到E:\JavaWebDeveloper\文件下,打開命令提示符以管理員身份運行,cd到E:\JavaWebDeveloper\mysql-5.6.31-winx64\bin下命令為:cd

/d

E:\JavaWebDeveloper\mysql-5.6.31-winx64\bin55數(shù)據(jù)庫的安裝與使用56數(shù)據(jù)庫的安裝與使用(2)安裝MySQL

mysqld

install,運行命令后MySQL安裝成功。57數(shù)據(jù)庫的安裝與使用netstartmysql將啟動MySQL服務。值得注意的是用命令安裝的MySQL在Windows系統(tǒng)下默認服務名為mysql,默認密碼為空。58數(shù)據(jù)庫的安裝與使用59數(shù)據(jù)庫的安裝與使用1)新建MYSQL_HOME變量,并配置值為:E:\JavaWebDeveloper\mysql-5.6.31-winx64MYSQL_HOME:E:\JavaWebDeveloper\mysql-5.6.31-winx642)編輯path系統(tǒng)變量,將%MYSQL_HOME%\bin添加到path變量后。配置path環(huán)境變量,也可不新建MYSQL_HOME變量,而是直接將MySQL安裝目錄下的bin配置到path變量下,Path:%MYSQL_HOME%\bin60數(shù)據(jù)庫的安裝與使用61數(shù)據(jù)庫的安裝與使用mysql-uroot-p,密碼默認為空。顯示“mysql>”表示進入MySQL,可用T-SQL語句對數(shù)據(jù)庫執(zhí)行各種操作。也可用數(shù)據(jù)庫圖形化管理工具對數(shù)據(jù)庫進行管理62數(shù)據(jù)庫的安裝與使用63數(shù)據(jù)庫的安裝與使用1.MySQLWorkbench這屬于mysql官方出品,免費下載地址:/products/workbench/2.HeidiSQL免費,功能強大下載地址:/dbforge/mysql/studio/3.NavicatforMySQL收費,功能強大下載地址:百度搜索下載64MySQL客戶端工具的安裝與使用目錄ContentsSuccessWords65任務實踐——數(shù)據(jù)基本操作創(chuàng)建數(shù)據(jù)庫CREATEDATABASE[IFNOTEXISTS]db_name

[create_specification[,create_specification]...]

create_specification:

[DEFAULT]CHARACTERSETcharset_name

|[DEFAULT]COLLATEcollation_name

CHARACTERSET:指定數(shù)據(jù)庫采用的字符集COLLATE:指定數(shù)據(jù)庫字符集的比較方式練習:創(chuàng)建一個名稱為mydb1的數(shù)據(jù)庫。創(chuàng)建一個使用utf-8字符集的mydb2數(shù)據(jù)庫。創(chuàng)建一個使用utf-8字符集,并帶校對規(guī)則的mydb3數(shù)據(jù)庫。66數(shù)據(jù)庫的安裝與使用查看、刪除數(shù)據(jù)庫顯示數(shù)據(jù)庫語句:SHOWDATABASES顯示數(shù)據(jù)庫創(chuàng)建語句:SHOWCREATEDATABASEdb_name

數(shù)據(jù)庫刪除語句:DROPDATABASE[IFEXISTS]db_name

練習:查看當前數(shù)據(jù)庫服務器中的所有數(shù)據(jù)庫查看前面創(chuàng)建的mydb2數(shù)據(jù)庫的定義信息刪除前面創(chuàng)建的mydb1數(shù)據(jù)庫67數(shù)據(jù)庫的安裝與使用修改、備份、恢復數(shù)據(jù)庫ALTERDATABASE[IFNOTEXISTS]db_name

[alter_specification[,alter_specification]...]

alter_specification:

[DEFAULT]CHARACTERSETcharset_name

|[DEFAULT]COLLATEcollation_name備份數(shù)據(jù)庫表中的數(shù)據(jù)

mysqldump-u用戶名-p數(shù)據(jù)庫名>文件名.sql恢復數(shù)據(jù)庫

Source文件名.sql練習查看服務器中的數(shù)據(jù)庫,并把其中某一個庫的字符集修改為utf8;

備份test庫中的數(shù)據(jù),并恢復68數(shù)據(jù)庫的安裝與使用創(chuàng)建表(基本語句)CREATETABLEtable_name( field1datatype, field2datatype, field3datatype,)characterset字符集collate校對規(guī)則field:指定列名datatype:指定列類型注意:創(chuàng)建表時,要根據(jù)需保存的數(shù)據(jù)創(chuàng)建相應的列,并根據(jù)數(shù)據(jù)的類型定義相應的列類型。例:user對象

idint namestring passwordstring birthdaydateIdNamePasswordbirthday注意:創(chuàng)建表前,要先使用usedb語句使用庫。69數(shù)據(jù)庫的安裝與使用MySQL常用數(shù)據(jù)類型VARCHAR、BLOB和TEXT類是變長類型。每個類型的存儲需求取決于列值的實際長度。

分類數(shù)據(jù)類型說明數(shù)值類型BIT(M)TINYINT[UNSIGNED][ZEROFILL]BOOL,BOOLEANSMALLINT[UNSIGNED][ZEROFILL]INT[UNSIGNED][ZEROFILL]BIGINT[UNSIGNED][ZEROFILL]FLOAT[(M,D)][UNSIGNED][ZEROFILL]DOUBLE[(M,D)][UNSIGNED][ZEROFILL]位類型。M指定位數(shù),默認值1,范圍1-64帶符號的范圍是-128到127。無符號0到255。使用0或1表示真或假2的16次方2的32次方2的64次方M指定顯示長度,d指定小數(shù)位數(shù)表示比float精度更大的小數(shù)文本、二進制類型CHAR(size)char(20)VARCHAR(size)varchar(20)BLOBLONGBLOBTEXT(clob)LONGTEXT(longclob)固定長度字符串可變長度字符串二進制數(shù)據(jù)大文本時間日期DATE/DATETIME/TimeStamp日期類型(YYYY-MM-DD)(YYYY-MM-DDHH:MM:SS),TimeStamp表示時間戳,它可用于自動記錄insert、update操作的時間70數(shù)據(jù)庫的安裝與使用創(chuàng)建表練習創(chuàng)建一個員工表字段屬性Id整形name字符型sex字符型或bit型brithday日期型Entry_date日期型job字符型Salary小數(shù)型resume大文本型71數(shù)據(jù)庫的安裝與使用修改表使用ALTERTABLE語句追加,修改,或刪除列的語法.ALTERTABLEtableADD

(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableMODIFY

(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableDROP

(column);修改表的名稱:Renametable

表名

to

新表名修改表的字符集:altertablestudentcharactersetutf8;72數(shù)據(jù)庫的安裝與使用數(shù)據(jù)庫CRUD語句Insert語句(增加數(shù)據(jù))Update語句(更新數(shù)據(jù))Delete語句(刪除數(shù)據(jù))Select語句(查找數(shù)據(jù))73數(shù)據(jù)庫的安裝與使用Insert語句INSERTINTO table[(column[,column...])]VALUES (value[,value...]);使用INSERT語句向表中插入數(shù)據(jù)。插入的數(shù)據(jù)應與字段的數(shù)據(jù)類型相同。數(shù)據(jù)的大小應在列的規(guī)定范圍內(nèi),例如:不能將一個長度為80的字符串加入到長度為40的列中。在values中列出的數(shù)據(jù)位置必須與被加入的列的排列位置相對應。字符和日期型數(shù)據(jù)應包含在單引號中。插入空值,不指定或insertintotablevalue(null)74數(shù)據(jù)庫的安裝與使用Insert語句練習練習:使用insert語句向表中插入三個員工的信息。字段名字段類型id整形name字符串型sex字符或整數(shù)類型birthday日期型salary浮點型entry_date日期型resume大文本型注意:字符和日期要包含在單引號中。showvariableslike'character%';setcharacter_set_results=gbk;75數(shù)據(jù)庫的安裝與使用Update語句UPDATE tbl_name

SETcol_name1=expr1[,col_name2=expr2...]

[WHEREwhere_definition]

使用update語句修改表中數(shù)據(jù)。UPDATE語法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要給予哪些值。WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行。76數(shù)據(jù)庫的安裝與使用Update語句練習練習:在上面創(chuàng)建的employee表中修改表中的紀錄。要求將所有員工薪水修改為5000元。將姓名為’zs’的員工薪水修改為3000元。將姓名為’aaa’的員工薪水修改為4000元,job改為ccc。將wu的薪水在原有基礎上增加1000元。 77數(shù)據(jù)庫的安裝與使用Delete語句deletefromtbl_name

[WHEREwhere_definition]

使用delete語句刪除表中數(shù)據(jù)。如果不使用where子句,將刪除表中所有數(shù)據(jù)。Delete語句不能刪除某一列的值(可使用update)使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用droptable語句。同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改數(shù)據(jù)庫數(shù)據(jù)時,頭腦中應該始終不要忘記這個潛在的問題。刪除表中數(shù)據(jù)也可使用TRUNCATETABLE語句,它和delete有所不同,參看mysql文檔。78數(shù)據(jù)庫的安裝與使用Delete語句練習刪除表中名稱為’zs’的記錄。刪除表中所有記錄。使用truncate刪除表中記錄。79數(shù)據(jù)庫的安裝與使用Select語句SELECT[DISTINCT]*|{column1,column2.column3..} FROM table;Select指定查詢哪些列的數(shù)據(jù)。column指定列名。*號代表查詢所有列。From指定查詢哪張表。DISTINCT可選,指顯示結果時,是否剔除重復數(shù)據(jù)基本select語句80數(shù)據(jù)庫的安裝與使用Select語句SELECT*|{column1|expression,column2|expression,..} FROM table;在select語句中可使用表達式對查詢的列進行運算在select語句中可使用as語句SELECTcolumnas別名from表名;Select語句在where子句中經(jīng)常使用的運算符比較運算符><<=>==<>大于、小于、大于(小于)等于、不等于BETWEEN...AND...顯示在某一區(qū)間的值IN(set)顯示在in列表中的值,例:in(100,200)LIKE‘張pattern’模糊查詢ISNULL判斷是否為空邏輯運算符and多個條件同時成立or多個條件任一成立not不成立,例:wherenot(salary>100);Like語句中,%代表零個或多個任意字符,_代表一個字符,例first_namelike‘_a%’;82數(shù)據(jù)庫的安裝與使用Select語句(4)查詢英語分數(shù)在80-90之間的同學。查詢數(shù)學分數(shù)為89,90,91的同學。查詢所有姓李的學生成績。查詢數(shù)學分>80,語文分>80的同學。83數(shù)據(jù)庫的安裝與使用Select語句SELECT

column1,column2.column3.. FROM table; orderbycolumnasc|descOrderby指定排序的列,排序的列即可是表中的列名,也可以是select語句后指定的列名。Asc升序、Desc降序ORDERBY子句應位于SELECT語句的結尾。練習:對數(shù)學成績排序后輸出。對總分排序后輸出,然后再按從高到低的順序輸出對姓李的學生成績排序輸出使用orderby子句排序查詢結果。84數(shù)據(jù)庫的安裝與使用合計函數(shù)-countSelectcount(*)|count(列名)fromtablename [WHEREwhere_definition]

練習:統(tǒng)計一個班級共有多少學生?統(tǒng)計數(shù)學成績大于90的學生有多少個?統(tǒng)計總分大于250的人數(shù)有多少?Count(列名)返回某一列,行的總數(shù)85數(shù)據(jù)庫的安裝與使用合計函數(shù)-SUMSelectsum(列名){,sum(列名)…}fromtablename [WHEREwhere_definition]

練習:統(tǒng)計一個班級數(shù)學總成績?統(tǒng)計一個班級語文、英語、數(shù)學各科的總成績統(tǒng)計一個班級語文、英語、數(shù)學的成績總和統(tǒng)計一個班級語文成績平均分注意:sum僅對數(shù)值起作用,否則會報錯。注意:對多列求和,“,”號不能少。Sum函數(shù)返回滿足where條件的行的和86數(shù)據(jù)庫的安裝與使用合計函數(shù)-AVGSelectsum(列名){,sum(列名)…}fromtablename [WHEREwhere_definition]

練習:求一個班級數(shù)學平均分?求一個班級總分平均分AVG函數(shù)返回滿足where條件的一列的平均值87數(shù)據(jù)庫的安裝與使用合計函數(shù)-MAX/MINSelectmax(列名)

fromtablename [WHEREwhere_definition]

練習:求班級最高分和最低分(數(shù)值范圍在統(tǒng)計中特別有用)Max/min函數(shù)返回滿足where條件的一列的最大/最小值88數(shù)據(jù)庫的安裝與使用Select語句SELECT

column1,column2.column3..FROM table; groupbycolumn練習:對訂單表中商品歸類后,顯示每一類商品的總價使用groupby子句對列進行分組SELECT

column1,column2.column3.. FROM table; groupbycolumnhaving...使用having子句過濾練習:查詢購買了幾類商品,并且每類總價大于100的商品Having和where均可實現(xiàn)過濾,但在having可以使用合計函數(shù),having通常跟在groupby后,它作用于組。89數(shù)據(jù)庫的安裝與使用時間日期相關函數(shù)A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論