版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫概述第1章通過本課程的學(xué)習(xí),您將應(yīng)該:了解數(shù)據(jù)庫的相關(guān)概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結(jié)構(gòu)管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標(biāo)的使用方法熟練掌握存儲函數(shù)的應(yīng)用熟練掌握觸發(fā)器的應(yīng)用熟練掌握事務(wù)的基本特性和應(yīng)用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復(fù)操作了解利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)并部署課程目標(biāo)項目部署成功本講教學(xué)目標(biāo)了解為什么要使用數(shù)據(jù)庫。了解數(shù)據(jù)庫的相關(guān)概念。熟悉常見的數(shù)據(jù)庫及排名。了解RDBMS與非RDBMS。掌握數(shù)據(jù)庫設(shè)計的步驟。通過本講的學(xué)習(xí),您將可以:1.OPTION2.OPTIONOPTION4.OPTION3.5.OPTION數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的主界面目錄Content為什么要使用數(shù)據(jù)庫01數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)02RDBMS與非RDBMS03關(guān)系型數(shù)據(jù)庫設(shè)計04課業(yè)任務(wù)05為什么要使用數(shù)據(jù)庫011.1.1何為數(shù)據(jù)庫在信息化社會,充分有效地管理和利用各類信息資源是進行科學(xué)研究和決策管理的前提。數(shù)據(jù)庫技術(shù)是管理信息系統(tǒng)、辦公自動化系統(tǒng)、決策支持系統(tǒng)等各類信息系統(tǒng)的核心部分,是進行科學(xué)研究和決策管理的重要技術(shù)手段。數(shù)據(jù)庫(DatabaseDB)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫(存儲數(shù)據(jù)的倉庫),它產(chǎn)生于距今六十多年前,隨著信息技術(shù)和市場的發(fā)展,特別是20世紀(jì)90年代以后,數(shù)據(jù)管理不再僅僅是存儲和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫有很多種類型,從最簡單的存儲有各種數(shù)據(jù)的表格到能夠進行海量數(shù)據(jù)存儲的大型數(shù)據(jù)庫系統(tǒng)都在各個方面得到了廣泛的應(yīng)用。1.1.2數(shù)據(jù)庫的特點數(shù)據(jù)庫最顯著的特點是數(shù)據(jù)持久化(persistence),即把數(shù)據(jù)保存在可掉電式存儲設(shè)備中以供之后使用。大多數(shù)情況下,特別是企業(yè)級應(yīng)用,數(shù)據(jù)持久化意味著將內(nèi)存中的數(shù)據(jù)保存到硬盤上加以“固化”,而持久化的實現(xiàn)過程大多通過各種關(guān)系數(shù)據(jù)庫來完成,如下圖所示。持久化的主要作用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型數(shù)據(jù)庫中,也可以存儲在磁盤文件、XML數(shù)據(jù)文件中。數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)021.2.1數(shù)據(jù)庫的相關(guān)概念數(shù)據(jù)表數(shù)據(jù)表(Table)是一個二維表格,用來存儲數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu)。它由縱向的列和橫向的行組成。行被稱為記錄,列被為字段,每一列表示記錄的一個屬性,有相應(yīng)的描述信息,如數(shù)據(jù)類型、數(shù)據(jù)寬度等。數(shù)據(jù)庫數(shù)據(jù)庫(Database),簡稱DB,是存儲數(shù)據(jù)的“倉庫”,其本質(zhì)是一個文件系統(tǒng)。一個數(shù)據(jù)庫可以包含多個數(shù)據(jù)表,數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)所需數(shù)據(jù)庫db_study包括若干個數(shù)據(jù)表,保存在安裝路徑的Date文件夾中,如下圖所示為本教材設(shè)計和開發(fā)的數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)所需的數(shù)據(jù)庫及其相關(guān)的數(shù)據(jù)表。1.2.1數(shù)據(jù)庫的相關(guān)概念數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)簡稱DBMS,是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護數(shù)據(jù)庫,對數(shù)據(jù)庫進行統(tǒng)一管理和控制,用戶通過數(shù)據(jù)庫管理系統(tǒng)訪問數(shù)據(jù)庫中表內(nèi)的數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)簡稱DBS,是一個人-機系統(tǒng),由硬件、軟件(操作系統(tǒng))、數(shù)據(jù)庫、DBMS、數(shù)據(jù)庫管理員組成。1.2.2數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS)可以管理多個數(shù)據(jù)庫,一般開發(fā)人員會針對每一個應(yīng)用創(chuàng)建一個數(shù)據(jù)庫。為保存應(yīng)用中實體的數(shù)據(jù),一般會在數(shù)據(jù)庫創(chuàng)建多個表,以保存程序中實體用戶的數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫和表的關(guān)系如下圖所示。1.2.3數(shù)據(jù)庫管理系統(tǒng)排名根據(jù)CCF數(shù)據(jù)庫專業(yè)委員會2021年12月發(fā)布的《數(shù)據(jù)庫系統(tǒng)的分類和測評研究》,數(shù)據(jù)庫有三種常用分類:按照數(shù)據(jù)模型可分為關(guān)系型、非關(guān)系型;按照架構(gòu)可分為單機、集中式、分布式;按部署形態(tài)可分為本地化部署和云部署。關(guān)系型數(shù)據(jù)庫是主流的數(shù)據(jù)庫產(chǎn)品之一。根據(jù)艾瑞咨詢統(tǒng)計,中國市場中約90%的數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫。1.2.3數(shù)據(jù)庫管理系統(tǒng)排名當(dāng)前中國的數(shù)據(jù)庫參與者可以分為三大類:
開源數(shù)據(jù)庫以MySQL、PostgreSQL為代表,通過全球化的開源社區(qū)形成強大生態(tài),并孵化出諸多商業(yè)數(shù)據(jù)庫發(fā)行版產(chǎn)品。
國內(nèi)數(shù)據(jù)庫有達夢、人大金倉、南大通用、神舟通用、瀚高為代表的老牌廠商,有華為(openGauss、GaussDB)、阿里(OceanBase、PolarDB)、騰訊(TDSQL)等大廠,有TiDB、海量數(shù)據(jù)(Vastbase)、優(yōu)炫(UXDB)等初創(chuàng)廠商,也有基于自身業(yè)務(wù)需求延伸到數(shù)據(jù)庫領(lǐng)域的跨界廠商,例如中興、浪潮、東軟、亞信科技等。海外商業(yè)數(shù)據(jù)庫以O(shè)racle、MicrosoftSQLServer、IBMDb2、Amazon、SAP、Teradata、Snowflake為代表,憑借成熟技術(shù)、豐富用例、已建立極其完善的生態(tài)。
1.2.3數(shù)據(jù)庫管理系統(tǒng)排名下圖是2023年DB-EnginesRanking對各個數(shù)據(jù)庫受歡迎度進行調(diào)查后的統(tǒng)計結(jié)果,其中Oracle、MySQL、MSSQLServer位于前三。查看數(shù)據(jù)庫受歡迎度最新排名的網(wǎng)址是/en/ranking。說明:1.2.3數(shù)據(jù)庫管理系統(tǒng)排名近些年,隨著國產(chǎn)數(shù)據(jù)庫的不斷發(fā)展與崛起,比較知名“國產(chǎn)數(shù)據(jù)庫四小龍”分別是武漢達夢、人大金倉、神州通用和南大通用。達夢屬于oracle系的,人大金倉屬于PostgreSQL系的。2022年6月,由互聯(lián)網(wǎng)周刊、中國社會科學(xué)院信息化研究中心、eNet研究院、德本咨詢聯(lián)合推出《2022信創(chuàng)數(shù)據(jù)庫企業(yè)排行》前15家數(shù)據(jù)庫企業(yè)如圖1.5所示。達夢數(shù)據(jù)庫以綜合評分0.02分的優(yōu)勢排名第一。1.2.4常見的數(shù)據(jù)庫1.OracleOracle是甲骨文公司開發(fā)的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位,它的系統(tǒng)具有可用性強,數(shù)據(jù)安全性強,穩(wěn)定性強等優(yōu)點,適用于各類大、中、小微機環(huán)境,Oracle是一種高效率的、可靠性好的、適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案。但是它擴展性不足,價格昂貴,操作比較復(fù)雜,需要的技術(shù)含量高。圖片來源于百度1.2.4常見的數(shù)據(jù)庫2.MySQLMySQL是瑞典MySQLAB公司的一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng),屬于Oracle旗下產(chǎn)品。它是用C和C++語言編寫的,并且使用了多種編輯器進行測試,以保證源碼的可移植性,支持多個操作系統(tǒng),支持多線程,可以充分地利用CPU資源,為多種編程語言提供API,它優(yōu)化了SQL算法,有效的提高了查詢速度,MySQL內(nèi)提供了用于管理,檢查以及優(yōu)化數(shù)據(jù)庫操作的管理工具,MySQL具有易于使用,性能強大,跨平臺,免費的優(yōu)點。圖片來源于百度1.2.4常見的數(shù)據(jù)庫3.SQLServerSQLServer是美國Microsoft公司推出的一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。它是一個可擴展的、高性能的、專為分布式客戶機/服務(wù)器計算設(shè)計,實現(xiàn)了與WindowsNT的有機結(jié)合,提供了基于事務(wù)的企業(yè)級信息管理系統(tǒng)方案。它具有易用性,適合分布式組織的可伸縮性,用于決策支持的數(shù)據(jù)倉庫功能,具有與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性,良好的性價比的優(yōu)點。圖片來源于百度1.2.4常見的數(shù)據(jù)庫4.DB2DB2是IBM公司開發(fā)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它支持面向?qū)ο蟮木幊蹋С侄嗝襟w應(yīng)用程序,以及存儲過程和觸發(fā)器。用戶可以在建表時顯示地定義復(fù)雜的完整性規(guī)則,提供GUI和命令行,在windows和Unix下操作相同。DB2還支持異構(gòu)分布式數(shù)據(jù)庫訪問,支持?jǐn)?shù)據(jù)復(fù)制。圖片來源于百度1.2.4常見的數(shù)據(jù)庫5.PostgreSQLPostgreSQL是基于加州大學(xué)計算機系開發(fā)的POSTGRES,4.2版本為基礎(chǔ)的對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它是一種特性非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它支持大部分的SQL標(biāo)準(zhǔn)并且提供了很多其他現(xiàn)代特性,它也可以用許多方法擴展。它有穩(wěn)定性極強,性能高速度快,多年來在GIS(地理信息系統(tǒng))領(lǐng)域處于優(yōu)勢地位,并且其“無鎖定”特性非常突出。圖片來源于百度1.2.4常見的數(shù)據(jù)庫6.SQLiteSQLite是D.RichardHipp建立的公有領(lǐng)域項目,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它實現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫引擎。它有零配置,緊湊,可移植的優(yōu)點。但它不適用于存儲過大的數(shù)據(jù)庫,并且與MySQL不同,它不使用固定的日志文件。圖片來源于百度1.2.4常見的數(shù)據(jù)庫7.informixInformix是IBM公司出品的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)家族。它被定位為作為IBM在線事務(wù)處理(OLTP)旗艦級數(shù)據(jù)服務(wù)系統(tǒng)。因此它專注于高可用性和可靠性,并具有適應(yīng)性強的特點。Informix還具有簡單、輕便、易用性等優(yōu)點。但是,因為其最初是為小型數(shù)據(jù)庫設(shè)計的,所以其產(chǎn)品可能仍然存在一些小型數(shù)據(jù)庫的限制,如可擴展性受到限制等。圖片來源于百度RDBMS與非RDBMS03從排名中能得出,關(guān)系型數(shù)據(jù)庫絕對是DBMS的主流,其中排名靠前的Oracle、MySQL、SQLServer和國產(chǎn)達夢數(shù)據(jù)庫都是關(guān)系型數(shù)據(jù)庫(RDBMS)。1.3.1關(guān)系型數(shù)據(jù)庫
實質(zhì)這種類型的數(shù)據(jù)庫是最古老的數(shù)據(jù)庫類型,關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式),如下圖所示。1.3.1關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫以行(row)和列(column)的形式存儲數(shù)據(jù),以便于用戶理解。這一系列的行和列被稱為表(table),一組表組成了一個庫(database)。表與表之間的數(shù)據(jù)記錄有關(guān)系(relationship)?,F(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)系均用關(guān)系模型來表示。關(guān)系型數(shù)據(jù)庫,就是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,如下圖所示,關(guān)系型數(shù)據(jù)庫實質(zhì)圖,SQL就是關(guān)系型數(shù)據(jù)庫的查詢語言。1.3.1關(guān)系型數(shù)據(jù)庫
(2)事務(wù)支持(1)復(fù)雜查詢優(yōu)勢可以用SQL語句方便地在一個表以及多個表之間做非常復(fù)雜的數(shù)據(jù)查詢。使得對于安全性能很高的數(shù)據(jù)訪問要求得以實現(xiàn)。非關(guān)系型數(shù)據(jù)庫,可看成傳統(tǒng)關(guān)系型數(shù)據(jù)庫的功能閹割版本,基于鍵值對存儲數(shù)據(jù),不需要經(jīng)過SQL層的解析,性能非常高。同時,通過減少不常用的功能,進一步提高性能。目前基本上大部分主流的非關(guān)系型數(shù)據(jù)庫都是免費的。1.3.2非關(guān)系型數(shù)據(jù)庫
1.3.3常見的非關(guān)系型數(shù)據(jù)庫相比于SQL,NoSQL泛指非關(guān)系型數(shù)據(jù)庫,包括了鍵值型數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、搜索引擎和列存儲等,除此以外還包括圖形數(shù)據(jù)庫。也只有用NoSQL一詞才能將這些技術(shù)囊括進來。1.鍵值型數(shù)據(jù)庫鍵值型數(shù)據(jù)庫通過“Key-Value”鍵值的方式來存儲數(shù)據(jù),其中Key和Value可以是簡單的對象,也可以是復(fù)雜的對象,如右圖所示。Key作為唯一的標(biāo)識符,優(yōu)點是查找速度快,在這方面明顯優(yōu)于關(guān)系型數(shù)據(jù)庫,缺點是無法像關(guān)系型數(shù)據(jù)庫一樣使用條件過濾(比如WHERE),如果不知道去哪里找數(shù)據(jù),就要遍歷所有的鍵,這就會消耗大量的計算。鍵值型數(shù)據(jù)庫典型的使用場景是作為內(nèi)存緩存,Redis是最流行的鍵值型數(shù)據(jù)庫。1.3.3常見的非關(guān)系型數(shù)據(jù)庫2.文檔型數(shù)據(jù)庫此類數(shù)據(jù)庫可存放并獲取文檔,可以是XML、JSON等格式。在數(shù)據(jù)庫中文檔作為處理信息的基本單位,一個文檔就相當(dāng)于一條記錄。文檔數(shù)據(jù)庫所存放的文檔,就相當(dāng)于鍵值數(shù)據(jù)庫所存放的“值”,MongoDB和CouchDB就是文檔型數(shù)據(jù)庫的代表。3.搜索引擎數(shù)據(jù)庫雖然關(guān)系型數(shù)據(jù)庫采用了索引提升檢索效率,但是針對全文索引效率卻較低。搜索引擎數(shù)據(jù)庫是應(yīng)用在搜索引擎領(lǐng)域的數(shù)據(jù)存儲形式,由于搜索引擎會爬取大量的數(shù)據(jù),并以特定的格式進行存儲,這樣在檢索的時候才能保證性能最優(yōu)。核心原理是“倒排索引”。典型產(chǎn)品:Solr、Elasticsearch、Splunk等。1.3.3常見的非關(guān)系型數(shù)據(jù)庫4.列式數(shù)據(jù)庫列式數(shù)據(jù)庫是相對于行式存儲的數(shù)據(jù)庫,Oracle、MySQL、SQLServer等數(shù)據(jù)庫都是采用的行式存儲(Row-based),而列式數(shù)據(jù)庫是將數(shù)據(jù)按照列存儲到數(shù)據(jù)庫中,這樣做的好處是可以大量降低系統(tǒng)的I/O,適合于分布式文件系統(tǒng),不足在于功能相對有限。典型產(chǎn)品:HBase等。5.圖形數(shù)據(jù)庫圖形數(shù)據(jù)庫利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲了實體(對象)之間的關(guān)系。圖形數(shù)據(jù)庫最典型的例子就是社交網(wǎng)絡(luò)中人與人的關(guān)系,數(shù)據(jù)模型主要是以節(jié)點和邊(關(guān)系)來實現(xiàn),特點在于能高效地解決復(fù)雜的關(guān)系問題,如右圖所示。1.3.3常見的非關(guān)系型數(shù)據(jù)庫5.圖形數(shù)據(jù)庫圖形數(shù)據(jù)庫利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲了實體(對象)之間的關(guān)系。圖形數(shù)據(jù)庫最典型的例子就是社交網(wǎng)絡(luò)中人與人的關(guān)系,數(shù)據(jù)模型主要是以節(jié)點和邊(關(guān)系)來實現(xiàn),特點在于能高效地解決復(fù)雜的關(guān)系問題,如右圖所示。圖形數(shù)據(jù)庫顧名思義,是一種存儲圖形關(guān)系的數(shù)據(jù)庫,利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲實體(對象)之間的關(guān)系。關(guān)系型數(shù)據(jù)用于存儲明確關(guān)系的數(shù)據(jù),但對于復(fù)雜關(guān)系的數(shù)據(jù)存儲卻有些力不從心。如社交網(wǎng)絡(luò)中人物之間的關(guān)系,如果用關(guān)系型數(shù)據(jù)庫則非常復(fù)雜,用圖形數(shù)據(jù)庫將非常簡單。典型產(chǎn)品有Neo4J、InfoGrid等。NoSQL的分類很多,即便如此,在DBMS排名中,還是SQL陣營的比重更大,影響力前5的DBMS中有4個是關(guān)系型數(shù)據(jù)庫,而排名前20的DBMS中也有12個是關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫設(shè)計041.4.1信息世界的基本概念從商業(yè)計算機的出現(xiàn)開始,信息處理就一直推動著計算機的發(fā)展。數(shù)據(jù)如何進行自動化的處理也是起于計算機的出現(xiàn),在早期,數(shù)據(jù)存儲和處理是使用我們的磁帶進行存儲,但隨著數(shù)據(jù)量擴大和科技的進步,20世紀(jì)60年代末硬盤的廣泛使用極大地改變了數(shù)據(jù)處理的情況。在1970年,IBM公司的研究院EdgarCodd在CommunicationsofACM上發(fā)表了《ARelationalModelofDataforLargeSharedDataBanks》,因此拉開了關(guān)系型數(shù)據(jù)庫軟件革命的序幕。隨后,Codd在1981年獲得了圖靈獎,以表彰其在數(shù)據(jù)庫管理系統(tǒng)的理論與實踐領(lǐng)域的根本性的,持續(xù)性的貢獻。發(fā)展到目前為止,主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、MySQL、MicrosoftSQLServer、MogDB等多個品種,每種數(shù)據(jù)庫的語法、功能和特性也各具特色。1.4.1信息世界的基本概念數(shù)據(jù)庫中的信息世界主要可以抽象為以下基本概念:實體指客觀存在并且可以相互區(qū)別的事物。實體可以是具體的人、事、物,也可以是抽象的概念或聯(lián)系。例如,一個部門、一個班級、一個老師、一個學(xué)生等都是實體。實體(entity)實體所具有的某一特性稱為實體的屬性。一個實體可由若干個屬性來描述。例如,學(xué)生實體可以用學(xué)號、姓名、性別、身高、出生日期、班號、聯(lián)系電話等屬性來描述。屬性(attribute)唯一標(biāo)識實體的屬性集稱為關(guān)鍵字,也叫主鍵。例如,學(xué)號是學(xué)生實體的關(guān)鍵字。關(guān)鍵字(key)1.4.1信息世界的基本概念屬性的取值范圍稱為該屬性的域。例如,學(xué)生實體的性別屬性的域為(男,女)。域(domain)同型實體的集合稱為實體集。例如,全體學(xué)生就是一個實體集,全體教師也是一個實體集。實體集(entityset)在現(xiàn)實世界中,事物內(nèi)部及事物之間普遍存在聯(lián)系,這些聯(lián)系在信息世界中表現(xiàn)為實體型內(nèi)部各屬性之間的聯(lián)系以及實體型之間的聯(lián)系。兩個實體型之間的聯(lián)系可以分為三類:一對一聯(lián)系(1:1)一對多聯(lián)系(1:n)多對多聯(lián)系(m:n)聯(lián)系(relationship)1.4.2數(shù)據(jù)模型數(shù)據(jù)庫結(jié)構(gòu)的基礎(chǔ)是數(shù)據(jù)模型:一個描述數(shù)據(jù)、數(shù)據(jù)聯(lián)系、數(shù)據(jù)語義以及一致性約束的概念工具的集合。數(shù)據(jù)模型的作用是將用戶數(shù)據(jù)進行有效的組織,使其成為數(shù)據(jù)庫,并能進行訪問和數(shù)據(jù)處理。數(shù)據(jù)模型有很多種,這里介紹常見的四種數(shù)據(jù)模型。1.關(guān)系模型(relationmodel)關(guān)系模型用表的集合來表示數(shù)據(jù)和數(shù)據(jù)間的聯(lián)系。每個表有多個列,每列有唯一的列名。表也稱作關(guān)系。關(guān)系模型是基于記錄的模型的一種?;谟涗浀哪P偷拿Q的由來是數(shù)據(jù)庫是由若干種固定數(shù)目的字段或?qū)傩浴1淼牧袑?yīng)于記錄類型的屬性。關(guān)系數(shù)據(jù)模型是使用最廣泛的數(shù)據(jù)模型,當(dāng)今大量的數(shù)據(jù)庫系統(tǒng)都基于這種關(guān)系模型。1.4.2數(shù)據(jù)模型2.實體-聯(lián)系模型實體-聯(lián)系(E-R)數(shù)據(jù)模型使用稱作實體的基本對象集合,以及這些對象間的聯(lián)系。實體是現(xiàn)實世界中可區(qū)別于其他對象的一件“事情”或一個“物體”。實體-聯(lián)系模型被廣泛用于數(shù)據(jù)庫設(shè)計。3.半結(jié)構(gòu)化數(shù)據(jù)模型半結(jié)構(gòu)化數(shù)據(jù)模型允許在其數(shù)據(jù)定義中某些相同類型的數(shù)據(jù)項含有不同的屬性集。這和前面講到的數(shù)據(jù)模型形成了對比,在數(shù)據(jù)模型中特定類型的每一個數(shù)據(jù)項都必須有相同的屬性集。JSON和可擴展標(biāo)記語言被廣泛地用于表示半結(jié)構(gòu)化數(shù)據(jù)。1.4.2數(shù)據(jù)模型4.基于對象的數(shù)據(jù)模型面向?qū)ο蟮某绦蛟O(shè)計(特別是Java,C++或C#)已經(jīng)成為占主導(dǎo)地位的軟件開發(fā)方法。這在最初的時候?qū)е铝艘粋€獨特的面向?qū)ο髷?shù)據(jù)模型的發(fā)展,但是現(xiàn)在對象的概念已經(jīng)被存放在數(shù)據(jù)庫系統(tǒng)中,并由數(shù)據(jù)庫系統(tǒng)來執(zhí)行它們。這可以看成對關(guān)系模型進行擴展,增加了封裝,方法和對象標(biāo)識等概念。根據(jù)應(yīng)用的目的不同,將數(shù)據(jù)模型分為兩個層次:概念模型結(jié)構(gòu)數(shù)據(jù)模型概念模型(即實體-聯(lián)系模型)是從用戶的角度對信息進行建模。結(jié)構(gòu)數(shù)據(jù)模型(即關(guān)系模型)是從計算機應(yīng)用的角度對數(shù)據(jù)進行建模。1.4.2數(shù)據(jù)模型概念模型一般使用“實體-關(guān)系”(E-R)圖表示,E-R圖中包含了實體、聯(lián)系和屬性三個要素:實體:即數(shù)據(jù)對象,對應(yīng)現(xiàn)實世界中的“事物”。屬性:實體具有的某一特性。聯(lián)系:實體集之間的對應(yīng)關(guān)系。畫E-R圖最重要的三圖素:實體,屬性,聯(lián)系。實體:矩陣框表示,屬性:橢圓形框表示,聯(lián)系:菱形框表示。如右圖所示為班級和學(xué)生的E-R圖。1.4.2數(shù)據(jù)模型將E-R模型中的實體,屬性,實體之間的聯(lián)系轉(zhuǎn)換成關(guān)系模式時,一個實體對應(yīng)一個關(guān)系模式,每個關(guān)系模式內(nèi)需要有主鍵,還有其他必要的屬性,同時還要反映實體之間的聯(lián)系,用外鍵表示,班級和學(xué)生的關(guān)系模式表示如下:學(xué)生表(學(xué)號,姓名,性別,身高,出生日期,班號,聯(lián)系電話)班級表(班號,班級名稱,部門號)其中,學(xué)號是學(xué)生表的主鍵,班號是學(xué)生表的外鍵,學(xué)生表中還需要有姓名,性別,身高,出生日期以及聯(lián)系電話等學(xué)生表必要的屬性。班號是班級表的主鍵,部門號是班級表的外鍵,部門表還需要部門名稱屬性。1.4.3關(guān)系的完整性約束條件關(guān)系完整性約束是為保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,對關(guān)系模型提出的某種約束條件或規(guī)則。完整性通常包括域完整性,實體完整性、參照完整性和用戶定義完整性,其中域完整性,實體完整性和參照完整性,是關(guān)系模型必須滿足的完整性約束條件。1.域完整性域完整性是保證數(shù)據(jù)庫字段取值的合理性,屬性值應(yīng)是域中的值,這是關(guān)系模式規(guī)定了的。除此之外,一個屬性能否為NULL,這是由語義決定的,也是域完整性約束的主要內(nèi)容。域完整性約束(domainIntegrityconstrains)是最簡單、最基本的約束。在當(dāng)今的關(guān)系DBMS中,一般都有域完整性約束檢查功能。1.4.3關(guān)系的完整性約束條件2.實體完整性(Entityintegrity)實體完整性是指關(guān)系的主關(guān)鍵字不能重復(fù)也不能取“空值"。一個關(guān)系對應(yīng)現(xiàn)實世界中一個實體集。現(xiàn)實世界中的實體是可以相互區(qū)分、識別的,也即它們應(yīng)具有某種唯一性標(biāo)識。在關(guān)系模式中,以主關(guān)鍵字作為唯一性標(biāo)識,而主關(guān)鍵字中的屬性(稱為主屬性)不能取空值,否則,表明關(guān)系模式中存在著不可標(biāo)識的實體(因空值是“不確定\"的),這與現(xiàn)實世界的實際情況相矛盾,這樣的實體就不是一個完整實體。按實體完整性規(guī)則要求,主屬性不得取空值,如主關(guān)鍵字是多個屬性的組合,則所有主屬性均不得取空值。3.參照完整性(ReferentialIntegrity)參照完整性是定義建立關(guān)系之間聯(lián)系的主關(guān)鍵字與外部關(guān)鍵字引用的約束條件。關(guān)系數(shù)據(jù)庫中通常都包含多個存在相互聯(lián)系的關(guān)系,關(guān)系與關(guān)系之間的聯(lián)系是通過公共屬性來實現(xiàn)的。所謂公共屬性,它是一個關(guān)系R(稱為被參照關(guān)系或目標(biāo)關(guān)系)的主關(guān)鍵字,同時又是另一關(guān)系K(稱為參照關(guān)系)的外部關(guān)鍵字。如果參照關(guān)系K中外部關(guān)鍵字的取值。1.4.4關(guān)系運算關(guān)系代數(shù)由一組運算組成,這些運算接受一個或兩個關(guān)系作為輸入,并生成一個新的關(guān)系作為它們的結(jié)果。關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果也是關(guān)系,關(guān)系代數(shù)用到的運算符主要包括四類:U(并),-(差),∩(交),X(廣義笛卡爾積)。設(shè)有關(guān)系R,S如下圖所示:關(guān)系R,S進行“并”運算的結(jié)果如下圖所示。1.4.4關(guān)系運算關(guān)系R,S進行“并”運算的結(jié)果如下圖所示。設(shè)有關(guān)系R,S如下圖所示:1.4.4關(guān)系運算關(guān)系R,S進行“差”運算的結(jié)果如下圖所示。關(guān)系R,S進行“交”運算的結(jié)果如下圖所示。1.4.4關(guān)系運算關(guān)系R,S進行“笛卡爾積”運算的結(jié)果如下圖所示。1.4.4關(guān)系運算關(guān)系數(shù)據(jù)庫的數(shù)據(jù)運算符在集合運算符外,還有專門的關(guān)系運算符:σ(選擇),∏(投影),∞(連接)。在本教材即將開發(fā)的數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)中有學(xué)生表tb_student和班級表tb_calss,學(xué)生表的具體字段如下圖所示,有student_id(學(xué)號)、student_name(姓名)、student_gender(性別)、student_height(身高)、student_birthday(出生日期)、class_id(班號)、student_phone(聯(lián)系電話)7個字段。1.4.4關(guān)系運算班級表的具體字段如下圖所示,有class_id(班號)、class_name(班級名稱)、department_id(部門號)三個字段。1.4.4關(guān)系運算選擇運算是單目運算,是從關(guān)系R中找出滿足給定條件F的所有元組,組成一個新關(guān)系。1.選擇運算(σ)【案例1.1】查找姓王的同學(xué)的信息。關(guān)系R為學(xué)生表,條件F為姓王的同學(xué),組成的新的關(guān)系如下圖所示,找到了姓名王一明同學(xué)的全部信息。投影運算是單目運算,關(guān)系R上的投影是從R中選擇出若干屬性列A,刪去重復(fù)元組,組成新的關(guān)系。2.投影運算(∏)1.4.4關(guān)系運算投影運算是單目運算,關(guān)系R上的投影是從R中選擇出若干屬性列A,刪去重復(fù)元組,組成新的關(guān)系。2.投影運算(∏)【案例1.2】查找學(xué)生表中的學(xué)號,姓名信息。關(guān)系R為學(xué)生表,屬性列A為學(xué)生表中的學(xué)號和姓名列,刪除重復(fù)記錄(因?qū)W號是主鍵,要求值不能重復(fù),所以不存在重復(fù)記錄),組成新的關(guān)系,如右圖所示。1.4.4關(guān)系運算連接運算是二目運算,是從兩個關(guān)系的屬性名中選取滿足連接條件的元組,組成新的關(guān)系。3.連接運算(∞)【案例1.3】查找姓王同學(xué)的學(xué)號,姓名和成績。關(guān)系表為學(xué)生表tb_student和tb_grade兩個數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研發(fā)項目績效及激勵制度解析
- 餐廳運營管理成本控制方案
- 工程項目分包協(xié)調(diào)管理辦法
- 貴重物品安全管理制度
- 2026年快消品市場動態(tài)分析方案
- 全球咖啡行業(yè)并購事件分析報告
- 快速銷售的行業(yè)分析報告
- 菊展實施工作方案
- 班級英雄中隊實施方案
- 分析行業(yè)運營管理方案報告
- TCNAS50-2025成人吞咽障礙患者口服給藥護理學(xué)習(xí)解讀課件
- 2024低溫低濁水給水處理設(shè)計標(biāo)準(zhǔn)
- 門窗知識文字培訓(xùn)課件
- 《房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)》解讀
- 2025年國資委公務(wù)員面試熱點問題集錦及答案
- 計算機系大數(shù)據(jù)畢業(yè)論文
- DB50T 1839-2025 合川米粉生產(chǎn)技術(shù)規(guī)程
- 數(shù)值模擬實施方案(3篇)
- 2025年消防巡查員考試題庫
- (2025)版廉政知識測試題庫(含答案)
- JJF(蒙) 055-2023 熱變形、維卡軟化點溫度測定儀校準(zhǔn)規(guī)范
評論
0/150
提交評論