MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程_第5頁(yè)
已閱讀5頁(yè),還剩201頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)閱讀全文

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

普通高等學(xué)校計(jì)算機(jī)教育“十四五”規(guī)劃教材

MySQL數(shù)據(jù)庫(kù)原理

及實(shí)踐教程

????????喬鋼柱◎主?編

張曉華?井?超?李曉波◎副主編

WQ.indd12022/8/1617:18:27

內(nèi)容簡(jiǎn)介

本書以零基礎(chǔ)講解為宗旨,用實(shí)例引導(dǎo)讀者學(xué)習(xí),深入淺出地介紹了MySQL數(shù)據(jù)庫(kù)的相關(guān)

知識(shí)和實(shí)戰(zhàn)技能,內(nèi)容詳盡,實(shí)例豐富。

全書共分為8章,包括數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)、數(shù)據(jù)庫(kù)的基本操作、數(shù)據(jù)表的基本操作、數(shù)據(jù)類型

和運(yùn)算符、視圖和觸發(fā)器、事務(wù)管理、MySQL連接器JDBC和連接池、常見函數(shù)和數(shù)據(jù)管理。

每章節(jié)后包含了與本書內(nèi)容全程同步的綜合案例教學(xué),并配有微視頻詳細(xì)講解。

本書適合作為高等院校學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)課程的教學(xué)用書,也可作為編程初學(xué)者學(xué)習(xí)

MySQL數(shù)據(jù)庫(kù)的參考書,對(duì)于希望系統(tǒng)學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)的人員也具有參考價(jià)值。

圖書在版編目(CIP)數(shù)據(jù)

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程/喬鋼柱主編.—北京:

中國(guó)鐵道出版社有限公司,2022.8

普通高等學(xué)校計(jì)算機(jī)教育“十四五”規(guī)劃教材

ISBN978-7-113-29071-9

Ⅰ.①M(fèi)…Ⅱ.①喬…Ⅲ.①關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)-高等學(xué)校-

教材Ⅳ.①TP311.132.3

中國(guó)版本圖書館CIP數(shù)據(jù)核字(2022)第063147號(hào)

書名:MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

作者:?jiǎn)啼撝?/p>

策劃:王春霞編輯部電話:(010)51873035

責(zé)任編輯:王春霞?王占清

封面設(shè)計(jì):劉?穎

責(zé)任校對(duì):安海燕

責(zé)任印制:樊啟鵬

出版發(fā)行:中國(guó)鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號(hào))

網(wǎng)址:/51eds/

印刷:三河市宏盛印務(wù)有限公司

版次:2022年8月第1版?2022年8月第1次印刷

開本:850?mm×1?168?mm1/16?印張:12.75?字?jǐn)?shù):326千

書號(hào):ISBN978-7-113-29071-9

定價(jià):39.00元

版權(quán)所有侵權(quán)必究

凡購(gòu)買鐵道版圖書,如有印制質(zhì)量問題,請(qǐng)與本社教材圖書營(yíng)銷部聯(lián)系調(diào)換。電話:(010)63550836

打擊盜版舉報(bào)電話:(010)63549461

WQ.indd22022/8/1617:18:27

前言

MySQL是由瑞典MySQLAB公司開發(fā)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),其特點(diǎn)為體積小、

速度快且完全免費(fèi)開源,因而被中小公司和程序員推崇。2008年1月,MySQLAB公司被

Sun公司收購(gòu),后來Sun公司又被Oracle公司收購(gòu),所以,目前MySQL在Oracle旗下。經(jīng)

歷多次公司的兼并和重組,同時(shí)被Oracle公司升級(jí)開發(fā),因而MySQL的功能也越來越強(qiáng)大,

同時(shí)仍舊保持其最初優(yōu)點(diǎn),因而應(yīng)用依然非常廣泛。

本書以目前比較流行的MySQL5.5版本為平臺(tái),結(jié)合當(dāng)前數(shù)據(jù)庫(kù)教學(xué)和應(yīng)用開發(fā)實(shí)踐,

對(duì)全書進(jìn)行了設(shè)計(jì)編寫。MySQL的主要功能包括創(chuàng)建數(shù)據(jù)庫(kù)和表及表記錄操作、數(shù)據(jù)類型

和運(yùn)算符、數(shù)據(jù)庫(kù)的視圖和觸發(fā)器、數(shù)據(jù)庫(kù)事務(wù)、常見函數(shù)和數(shù)據(jù)管理等。MySQL命令分

層縮進(jìn),實(shí)例前后形成系統(tǒng),運(yùn)行結(jié)果直觀清晰。

本書融合數(shù)據(jù)基礎(chǔ)和MySQL實(shí)現(xiàn)于一體,系統(tǒng)性、應(yīng)用性強(qiáng),注重實(shí)踐,并且從方便

教和學(xué)兩個(gè)角度組織內(nèi)容、調(diào)試實(shí)例和安排綜合應(yīng)用。

使用本書時(shí),建議初學(xué)者按照章節(jié)順序從頭至尾完成閱讀學(xué)習(xí),同時(shí)也應(yīng)進(jìn)行一定的

實(shí)操練習(xí)。本書也可作為有一定基礎(chǔ)的讀者案頭的參考書,針對(duì)相應(yīng)技術(shù)、配置方式等查

閱使用。

全書共分為8章,系統(tǒng)全面地以MySQL為實(shí)現(xiàn)平臺(tái)介紹了數(shù)據(jù)庫(kù)系統(tǒng)的原理及實(shí)現(xiàn)。

第1章主要對(duì)和數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)的部分概念作簡(jiǎn)單介紹。第2章開篇概述了MySQL的產(chǎn)生

和發(fā)展過程,并介紹了MySQL的組成部分及優(yōu)勢(shì),MySQL的安裝與配置、啟動(dòng)、暫停和退出、

MySQL管理工具的使用和實(shí)用程序以及數(shù)據(jù)庫(kù)的基本操作等。第3章對(duì)數(shù)據(jù)表的各種操作

