- MySQL數(shù)據(jù)庫應(yīng)用與管理
- 魯大林主編
- 1904字
- 2020-10-23 14:15:41
1.1 關(guān)系數(shù)據(jù)庫基礎(chǔ)
如果需要快速、安全地處理大量數(shù)據(jù),就必須使用數(shù)據(jù)庫管理系統(tǒng)。任何基于數(shù)據(jù)庫編程的程序,其業(yè)務(wù)邏輯實質(zhì)上都是對數(shù)據(jù)的處理操作。數(shù)據(jù)庫管理系統(tǒng)也是一種軟件,主要負(fù)責(zé)存儲和管理網(wǎng)站所需的內(nèi)容數(shù)據(jù),例如文字、圖片等。
1.1.1 數(shù)據(jù)庫的基本概念
1)數(shù)據(jù)庫(DB):存放數(shù)據(jù)的倉庫。相互關(guān)聯(lián)的數(shù)據(jù)集合。
2)數(shù)據(jù)庫管理系統(tǒng)(DBMS):管理數(shù)據(jù)庫的計算機軟件。具體完成以下功能。
● 定義數(shù)據(jù)的存儲結(jié)構(gòu)。
● 存儲和維護(hù)數(shù)據(jù)(增加/刪除/修改/查詢)。
● 維護(hù)數(shù)據(jù)庫的安全性、完整性、可靠性。
3)數(shù)據(jù)庫系統(tǒng)(DBS):數(shù)據(jù)庫管理系統(tǒng)+數(shù)據(jù)庫+應(yīng)用程序+用戶(DBA、應(yīng)用程序員、終端用戶),如圖1-1所示。

圖1-1 數(shù)據(jù)庫系統(tǒng)DBS
1.1.2 數(shù)據(jù)管理的發(fā)展歷史
1.人工管理階段
20世紀(jì)50年代中期以前,計算機主要用于科學(xué)計算,無磁盤、無數(shù)據(jù)管理。
此階段的特點是:數(shù)據(jù)不長期保存;系統(tǒng)中沒有對數(shù)據(jù)進(jìn)行管理的軟件,由應(yīng)用程序管理數(shù)據(jù),數(shù)據(jù)是面向程序的,數(shù)據(jù)不具有獨立性;數(shù)據(jù)不能共享。
2.文件管理階段
20世紀(jì)50年代后期到60年代中期,計算機主要用于數(shù)據(jù)處理初期,產(chǎn)生外存——磁盤,操作系統(tǒng)對數(shù)據(jù)以文件形式管理。
此階段的特點是:程序與數(shù)據(jù)有了一定的獨立性,程序和數(shù)據(jù)分開存儲,有了程序文件和數(shù)據(jù)文件的區(qū)別;數(shù)據(jù)文件可以長期保存;但數(shù)據(jù)冗余度大,缺乏數(shù)據(jù)獨立性。
3.?dāng)?shù)據(jù)庫系統(tǒng)階段
20世紀(jì)60年代后期以來,計算機主要用于大量數(shù)據(jù)處理。
此階段的特點是:數(shù)據(jù)庫技術(shù)能有效地管理和存取大量的數(shù)據(jù),避免了以上兩階段的缺點,實現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余;采用特定的數(shù)據(jù)模型;具有較高的數(shù)據(jù)獨立性;有統(tǒng)一的數(shù)據(jù)管理和控制功能。
數(shù)據(jù)庫系統(tǒng)又經(jīng)歷了三個階段:層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫基于數(shù)學(xué)上嚴(yán)格的關(guān)系理論,使用簡單,是目前最成熟的數(shù)據(jù)庫。
常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)有下面幾種。
● 桌面型關(guān)系數(shù)據(jù)庫:FoxBase、Visual FoxPro、Access等。
● 大型關(guān)系數(shù)據(jù)庫:Oracle、SQL Server、MySQL、DB2、Sybase ASE等。
1.1.3 關(guān)系數(shù)據(jù)庫的介紹
關(guān)系數(shù)據(jù)庫是一些相關(guān)的表和其他數(shù)據(jù)庫對象的集合。其包含以下三層含義。
1)關(guān)系數(shù)據(jù)庫中,保存數(shù)據(jù)的二維表格稱為表(TABLE)。一個關(guān)系型數(shù)據(jù)庫包含多個數(shù)據(jù)表,每個表又包含行(記錄、元組)、列(字段、屬性),如圖1-2所示。

