資料庫知識整理 - 概述、資料模型、三級模式結構
“資料庫”這種東西一點都不酷,龐大而且繁雜,具備高階勸退屬性——第一次接觸它的時候有這種想法一點都不奇怪,但在我們認識它,熟悉它並且使用它之後,就會發現這東西很酷,它可以幫助我們更好地整理大量複雜的資料資訊。雖然資料庫裡的東西多而雜,但東西的擺放並不雜亂。
看到“資料庫”這個名詞,可能很多非計算機專業的同學都準備點右上角的叉叉了_(:з」∠)_還請閣下留步,“資料庫”本身並不是多深奧的概念,而且它在我們的生活中已經隨處可見了,只是大家可能還沒意識到,在我們網購、玩網遊、使用社交軟體的時候,資料庫已經悄悄地發揮了它的作用。
那接下來我們就進入正題嘍~
主要內容
3. 資料庫管理系統(database management system,DBMS)
資料庫系統概述
在系統地學習資料庫之前,我們先來認識四個基本概念:資料、資料庫、資料庫管理系統和資料庫系統。
1. 資料(data)
資料是資料庫中儲存的基本物件,廣義的理解認為資料的種類很多。在遊戲中我們角色的各項能力值、角色技能的演出效果(動畫和音訊),技能傷害的判定以及網購時商品的各類資訊、商家的粉絲數、三項指標(描述相符、服務態度和物流服務)等,這些都可以被稱為資料。判斷的依據就是它是否在描述某樣事物。
有時候資料只是一個簡單的數字,我們還得給它賦予含義,比如各項能力值裡有攻擊力、防禦力、敏捷度等各個數值,技能傷害可以是一般傷害、暴擊傷害、異常狀態傷害等。資料與其語義是密不可分的。
2. 資料庫(database)
存放資料的倉庫,只是這個倉庫在計算機儲存裝置上,而且資料按一定的格式存放。過去人們把資料存放在檔案櫃裡,現在人們可以藉助計算機和資料庫更便捷地管理和利用大量複雜的資料。資料庫資料具有永久儲存、有組織和可共享三個基本特點,具有較小的冗餘度(redundancy)、較高的資料獨立性(data independency)、易擴充套件性(scalability)和資料共享性。
*百科上沒能找到“易擴充套件性”的資料,所以這裡補充一下:由於資料面向整個系統,具有一定的結構,不僅可以被多個應用共享使用,而且容易增添新的應用,這就使得資料庫系統彈性大,易於擴充,能更好滿足不同使用者的需求。
3. 資料庫管理系統(database management system,DBMS)
資料庫管理系統是位於使用者(通過應用程式)與作業系統之間的一層資料管理軟體,可以實現科學地組織和儲存資料,高效地獲取和維護資料。它的主要功能包括以下六個方面:
(1)資料定義:資料定義語言(Data Definition Language,DDL),用於對資料物件的組成和結構進行定義;
(2)資料組織、儲存和管理:提高儲存空間的利用率和資料的存取效率(索引查詢、hash查詢、順序查詢等);
(3)資料操縱:資料操縱語言(Data Manipulation Language,DML),對資料進行查詢、插入、刪除和修改等;
(4)資料庫的事務管理和執行管理:資料庫在建立、運用和維護時,保證資料的安全性、完整性、多使用者對資料的併發使用及故障後的系統恢復,這些都是資料庫管理系統必須提供的資料控制功能;
(5)資料庫的建立和維護:資料庫初始資料的輸入,資料庫的轉儲和恢復,資料庫的重組織和效能監視、分析等;
(6)其他功能:與網路中其他軟體系統的通訊,與另一個資料庫管理系統或檔案系統的資料轉換等。
4. 資料庫系統
資料庫的建立、運用和維護等工作只靠一個資料庫管理系統是遠遠不夠的,還要有專門的人員來完成這些工作,這些人被稱為資料庫管理員(DataBase Administrator,DBA)。資料庫、資料庫管理系統、資料庫管理員和應用程式共同組成了資料庫系統。
資料庫系統的誕生
20世紀50年代後期到60年代中期,作業系統中已經有了專門的資料管理軟體,一般稱為檔案系統。檔案系統實現了對資料的長期儲存和系統管理,但它依舊存在三個明顯的缺點:資料共享性差、冗餘度大、資料獨立性差。
20世紀60年代後期以來,資料量日益繁多複雜,這時候資料庫系統應運而生,一把解決了檔案系統遺留的三個問題。
資料庫系統實現了整體資料的結構化,使資料不再只針對某一個應用,而是面向整個組織或企業,資料結構之間是有聯絡的。說到這裡,我們現在所學的三門專業課,作業系統、資料庫和資料結構已經聯絡起來了。
資料模型
資料庫技術的發展沿著資料模型的主線推進,資料模型是對現實世界資料特徵的抽象,用於描述、組織和運算元據。現有的資料庫均為基於某種資料模型,資料模型是資料庫系統的核心和基礎。
資料模型可分為兩大類:第一類是概念模型,第二類是邏輯模型(層次模型、網狀模型和關係模型等)和物理模型。
資料模型的三個組成要素:資料結構、資料操作和資料的完整性約束條件。(這三個要素會在後續內容中說明)
1. 概念模型
概念模型是現實世界到機器世界的一箇中間層次——資訊世界,主要用於設計資料庫。
基本概念:
(1)實體(entity):客觀世界具體存在的人事物或抽象的概念和聯絡。比如一個學生、學生的一次選課、學生與學院的關係等;
(2)屬性(attribute):實體所具有的某一特性。一個實體可以通過多個屬性來描述;
(3)碼(key):唯一標識實體的屬性(集)。比如學號是學生實體的碼;
(4)實體型(entity type):實體名(屬性1,屬性2,...)。如:學生(學號,姓名,性別,出生年月);
(5)實體集(entity set):同一型別實體的集合稱為實體集。全體學生就是一個實體集;
(6)聯絡(relationship):實體內部的聯絡通常指屬性間的聯絡,而實體之間的聯絡通常指不同實體集之間的聯絡(一對一、一對多和多對多)。
2. 層次模型
層次模型是資料庫系統中最早出現的資料模型,採用樹型資料結構來表示各類實體以及實體間的聯絡,層次資料庫系統以層次模型作為資料的組織方式。(以後可能會挖個新坑來寫資料結構的東西_(:з」∠)_)
層次模型(還有網狀模型)中的每個結點稱為一個記錄型別(實體),記錄型別中的資料稱為欄位(屬性)。
層次模型的基本特點是,任何一個給定的記錄值只能按其層次路徑檢視,沒有一個子女記錄值能夠脫離雙親記錄值而獨立存在。
層次模型的資料操縱主要有查詢、插入、刪除和更新。
進行插入操作時,如果沒有相應的雙親記錄值就不能插入它的子女記錄值。進行刪除操作時,如果刪除雙親記錄值,相應的子女記錄值也將同時被刪除。在進行資料操縱時遵循的規則就是完整性約束條件。
優點:
(1)資料結構比較簡單清晰;
(2)查詢效率高。DBMS(資料庫管理系統)中常常用指標來實現記錄間的聯絡,這種聯絡亦是記錄之間的存取路徑;
(3)提供了良好的完整性支援。
缺點:
(1)現實中許多聯絡是非層次性的,結點間的多對多聯絡不適合用層次模型表示;
(2)一個結點具有多個雙親結點時,只能通過引入冗餘資料(易產生不一致性)或引入虛擬結點(建立非自然的資料結構);
(3)無法單獨查詢子女結點。
因此,層次模型更適合“一對多”的情況。
3. 網狀模型
網狀模型採用圖型資料結構來表示各類實體以及實體間的聯絡,層次模型實際上是特殊的網狀模型。
優點:
(1)能夠更直接地描述現實世界,如一個結點可以有多個雙親,結點之間可以有多種聯絡;
(2)存取效率較高。
缺點:
(1)結構過於複雜,不利於終端使用者掌握;
(2)網狀模型的DDL(資料定義語言)和DML(資料操縱語言)複雜,並且要嵌入某一種高階語言,使用者不易掌握;
(3)由於記錄之間的聯絡通過存取路徑實現,所以應用程式訪問資料時必須選擇適合的存取路徑,這就要求使用者必須瞭解系統結構的細節,加重了敲程式碼的負擔。
層次模型和網狀模型統稱為格式化模型。格式化模型的資料庫系統在20世紀70年代至80年代非常流行,但由於它們在使用和實現上都要涉及資料庫物理層的複雜結構,現在已逐漸被關係模型的資料庫系統取代。
4. 關係模型
關係模型是最重要的一種資料模型(也是這一系列的主要講述物件)。關聯式資料庫系統採用關係模型作為資料的組織方式。
每個關係的資料結構就是一張規範化二維表。
學號 | 姓名 | 年齡 | 性別 | 系名 | 年級 |
20190301 | 歐陽 | 18 | 男 | 數技 | 2019 |
20190305 | 翠花 | 19 | 女 | 數技 | 2019 |
20190316 | 小嚶 | 18 | 女 | 數藝 | 2019 |
... | ... | ... | ... | ... | ... |
下面介紹關係模型中的重要術語
(1)關係(relation):一個關係對應一張二維表;
(2)元祖(tuple):表中的一行即為一個元祖;
(3)屬性(attribute):表中的一列即為一個屬性,表中的6列分別對應6個屬性;
(4)碼(key):表中的某個屬性(組),它可以唯一確定一個元組。如學號可以唯一確定一個學生,所以它是本關係的碼;
(5)域(domain):屬性的取值範圍來自某個域;
(6)分量:元組中的一個屬性值;
(7)關係模式:關係名(屬性1,屬性2,...)。如學生(學號,姓名,年齡,性別,系名,年級)。
關係模型要求關係必須是規範化的,關係中的每一個分量必須是不可分的資料項。
關係模型的資料操縱主要包括查詢、插入、刪除和更新資料,這些操作必須滿足關係的完整性約束條件。關係的完整性約束條件包括三大類:實體完整性、參照完整性和使用者定義的完整性。
優點:
(1)與格式化模式不同,它建立在嚴格的數學概念基礎上;
(2)關係模型的概念單一,使用者易懂易用;
(3)關係模型的存取路徑對使用者透明,從而具有更高的資料獨立性和安全保密性,簡化了程式猿的工作和資料庫的開發建立工作。
雖然關係模型深受使用者歡迎,但它仍舊存在缺點。由於存取路徑對使用者是隱蔽的,查詢效率往往不如格式化資料模型。不過查詢請求是可以優化的,使用者不必考慮這些細節問題。
資料庫系統的三級模式結構
模式(schema)是資料庫中全體資料的邏輯結構和特徵的描述,只涉及“型”的描述不涉及具體的“值”。模式的具體值稱為模式的例項(instance),同一個模式可以有很多例項。
模式是相對穩定的,而例項是相對變動的。模式反映的是資料的結構及其聯絡,而例項反映的是資料庫某一時刻的狀態。
資料庫系統的三級模式結構是指資料庫系統是由外模式、模式和內模式三級構成。
(1)模式(schema):邏輯模式,是資料庫中全體資料的邏輯結構和特徵的描述,是所有使用者的公共資料檢視。
(2)外模式(external schema):子模式(subschema)或使用者模式,它是資料庫使用者能夠看見和使用的區域性資料的邏輯結構和特徵的描述。
外模式通常是模式的子集,一個資料庫可以有多個外模式。對於模式中同一資料,外模式中的結構、型別、長度、保密級別都可以不同。
每個使用者只能看見和訪問外模式中的資料,所以外模式是保證資料庫安全性的一個有力措施。
(3)內模式(internal schema):儲存模式(storage schema),一個資料庫只有一個內模式,它是資料物理結構和儲存方式的描述,是資料在資料庫內部的組織方式。
資料庫系統中位於三級模式之間的兩層映像:外模式/模式映像和模式/內模式映像。
目前我們只需要知道外模式/模式映像保證了資料與程式的邏輯獨立性,而模式/內模式映像保證了物理獨立性。
資料與程式之間的獨立性使資料的定義和描述可以從應用程式分離出去,資料的存取由DBMS管理,簡化了應用程式的編制,大大減少了程式碼的維護和修改。
資料庫的使用者
這裡的使用者指終端使用者(end user)。終端使用者通過應用系統的使用者介面使用資料庫。常用的介面方式有瀏覽器、選單驅動、表格操作、圖形顯示、報表書寫等。
終端使用者分為以下三類:
(1)偶然使用者。這類使用者不常訪問資料庫,但每次訪問往往需要不同的資料庫資訊;
(2)簡單使用者。多數終端使用者為簡單使用者,其主要工作是查詢和更新資料庫,一般都是通過應用程式猿精心設計並具有良好介面的應用程式存取資料庫;
(3)複雜使用者。具有較高科學技術背景的人員,能夠直接使用資料庫語言訪問資料庫,甚至基於DBMS的應用程式介面編制直接的應用程式。
(筆者現為大二學生,“資料庫知識整理”系列的內容大部分參考自教材《資料庫系統概論(第5版)》)
相關文章
- Java 資料庫知識整理Java資料庫
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 資料庫基礎知識整理與複習總結資料庫
- 達夢資料庫基礎知識(二)資料庫邏輯結構資料庫
- 達夢資料庫基礎知識(一)資料庫物理儲存結構資料庫
- 資料結構小白系列之資料結構概述資料結構
- 資料結構相關知識資料結構
- 資料庫相關知識點(秋招整理)資料庫
- mysql資料庫學習基礎知識整理MySql資料庫
- 夯實基礎系列三:資料庫知識總結資料庫
- 【資料結構】樹的基本知識資料結構
- 【資料結構篇】認識資料結構資料結構
- 資料結構筆記——概述資料結構筆記
- 資料結構-各知識點連結整合資料結構
- 知識分享--資料庫資料庫
- MySQL資料庫知識MySql資料庫
- 資料結構知識框架【超詳細】資料結構框架
- 公共基礎知識-資料結構-樹資料結構
- mysql資料庫-資料結構MySql資料庫資料結構
- 【整理】資料結構——題目資料結構
- 資料庫升級-物理重新整理資料字典資料庫
- Redis概述及基本資料結構Redis資料結構
- 資料庫概述資料庫
- 資料結構知識點--儲存結構與邏輯結構資料結構
- js資料型別重要知識整理JS資料型別
- 【知識詳解】資料庫(秋招總結)資料庫
- MySQL資料庫基本知識MySql資料庫
- 資料庫基礎知識資料庫
- 資料庫理論知識資料庫
- database資料庫的資料結構Database資料庫資料結構
- 初級資料結構資料結構
- 資料結構(初級)資料結構
- 資料結構初識資料結構
- 資料結構與演算法——概述資料結構演算法
- 資料結構 - 概述及其術語資料結構
- 聊聊圖資料庫和圖資料庫的小知識資料庫
- 中級JAVA程式設計師應該掌握的資料結構知識Java程式設計師資料結構
- 2031資料庫概述資料庫