進(jìn)行了介紹,講解了約束條件、默認(rèn)規(guī)則;在檢索記錄表方面從介紹SELECT基本查詢開始,

逐步深入一些復(fù)雜的內(nèi)容。第4章開篇先介紹了MySQL的幾種基本數(shù)據(jù)類型,本章最后的

綜合案例也提供了完整代碼,并附帶詳細(xì)注解供讀者參考。第5章對(duì)視圖和觸發(fā)器的相關(guān)

概念進(jìn)行了論述。第6章對(duì)事務(wù)機(jī)制、事務(wù)的提交及事務(wù)的回滾和事務(wù)的特征與隔離進(jìn)行

了介紹,讀者通過實(shí)例可以體會(huì)事務(wù)管理的相關(guān)方法。第7章介紹了MySQL連接器的相關(guān)

概念,綜合案例中的學(xué)生選課系統(tǒng)也提供了完整代碼供讀者練習(xí)體會(huì)MySQL連接JDBC的

方法。第8章介紹了MySQL中的一些常見函數(shù)的功能和用法,主要講解了MySQL的備份

和恢復(fù)以及它們的語(yǔ)法格式和相關(guān)說明,最后介紹了用戶管理。

WQ.indd12022/8/1617:18:27

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

在本書編寫過程中,喬鋼柱負(fù)責(zé)撰寫第1章,李曉波負(fù)責(zé)撰寫第2章,張曉華負(fù)責(zé)撰寫第3、

4、5、6章,井超撰寫第7、8章,最后全書由喬鋼柱負(fù)責(zé)統(tǒng)稿,并任主編。

特別感謝中北大學(xué)曾建潮教授對(duì)本書的指導(dǎo),中北大學(xué)大數(shù)據(jù)學(xué)院數(shù)據(jù)科學(xué)與大數(shù)據(jù)

技術(shù)專業(yè)2017級(jí)本科生張苗苗同學(xué)為本書提供的協(xié)助。在此,也衷心感謝中國(guó)鐵道出版社

有限公司的編輯為本書順利出版所付出的努力。

編者

2022年2月

于中北大學(xué)怡丁苑

II

WQ.indd22022/8/1617:18:28

目錄

第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)???????????????????????????????????????????????????????????????????????????????1

1.1數(shù)據(jù)庫(kù)系統(tǒng)1

1.1.1數(shù)據(jù)、信息、數(shù)據(jù)庫(kù)2

1.1.2數(shù)據(jù)庫(kù)管理系統(tǒng)2

1.1.3數(shù)據(jù)庫(kù)管理系統(tǒng)的分類3

1.2數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)3

1.2.1數(shù)據(jù)庫(kù)系統(tǒng)模式的概念3

1.2.2數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)3

1.2.3數(shù)據(jù)庫(kù)的二級(jí)映像功能與數(shù)據(jù)獨(dú)立性5

1.2.4數(shù)據(jù)庫(kù)系統(tǒng)用戶結(jié)構(gòu)5

1.3關(guān)系數(shù)據(jù)庫(kù)7

1.3.1關(guān)系數(shù)據(jù)庫(kù)概述7

1.3.2關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)7

1.3.3關(guān)系數(shù)據(jù)庫(kù)的完整性13

1.4結(jié)構(gòu)化查詢語(yǔ)言SQL15

1.4.1SQL概述15

1.4.2SQL語(yǔ)言特點(diǎn)及基本語(yǔ)法16

1.4.3SQL語(yǔ)句分類16

1.4.4SQL的四種基本操作16

1.5實(shí)體關(guān)系模型19

小結(jié)22

經(jīng)典習(xí)題22

第2章數(shù)據(jù)庫(kù)的基本操作??????????????????????????????????????????????????????????????????????????23

2.1MySQL的概述23

2.1.1MySQL的產(chǎn)生和發(fā)展23

2.1.2MySQL的組成24

WQ.indd12022/8/1617:18:28

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

2.1.3MySQL的優(yōu)勢(shì)25

2.2MySQL的安裝和管理25

2.2.1下載MySQL25

2.2.2啟動(dòng)、暫?;蛲顺鯩ySQL27

2.3MySQL工具和實(shí)用程序29

2.3.1MySQL命令行實(shí)用程序29

2.3.2實(shí)用程序常用的圖形化管理工具29

2.4數(shù)據(jù)庫(kù)的創(chuàng)建30

2.4.1數(shù)據(jù)庫(kù)的構(gòu)成30

2.4.2使用命令行窗口創(chuàng)建數(shù)據(jù)庫(kù)31

2.4.3使用圖形化工具創(chuàng)建數(shù)據(jù)庫(kù)31

2.5數(shù)據(jù)庫(kù)的查看和選擇32

2.6數(shù)據(jù)庫(kù)的刪除32

2.6.1使用命令行窗口刪除數(shù)據(jù)庫(kù)33

2.6.2使用圖形化工具刪除數(shù)據(jù)庫(kù)33

2.7綜合案例——數(shù)據(jù)庫(kù)的創(chuàng)建和刪除33

小結(jié)36

經(jīng)典習(xí)題36

第3章數(shù)據(jù)表的基本操作???????????????????????????????????????????????????????????????????????????37

3.1創(chuàng)建表37

3.1.1創(chuàng)建表的語(yǔ)法形式37

3.1.2使用SQL語(yǔ)句設(shè)置約束條件38

3.1.3使用圖形化工具創(chuàng)建表并設(shè)置約束條件41

3.2查看表結(jié)構(gòu)42

3.2.1使用SQL語(yǔ)句查看表結(jié)構(gòu)42

3.2.2使用圖形化工具查看表結(jié)構(gòu)42

3.3修改表43

3.3.1使用SQL語(yǔ)句修改數(shù)據(jù)表44

3.3.2使用圖形化工具修改數(shù)據(jù)表49

3.4刪除表50

3.4.1使用SQL語(yǔ)句刪除數(shù)據(jù)表50

3.4.2使用圖形化工具刪除數(shù)據(jù)表51

II

WQ.indd22022/8/1617:18:28

目錄

3.5檢索記錄表52