圖1-2 表的結(jié)構(gòu)
2)表與表之間相互關(guān)聯(lián)。表與表通過公共字段建立關(guān)聯(lián),公共字段稱為“鍵”。“鍵”分為主鍵和外鍵。
● 主鍵:唯一確定表中記錄的列或者列組合。主鍵值必須唯一且不為空。例如,教師表的“教師編號”、部門表的“部門編號”。
● 外鍵:表中的列是另外一個表的主鍵,此列就是外鍵。例如,部門表的“部門編號”是主鍵,教師表的“部門編號”是外鍵,如圖1-3所示。

圖1-3 表與表的關(guān)系
表與表之間的關(guān)系分為以下三種類型。
● 一對一關(guān)系(1:1):A表中的一條記錄在B表中僅有一條記錄與之對應(yīng);反之,B表中的一條記錄在A表中也僅有一條記錄與之對應(yīng)。例如,教師表與某月教師工資表之間具有一對一關(guān)系。
● 一對多關(guān)系(1:n):A表中的一條記錄在B表中有多條記錄與之對應(yīng);反之,B表中的一條記錄在A表中僅有一條記錄與之對應(yīng)。例如,部門表A與教師表B之間具有一對多關(guān)系。
● 多對多關(guān)系(m:n):A表中的一條記錄在B表中有多條記錄與之對應(yīng);反之,B表中的一條記錄在A表中也有多條記錄與之對應(yīng)。例如,學(xué)生表與課程表之間具有多對多關(guān)系。
數(shù)據(jù)庫設(shè)計中通過增加一個表將一個多對多的關(guān)系轉(zhuǎn)化為兩個一對多的關(guān)系,例如學(xué)生表、課程表、成績表,如圖1-4所示。

圖1-4 學(xué)生成績關(guān)系圖
3)關(guān)系數(shù)據(jù)庫除了包含表,還包含其他數(shù)據(jù)庫對象(索引、視圖、存儲過程、觸發(fā)器、用戶等)。
1.1.4 關(guān)系數(shù)據(jù)庫的設(shè)計
1.設(shè)計步驟
1)需求分析:調(diào)研需求分析(信息需求、處理需求、安全性需求、完整性需求),確定需要處理的數(shù)據(jù)對象。
2)概念結(jié)構(gòu)設(shè)計:在需求分析基礎(chǔ)上,獲得實體關(guān)系模型,繪制E-R圖。
3)數(shù)據(jù)庫邏輯設(shè)計:依據(jù)E-R圖,設(shè)計表格(確定表的列)。
4)數(shù)據(jù)庫物理設(shè)計:使用數(shù)據(jù)庫命令具體實現(xiàn)邏輯設(shè)計確定好的表格和其他數(shù)據(jù)庫對象。
5)數(shù)據(jù)庫性能優(yōu)化:改進(jìn)讀寫性能。
2.實體-關(guān)系模型(E-R圖)
1)實體:用矩形表示。矩形內(nèi)部填寫實體名。
2)屬性:用橢圓形表示。內(nèi)部填寫屬性名,并用無向邊與實體連接。
3)關(guān)系:用菱形表示。內(nèi)部填寫關(guān)系名,并用無向邊與實體連接,無向邊上標(biāo)注關(guān)系的類型(1:1、1:n、m:n)。
學(xué)生選課數(shù)據(jù)庫E-R圖如圖1-5所示。

圖1-5 學(xué)生選課數(shù)據(jù)庫E-R圖
說明:實體具有屬性,關(guān)系也可以具有屬性。為了簡潔,可以省略部分屬性的標(biāo)注。
3.設(shè)計原則
1)一個表描述一種實體或者實體間的關(guān)系。
2)避免表之間出現(xiàn)重復(fù)字段。
3)字段應(yīng)該是原始數(shù)據(jù)或者基本數(shù)據(jù)元素。
4)表中應(yīng)該有主鍵來唯一標(biāo)識表中的記錄。
5)用外鍵保證表之間的關(guān)系。
- Greenplum:從大數(shù)據(jù)戰(zhàn)略到實現(xiàn)
- Python數(shù)據(jù)分析、挖掘與可視化從入門到精通
- 數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用教程(第4版)
- Hadoop大數(shù)據(jù)實戰(zhàn)權(quán)威指南(第2版)
- 城市計算
- Spark大數(shù)據(jù)編程實用教程
- 金融商業(yè)算法建模:基于Python和SAS
- 云原生數(shù)據(jù)中臺:架構(gòu)、方法論與實踐
- Hands-On System Programming with C++
- MySQL數(shù)據(jù)庫實用教程
- 領(lǐng)域驅(qū)動設(shè)計精粹
- Discovering Business Intelligence Using MicroStrategy 9
- TypeScript Microservices
- Swift 2 By Example
- 元宇宙基石:Web3.0與分布式存儲