3.5.1SELECT基本查詢52

3.5.2條件查詢56

3.5.3分組查詢57

3.5.4表的連接59

3.5.5子查詢61

3.5.6聯(lián)合查詢63

3.6綜合案例——學(xué)生選課系統(tǒng)綜合查詢64

小結(jié)68

經(jīng)典習(xí)題68

第4章數(shù)據(jù)類型和運(yùn)算符??????????????????????????????????????????????????????????????????????????69

4.1MySQL基本數(shù)據(jù)類型69

4.1.1整數(shù)類型69

4.1.2小數(shù)類型72

4.1.3字符串類型74

4.1.4日期時(shí)間類型75

4.1.5復(fù)合數(shù)據(jù)類型78

4.1.6二進(jìn)制類型80

4.2MySQL運(yùn)算符80

4.2.1算術(shù)運(yùn)算符80

4.2.2比較運(yùn)算符81

4.2.3邏輯運(yùn)算符82

4.2.4位運(yùn)算符83

4.2.5運(yùn)算符優(yōu)先級(jí)84

4.3字符集設(shè)置85

4.3.1MySQL字符集與字符排序規(guī)則85

4.3.2MySQL字符集的設(shè)置86

4.4綜合案例——算術(shù)操作符87

小結(jié)96

經(jīng)典習(xí)題96

III

WQ.indd32022/8/1617:18:28

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

第5章視圖和觸發(fā)器?????????????????????????????????????????????????????????????????????????????????97

5.1視圖97

5.1.1視圖概述97

5.1.2創(chuàng)建視圖98

5.1.3查看視圖102

5.1.4管理視圖104

5.1.5使用視圖105

5.2觸發(fā)器108

5.2.1創(chuàng)建觸發(fā)器108

5.2.2使用觸發(fā)器109

5.2.3查看觸發(fā)器110

5.2.4刪除觸發(fā)器110

5.2.5觸發(fā)器的應(yīng)用111

5.3綜合案例——視圖及觸發(fā)器的應(yīng)用113

5.3.1系統(tǒng)主要功能113

5.3.2E-R圖113

5.3.3邏輯結(jié)構(gòu)115

5.3.4數(shù)據(jù)庫(kù)實(shí)施117

小結(jié)122

經(jīng)典習(xí)題122

第6章事務(wù)管理????????????????????????????????????????????????????????????????????????????????????123

6.1事務(wù)機(jī)制概述123

6.2事務(wù)的提交125

6.3事務(wù)的回滾127

6.4事務(wù)的特征和隔離129

6.4.1事務(wù)的四大特性129

6.4.2事務(wù)的隔離級(jí)別132

6.5解決多用戶使用問題132

6.5.1臟讀132

6.5.2不可重復(fù)讀134

6.5.3幻讀136

6.6綜合案例——銀行轉(zhuǎn)賬業(yè)務(wù)的事務(wù)處理137

IV

WQ.indd42022/8/1617:18:29

目錄

小結(jié)140

經(jīng)典習(xí)題140

第7章MySQL連接器JDBC和連接池????????????????????????????????????????????????????????141

7.1MySQL連接器141

7.2MySQL數(shù)據(jù)庫(kù)連接過程142

7.3JDBC對(duì)象數(shù)據(jù)庫(kù)操作145

7.3.1增加數(shù)據(jù)145

7.3.2修改數(shù)據(jù)145

7.3.3刪除數(shù)據(jù)145

7.3.4查詢數(shù)據(jù)146

7.3.5批處理146

7.4開源連接池146

7.5綜合案例——學(xué)生選課系統(tǒng)147

小結(jié)165

經(jīng)典習(xí)題166

第8章常見函數(shù)和數(shù)據(jù)管理?????????????????????????????????????????????????????????????????????167

8.1常見函數(shù)167

8.1.1數(shù)學(xué)函數(shù)167

8.1.2字符串函數(shù)172

8.1.3時(shí)間日期函數(shù)175

8.1.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)177

8.1.5控制流程函數(shù)177

8.1.6系統(tǒng)信息函數(shù)178

8.2數(shù)據(jù)庫(kù)備份與還原179

8.2.1數(shù)據(jù)的備份179

8.2.2數(shù)據(jù)的還原180

8.3MySQL的用戶管理182

8.3.1數(shù)據(jù)庫(kù)用戶管理182

8.3.2用戶權(quán)限設(shè)置184

8.4綜合案例——數(shù)據(jù)庫(kù)備份與恢復(fù)187

小結(jié)194

經(jīng)典習(xí)題194

V

WQ.indd52022/8/1617:18:29

第1章

數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

數(shù)據(jù)庫(kù)可視為電子化的文件柜—存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)(運(yùn)行)

新增、截取、更新、刪除等操作。

數(shù)據(jù)庫(kù)是以一定方式存儲(chǔ)在一起、能給予多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程

序彼此獨(dú)立的數(shù)據(jù)集合。

數(shù)據(jù)庫(kù)的系統(tǒng)結(jié)構(gòu)是對(duì)數(shù)據(jù)的三個(gè)抽象級(jí)別,它們分別是內(nèi)模式、概念模式和外模式。這個(gè)

三級(jí)結(jié)構(gòu)之間一般差別很大,為了實(shí)現(xiàn)這三個(gè)抽象級(jí)別在內(nèi)部聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)管理系統(tǒng)在三

級(jí)結(jié)構(gòu)之間提供了兩個(gè)層次的映像:外模式/概念模式映像、概念模式/內(nèi)模式映像。這兩層映

像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。

從最終用戶角度來看,數(shù)據(jù)庫(kù)系統(tǒng)分為單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)、客戶/服務(wù)器結(jié)構(gòu)和分布式

結(jié)構(gòu)。

本章還介紹了數(shù)據(jù)庫(kù)的設(shè)計(jì)。在關(guān)系數(shù)據(jù)庫(kù)方面,主要介紹了規(guī)范關(guān)系數(shù)據(jù)庫(kù)的理論,

并給出了一個(gè)相應(yīng)的實(shí)例。視頻

學(xué)習(xí)目標(biāo)

y掌握數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能

y了解關(guān)系型數(shù)據(jù)庫(kù)相關(guān)概念數(shù)據(jù)庫(kù)基礎(chǔ)

y掌握SQL的使用方法知識(shí)

1.1數(shù)據(jù)庫(kù)系統(tǒng)

數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)比較寬泛的概念,它包括數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)以及使用數(shù)據(jù)庫(kù)的用戶

和支撐數(shù)據(jù)庫(kù)管理系統(tǒng)運(yùn)行的軟硬件。在此僅對(duì)和數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)的部分概念作簡(jiǎn)單介紹,更深

入的知識(shí)請(qǐng)讀者參考相關(guān)教材或書籍。

1

01-02.indd12022/8/1617:18:22

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

1.1.1?數(shù)據(jù)、信息、數(shù)據(jù)庫(kù)

1.?dāng)?shù)據(jù)

數(shù)據(jù)(Data)是描述事物的符號(hào)記錄,是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象。數(shù)據(jù)可以是數(shù)值數(shù)據(jù),

如某個(gè)具體數(shù)字,也可以是非數(shù)值數(shù)據(jù),如聲音、圖像等。雖然數(shù)據(jù)有多種表現(xiàn)形式,但經(jīng)過數(shù)

字化處理后,都可以輸入并存儲(chǔ)到計(jì)算機(jī),并能為其處理的符號(hào)序列。

2.信息

信息(Information)是具有一定含義的、經(jīng)過加工的、對(duì)決策有價(jià)值的數(shù)據(jù)。所以說信息是有

用的數(shù)據(jù),數(shù)據(jù)是信息的表現(xiàn)形式。數(shù)據(jù)如果不具有知識(shí)性和有用性則不能稱為信息。從信息處

理角度看,任何事物的屬性都是通過數(shù)據(jù)來表示的,數(shù)據(jù)經(jīng)過加工處理后,使其具有知識(shí)性并對(duì)

人類活動(dòng)產(chǎn)生決策作用,從而形成信息。信息有如下特點(diǎn):無限性、共享性、創(chuàng)造性。

3.信息與數(shù)據(jù)的關(guān)系

在計(jì)算機(jī)中,為了存儲(chǔ)和處理某些事物,需要抽象出對(duì)這些事物感興趣的特征組成一個(gè)記錄

來描述。例如,學(xué)生檔案中,如果人們感興趣的是學(xué)生的姓名、性別、年齡、出生年月、籍貫、

所在系別、入學(xué)日期,就可以這樣描述:李明,男,21,1985,浙江,計(jì)算機(jī)系,2004,因此這

里的學(xué)生記錄就是數(shù)據(jù)。它的含義即所含信息是:李明是個(gè)大學(xué)生,1985年出生,男,浙江人,

2004年考入計(jì)算機(jī)系。

數(shù)據(jù)的形式不能完全表達(dá)其內(nèi)容,需要經(jīng)過解釋。數(shù)據(jù)的解釋是指對(duì)數(shù)據(jù)含義的說明,數(shù)據(jù)

的含義又稱為數(shù)據(jù)的語(yǔ)義,也就是數(shù)據(jù)包含的信息。信息是數(shù)據(jù)的內(nèi)涵,數(shù)據(jù)是信息的符號(hào)表示,

是載體。數(shù)據(jù)是符號(hào)化的信息,信息是語(yǔ)義化的數(shù)據(jù)。如黑白臉譜,所表示的數(shù)據(jù)是黑白點(diǎn)陣,

而所帶有的信息是臉譜。

4.?dāng)?shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)(Database,DB)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)

中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),用于滿足各種不同的信息需求,并且集中的數(shù)據(jù)

彼此之間有相互的聯(lián)系。具有較小的冗余度,較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性。

1.1.2?數(shù)據(jù)庫(kù)管理系統(tǒng)

數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,DBMS)是為管理數(shù)據(jù)庫(kù)而設(shè)計(jì)的計(jì)算機(jī)軟

件系統(tǒng),一般具有存儲(chǔ)、截取、安全保障、備份等基礎(chǔ)功能。數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶和操作

系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它的主要功能包括以下幾個(gè)方面:

1.?dāng)?shù)據(jù)定義功能

提供數(shù)據(jù)定義語(yǔ)言DDL,用戶通過它可以方便地對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象進(jìn)行定義。

2.?dāng)?shù)據(jù)操縱功能

提供數(shù)據(jù)操縱語(yǔ)言DML,用戶可以使用操縱語(yǔ)言實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作,如查詢、插入、

刪除和修改等。

3.?dāng)?shù)據(jù)庫(kù)的運(yùn)行管理功能

數(shù)據(jù)庫(kù)的建立、運(yùn)行和維護(hù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制,以保證數(shù)據(jù)的安全性、

完整性、多用戶對(duì)數(shù)據(jù)的并發(fā)使用以及發(fā)生故障后系統(tǒng)恢復(fù)。

2

01-02.indd22022/8/1617:18:22

第1章?數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

4.?dāng)?shù)據(jù)庫(kù)的建立和維護(hù)功能

它包括數(shù)據(jù)庫(kù)初始數(shù)據(jù)的輸入、轉(zhuǎn)換功能、數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)、恢復(fù)功能,數(shù)據(jù)庫(kù)的重組功能和性

能監(jiān)視,分析功能等。這些功能通常由一些應(yīng)用程序完成。

1.1.3?數(shù)據(jù)庫(kù)管理系統(tǒng)的分類

數(shù)據(jù)庫(kù)管理系統(tǒng)主要分為以下兩類:

1.關(guān)系數(shù)據(jù)庫(kù)

關(guān)系數(shù)據(jù)庫(kù)是創(chuàng)建在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)

據(jù)庫(kù)中的數(shù)據(jù)。現(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來表示。

幾乎所有的數(shù)據(jù)庫(kù)管理系統(tǒng)都配備了一個(gè)開放式數(shù)據(jù)庫(kù)互連(ODBC)驅(qū)動(dòng)程序,令各個(gè)數(shù)據(jù)

庫(kù)之間得以互相集成。

典型代表有MySQL、Oracle、MicrosoftSQLServer、Access及PostgreSQL等。

2.非關(guān)系型數(shù)據(jù)庫(kù)

非關(guān)系型數(shù)據(jù)庫(kù)是對(duì)不同于傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱,與關(guān)系數(shù)據(jù)庫(kù)最大

的不同點(diǎn)是不使用SQL作為查詢語(yǔ)言。

典型代表有BigTable、Cassandra、MongoDB、CouchDB;還包括鍵值數(shù)據(jù)庫(kù)ApacheCassandra、

LevelDB。

1.2數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)

1.2.1?數(shù)據(jù)庫(kù)系統(tǒng)模式的概念

模式(Schema)是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅涉及到型的描述,不涉

及到具體的值。模式的一個(gè)具體值稱為模式的一個(gè)實(shí)例(Instance)。同一個(gè)模式可以有很多實(shí)例。

模式是相對(duì)穩(wěn)定的,而實(shí)例是相對(duì)變動(dòng)的,因?yàn)閿?shù)據(jù)庫(kù)中的數(shù)據(jù)是在不斷更新的。模式反映的是

數(shù)據(jù)的結(jié)構(gòu)及其聯(lián)系,而實(shí)例反映的是數(shù)據(jù)庫(kù)某一時(shí)刻的狀態(tài)。

1.2.2?數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)

數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)分為三層:內(nèi)模式、概念模式(模式)和外模式,如圖1-1所示。這個(gè)三級(jí)

結(jié)構(gòu)有時(shí)稱為三級(jí)模式結(jié)構(gòu),是在1971年通過DBTG報(bào)告中提出的,后來收入在1975年的美國(guó)

ANSI/SPARC報(bào)告中。雖然現(xiàn)在DBMS的產(chǎn)品多種多樣,并在不同操作系統(tǒng)支持下工作,但是大

多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級(jí)模式的結(jié)構(gòu)特征。

從某個(gè)角度看到的數(shù)據(jù)特性稱為數(shù)據(jù)視圖(DataView)。

外模式最接近用戶,是單個(gè)用戶所能看到的數(shù)據(jù)特性,單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為外

模式。

概念模式涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局?jǐn)?shù)據(jù)視圖的描述也稱為

模式。

內(nèi)模式最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)。物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為

內(nèi)模式。

3

01-02.indd32022/8/1617:18:22

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

應(yīng)用A應(yīng)用B應(yīng)用C應(yīng)用D應(yīng)用E

外模式1外模式2外模式3

外模式/概念模式映像

模式

概念模式/內(nèi)模式映像

內(nèi)模式

數(shù)據(jù)庫(kù)

圖1-1數(shù)據(jù)庫(kù)系統(tǒng)的二級(jí)映像

1.概念模式(所有用戶的公共視圖)

一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)概念模式,它以某一種數(shù)據(jù)模型為基礎(chǔ),統(tǒng)一綜合地考慮了所有用戶的

需求,并將這些需求有機(jī)地結(jié)合成一個(gè)邏輯整體。

概念模式由許多記錄類型的值組成。例如,它可能包括部門記錄值的集合、職工記錄值的集

合、供應(yīng)商記錄值的集合、零件記錄值的集合,等等。概念模式根本不涉及物理表示和訪問的技

術(shù),它只定義信息的內(nèi)容,這樣在模式中不能涉及存儲(chǔ)字段表示、存儲(chǔ)記錄隊(duì)列、索引、哈希算法、

指針或其他存儲(chǔ)和訪問的細(xì)節(jié)。這樣模式就可真正實(shí)現(xiàn)物理數(shù)據(jù)的獨(dú)立性。

定義模式時(shí),不僅定義數(shù)據(jù)的邏輯結(jié)構(gòu),還要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)安全性、

完整性要求。

在數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中,描述概念模式的數(shù)據(jù)定義語(yǔ)言稱為模式DDL(SchemaData

De?nitionLanguage)。

2.外模式(用戶可見的視圖)

外模式也稱子模式(Subschema)或用戶模式,它是數(shù)據(jù)庫(kù)用戶能夠看見和使用的局部數(shù)據(jù)的

邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示,是用

戶和數(shù)據(jù)庫(kù)系統(tǒng)的接口,是用戶用到的那部分?jǐn)?shù)據(jù)的描述。一個(gè)系統(tǒng)一般有多個(gè)外模式。

外模式是保證數(shù)據(jù)庫(kù)安全性的一個(gè)有力措施。每個(gè)用戶只能看見和訪問所對(duì)應(yīng)的外模式

中的數(shù)據(jù),數(shù)據(jù)庫(kù)中的其余數(shù)據(jù)是不可見的。用戶使用數(shù)據(jù)操縱語(yǔ)言DML(DataManipulation

Language)語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,實(shí)際上是對(duì)外模式的外部記錄進(jìn)行操作。

描述外模式的數(shù)據(jù)定義語(yǔ)言稱為外模式DDL。有了外模式后,程序員或數(shù)據(jù)庫(kù)管理員不必關(guān)

心概念模式,只與外模式發(fā)生聯(lián)系,按照外模式的結(jié)構(gòu)存儲(chǔ)和操縱數(shù)據(jù)。

外模式又稱為用戶模式或子模式,通常是概念模式的邏輯子集。

3.內(nèi)模式(存儲(chǔ)模式)

一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的

表示方法。它定義所有的內(nèi)部記錄類型、索引和文件的組織方式,以及數(shù)據(jù)控制方面的細(xì)節(jié)。

注意:內(nèi)模式和物理層仍然不同。內(nèi)部記錄并不涉及到物理記錄,也不涉及到設(shè)備的約束。

比內(nèi)模式更接近物理存儲(chǔ)和訪問的那些軟件機(jī)制是操作系統(tǒng)的一部分,即文件系統(tǒng)。

4

01-02.indd42022/8/1617:18:23

第1章?數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

描述內(nèi)模式的數(shù)據(jù)定義語(yǔ)言稱為內(nèi)模式DDL。

1.2.3?數(shù)據(jù)庫(kù)的二級(jí)映像功能與數(shù)據(jù)獨(dú)立性

數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶

只要抽象的處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ)。三級(jí)結(jié)構(gòu)之間一般差別很大,

為了實(shí)現(xiàn)這三個(gè)抽象級(jí)別在內(nèi)部聯(lián)系和轉(zhuǎn)換,DBMS在三級(jí)結(jié)構(gòu)之間提供了兩個(gè)層次的映像:外

模式/概念模式映像、概念模式/內(nèi)模式映像,如圖1-1所示。

這兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。

1.外模式/概念模式映像

用于定義外模式和概念模式之間的對(duì)應(yīng)性,即外部記錄和內(nèi)部記錄間的關(guān)系。

當(dāng)概念模式發(fā)生改變時(shí),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/概念模式的映像作相應(yīng)改變,可以使

外模式保持不變,應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與

程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。

2.概念模式/內(nèi)模式映像

用于定義概念模式和內(nèi)模式間的對(duì)應(yīng)性,實(shí)現(xiàn)兩級(jí)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)組成等的映像對(duì)應(yīng)關(guān)系。

概念模式/內(nèi)模式映像定義了數(shù)據(jù)庫(kù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系,當(dāng)數(shù)據(jù)庫(kù)的存

儲(chǔ)結(jié)構(gòu)改變了,由數(shù)據(jù)庫(kù)管理員對(duì)概念模式/內(nèi)模式映像作相應(yīng)改變,可以使概念模式保持不變,

從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性。

1.2.4?數(shù)據(jù)庫(kù)系統(tǒng)用戶結(jié)構(gòu)

從最終用戶角度來看,數(shù)據(jù)庫(kù)系統(tǒng)分為單用戶、主從式結(jié)構(gòu)、客戶/服務(wù)器結(jié)構(gòu)和分布式結(jié)構(gòu)。

1.單用戶數(shù)據(jù)庫(kù)系統(tǒng)

單用戶數(shù)據(jù)庫(kù)系統(tǒng)是一種早期的最簡(jiǎn)單的數(shù)據(jù)庫(kù)系統(tǒng)。在這種系統(tǒng)中,整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)(包

括應(yīng)用程序、DBMS、數(shù)據(jù))都裝在一臺(tái)計(jì)算機(jī)上,由一個(gè)用戶獨(dú)占,不同機(jī)器之間不能共享數(shù)據(jù)。

如圖1-2所示。

2.主從式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

主從式結(jié)構(gòu)是指一個(gè)主機(jī)帶多個(gè)終端的多用戶結(jié)構(gòu)。在這種結(jié)構(gòu)中,數(shù)據(jù)庫(kù)系統(tǒng)(包括應(yīng)用

程序、DBMS、數(shù)據(jù))都集中存放在主機(jī)上,所有處理任務(wù)都由主機(jī)來完成,各個(gè)用戶通過主機(jī)的

終端并發(fā)地存取數(shù)據(jù)庫(kù),共享數(shù)據(jù)資源,如圖1-3所示。

主機(jī)

微機(jī)

終端

圖1-2單用戶數(shù)據(jù)庫(kù)系統(tǒng)圖1-3主從式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

5

01-02.indd52022/8/1617:18:23

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

3.客戶/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

主從式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中的主機(jī)是一個(gè)通用計(jì)算

機(jī),既執(zhí)行DBMS功能又執(zhí)行應(yīng)用程序。隨著工作站服務(wù)器

功能的增強(qiáng)和廣泛使用,人們開始把DBMS功能和應(yīng)

用分開,網(wǎng)絡(luò)中某個(gè)(些)節(jié)點(diǎn)上的計(jì)算機(jī)專門用于

執(zhí)行DBMS功能,稱為數(shù)據(jù)庫(kù)服務(wù)器,簡(jiǎn)稱服務(wù)器;

其他節(jié)點(diǎn)上的計(jì)算機(jī)安裝DBMS的外圍應(yīng)用開發(fā)程客戶機(jī)

(微機(jī))

序,支持用戶的應(yīng)用,稱為客戶機(jī),這就是客戶/服

務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng),如圖1-4所示。

圖1-4客戶/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

在客戶/服務(wù)器結(jié)構(gòu)中,客戶端的用戶請(qǐng)求被傳

送到數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行處理后,只將結(jié)果返回給用戶(而不是整個(gè)數(shù)據(jù)),從而顯

著減少了網(wǎng)絡(luò)上的數(shù)據(jù)傳輸量,提高了系統(tǒng)的性能、吞吐量和負(fù)載能力;另一方面,客戶/服務(wù)器

結(jié)構(gòu)的數(shù)據(jù)庫(kù)往往更加開放??蛻襞c服務(wù)器一般都能在多種不同的硬件和軟件平臺(tái)上運(yùn)行,可以

使用不同廠商的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)程序,應(yīng)用程序具有更強(qiáng)的可移植性,同時(shí)也可以減少軟件維護(hù)

開銷。

4.分布式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

分布式結(jié)構(gòu)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上是一個(gè)整體,但物理地分布在計(jì)算機(jī)網(wǎng)絡(luò)的不同節(jié)

點(diǎn)上。網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都可以獨(dú)立處理本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行局部應(yīng)用;同時(shí)也可以同時(shí)

存取和處理多個(gè)異地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行全局應(yīng)用,如圖1-5所示。它的優(yōu)點(diǎn)是適應(yīng)地理上分散

的公司、團(tuán)體和組織對(duì)于數(shù)據(jù)庫(kù)應(yīng)用的需求。不足的是數(shù)據(jù)的分布存放給數(shù)據(jù)的處理、管理與維

護(hù)帶來困難;當(dāng)用戶需要經(jīng)常訪問遠(yuǎn)程數(shù)據(jù)時(shí),系統(tǒng)效率會(huì)明顯地受到網(wǎng)絡(luò)交通的制約。

客戶機(jī)客戶機(jī)

(微機(jī))(微機(jī))

服務(wù)器服務(wù)器

服務(wù)器服務(wù)器

客戶機(jī)客戶機(jī)

(微機(jī))(微機(jī))

圖1-5分布式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)

6

01-02.indd62022/8/1617:18:23

第1章?數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

1.3關(guān)系數(shù)據(jù)庫(kù)

1.3.1?關(guān)系數(shù)據(jù)庫(kù)概述屬性名

在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)關(guān)系就是一張二維表,它由行和列

元組

組成,如圖1-6所示。(t)

非碼非碼

表中的一行就是一個(gè)元組(也稱記錄),表中的列為一個(gè)屬候選碼

性,給每個(gè)屬性起一個(gè)名即為屬性名(也稱字段名)。關(guān)系數(shù)據(jù)(主碼)

庫(kù)的特點(diǎn)是:圖1-6關(guān)系(表)的結(jié)構(gòu)

(1)關(guān)系中每個(gè)字段(屬性)不可再分,是數(shù)據(jù)庫(kù)中的最基本單位。

(2)每一列字段是同屬性的。每個(gè)列的順序是任意的。

(3)每一行記錄由一個(gè)事物的諸字段項(xiàng)構(gòu)成。記錄的順序可以是任意的。

(4)不允許有相同的字段名,也不允許有相同的記錄行。每個(gè)關(guān)系都有主碼關(guān)鍵字(Key)的

屬性集合,用以唯一標(biāo)識(shí)關(guān)系中的各個(gè)記錄行。

(5)解決實(shí)際問題往往需要多個(gè)關(guān)系,關(guān)系和關(guān)系是有聯(lián)系的,這種聯(lián)系也用關(guān)系表示。

在一個(gè)給定的應(yīng)用領(lǐng)域中,所有關(guān)系及關(guān)系之間聯(lián)系的關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫(kù)。

1.3.2?關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)

數(shù)據(jù)庫(kù)的設(shè)計(jì)質(zhì)量,直接影響數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)數(shù)據(jù)的控制質(zhì)量。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)

給定的應(yīng)用環(huán)境,根據(jù)用戶的信息要求、處理需求和數(shù)據(jù)庫(kù)的支撐環(huán)境,利用數(shù)據(jù)模型和應(yīng)用程

序模擬現(xiàn)實(shí)世界中該單位的數(shù)據(jù)結(jié)構(gòu)和處理活動(dòng)的過程,是數(shù)據(jù)設(shè)計(jì)和數(shù)據(jù)處理設(shè)計(jì)的結(jié)合。規(guī)

范化的數(shù)據(jù)庫(kù)設(shè)計(jì)要求數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)文件的數(shù)據(jù)組織應(yīng)獲得最大程度的共享、最小的冗余度,

消除數(shù)據(jù)及數(shù)據(jù)依賴關(guān)系中的冗余部分,使依賴于同一個(gè)數(shù)據(jù)模型的數(shù)據(jù)達(dá)到有效的分離。保證

在輸入、修改數(shù)據(jù)時(shí)數(shù)據(jù)的一致性和正確性,保證數(shù)據(jù)與使用數(shù)據(jù)的應(yīng)用程序之間的高度獨(dú)立性。

同時(shí)在設(shè)計(jì)時(shí)還要將數(shù)據(jù)和操作數(shù)據(jù)的行為緊密結(jié)合起來,保證數(shù)據(jù)的完整性約束。

1.需求分析

需求分析階段的任務(wù)是收集數(shù)據(jù)庫(kù)所需要的信息內(nèi)容和數(shù)據(jù)處理規(guī)則,確定建立數(shù)據(jù)庫(kù)的目

的。在需求分析調(diào)研中,必須和用戶充分討論,確定數(shù)據(jù)庫(kù)所要進(jìn)行的數(shù)據(jù)處理范圍,數(shù)據(jù)處理

的流程以及數(shù)據(jù)取值范圍的界定。

描述需求分析常用的方法有數(shù)據(jù)流圖、數(shù)據(jù)字典等。

2.概念結(jié)構(gòu)設(shè)計(jì)

概念結(jié)構(gòu)設(shè)計(jì)是對(duì)現(xiàn)實(shí)世界的一種抽象,即對(duì)實(shí)際的人、物、事和概念進(jìn)行人為處理,抽取

人們關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種概念精確地加以描述。

為了能夠完成上述目標(biāo),我們把現(xiàn)實(shí)世界中客觀存在并可相互區(qū)別的事物稱為實(shí)體(Entity)。

如一個(gè)職工、一個(gè)學(xué)生、一個(gè)部門、學(xué)生的一次選課、老師與系的工作關(guān)系。

把描述實(shí)體的某一特性稱為屬性(Attribute),一個(gè)實(shí)體可以由若干個(gè)屬性值來描述。如一個(gè)學(xué)生

實(shí)體可以由學(xué)號(hào)、姓名、性別、出生日期等屬性的屬性值(20021001、張三、男、1986-5-6)來描述。

同類實(shí)體中的實(shí)體彼此之間是可以區(qū)別的,能夠唯一標(biāo)識(shí)實(shí)體的屬性集合稱作實(shí)體的碼或關(guān)鍵字。

實(shí)體集之間存在各種聯(lián)系(Relationship),主要有三類:一對(duì)一聯(lián)系(1:1)、一對(duì)多聯(lián)系(1:n)、

7

01-02.indd72022/8/1617:18:23

MySQL數(shù)據(jù)庫(kù)原理及實(shí)踐教程

多對(duì)多聯(lián)系(m:n)。

1)一對(duì)一聯(lián)系(1∶1)

對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有0個(gè)或1個(gè)實(shí)體與之聯(lián)系,反之亦然,則稱實(shí)

體集A與實(shí)體集B具有一對(duì)一的聯(lián)系。

例如,一個(gè)班級(jí)只有一個(gè)班長(zhǎng),一個(gè)班長(zhǎng)只在一個(gè)班中任職,則班級(jí)與班長(zhǎng)之間具有一對(duì)一聯(lián)系。

2)一對(duì)多聯(lián)系(1∶n)

對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有0個(gè)或多個(gè)實(shí)體與之聯(lián)系,反之,對(duì)于實(shí)體集B

中的每一個(gè)實(shí)體,實(shí)體集A中有0個(gè)或1個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B具有一對(duì)多的聯(lián)系。

例如,一個(gè)班級(jí)有若干個(gè)學(xué)生,每個(gè)學(xué)生只在一個(gè)班級(jí)中學(xué)習(xí),則班級(jí)與學(xué)生之間具有一對(duì)多聯(lián)系。

3)多對(duì)多聯(lián)系(m∶n)

對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有0個(gè)或多個(gè)實(shí)體與之聯(lián)系,反之,對(duì)于實(shí)體集B

中的每一個(gè)實(shí)體,實(shí)體集A中有0個(gè)或多個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B具有多對(duì)多的聯(lián)系。

例如,一門課程同時(shí)有若干個(gè)學(xué)生選修,而一個(gè)學(xué)生同時(shí)選修多門課程,則課程與學(xué)生之間

具有多對(duì)多聯(lián)系。

描述概念模型的有力工具是E-R模型。

3.邏輯結(jié)構(gòu)設(shè)計(jì)

關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合。E-R圖則是由實(shí)體、實(shí)體的屬性和實(shí)體之間的

聯(lián)系三個(gè)要素組成的。所以將E-R圖轉(zhuǎn)換為關(guān)系模型實(shí)際上就是要將實(shí)體、實(shí)體的屬性和實(shí)體之

間的聯(lián)系轉(zhuǎn)化為關(guān)系模式,這種轉(zhuǎn)換一般遵循如下原則:

1)實(shí)體與實(shí)體屬性的轉(zhuǎn)換

一個(gè)實(shí)體轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性。實(shí)體的碼就是關(guān)系的碼。

例如,學(xué)生實(shí)體可以轉(zhuǎn)換為如下關(guān)系模式,其中學(xué)號(hào)為學(xué)生關(guān)系的碼。

學(xué)生(學(xué)號(hào),姓名,年齡,所在系)。

2)實(shí)體間聯(lián)系的轉(zhuǎn)換

(1)一個(gè)1∶1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。

如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換

為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。

如果與某一端對(duì)應(yīng)的關(guān)系模式合并,則需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼

和聯(lián)系本身的屬性。

例如,有一個(gè)學(xué)生管理的聯(lián)系,即一個(gè)職工管理一個(gè)班級(jí),一個(gè)班級(jí)只能由一個(gè)職工管理,

該聯(lián)系為1∶1聯(lián)系,將其轉(zhuǎn)換為關(guān)系模式有以下三種方法:

a.轉(zhuǎn)換成一個(gè)獨(dú)立的關(guān)系模式

管理(職工號(hào),班級(jí)號(hào))

b.將其與班級(jí)關(guān)系模式合并,增加職工號(hào)屬性,即

班級(jí)(班級(jí)號(hào),學(xué)生人數(shù),職工號(hào))

c.將其與教師關(guān)系模式合并,增加班級(jí)號(hào)屬性,即

教師(職工號(hào),姓名,性別,職稱,班級(jí)號(hào))

推薦使用合并的方法。

(2)一個(gè)1∶n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。

8

01-02.indd82022/8/1617:18:23

第1章?數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換

為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。

例如,假如有一個(gè)學(xué)生組成的聯(lián)系,即一個(gè)學(xué)生只能屬于一個(gè)班級(jí),一個(gè)班級(jí)可能有多個(gè)學(xué)

生,該聯(lián)系為1∶n聯(lián)系,將其轉(zhuǎn)換為關(guān)系模式有兩種方法:

a.轉(zhuǎn)換成一個(gè)獨(dú)立的關(guān)系模式

組成(學(xué)號(hào),班級(jí)號(hào))

b.將其與學(xué)生關(guān)系模式合并,增加班級(jí)號(hào)屬性,即

學(xué)生(學(xué)號(hào),姓名,年齡,所在系,班級(jí)號(hào))

推薦使用合并的方法。

(3)一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。

與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性。而關(guān)系的碼為各實(shí)體

碼的組合。

例如,有一個(gè)學(xué)生選修的聯(lián)系,即一個(gè)學(xué)生可以選修多門課程,一門課程可以被多個(gè)學(xué)生選修,

該聯(lián)系是一個(gè)m:n聯(lián)系,將其轉(zhuǎn)換為如下關(guān)系模式。

選修(學(xué)號(hào),課程號(hào),成績(jī))

4.?dāng)?shù)據(jù)表的優(yōu)化與規(guī)范化

在數(shù)據(jù)需求分析的基礎(chǔ)上,進(jìn)行概念結(jié)構(gòu)和邏輯結(jié)構(gòu)設(shè)計(jì),并將數(shù)據(jù)信息分割成數(shù)個(gè)大小適

當(dāng)?shù)臄?shù)據(jù)表。如我們可以得到學(xué)生的相關(guān)數(shù)據(jù)信息(見表1-1),學(xué)生選課數(shù)據(jù)表包含SNO(學(xué)號(hào))、

SNAME(姓名)、SSSN(身份證號(hào))、SDEPA(所在院系)、SMTEL(電話)、SCITY(城市)、CNO(課

程編號(hào))、CNAME(課程名稱)、GRADE(成績(jī))等屬性。

表1-1學(xué)生選課數(shù)據(jù)表

SNOSNAMESSSNSDEPASMTELSCITYCNOCNAMEGRADE

060101王東民******19880526***計(jì)算機(jī)135****杭州102C語(yǔ)言90

060102張小芬******19891001***計(jì)算機(jī)131****寧波102C語(yǔ)言95

060103李鵬飛******19871021***計(jì)算機(jī)139****溫州103數(shù)據(jù)結(jié)構(gòu)88

060101王東民******19880526***計(jì)算機(jī)135*

溫馨提示

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

評(píng)論

0/150

提交評(píng)論