淺談一下數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展與組成
1. 數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展
數(shù)據(jù)庫(kù)的發(fā)展主要經(jīng)歷了3個(gè)階段:
1.1 人工管理階段
1950年以前,計(jì)算機(jī)主要用于科學(xué)計(jì)算,并不擅長(zhǎng)保存數(shù)據(jù),而且當(dāng)時(shí)計(jì)算機(jī)的硬件和軟件都很落后,科學(xué)家對(duì)數(shù)據(jù)的管理基本都是通過(guò)人工管理的方式
這個(gè)階段的數(shù)據(jù)管理特點(diǎn)主要有:
- 數(shù)據(jù)不保存
- 數(shù)據(jù)不共享
- 數(shù)據(jù)不具有獨(dú)立性
- 使用應(yīng)用程序管理數(shù)據(jù)
1.2 文件系統(tǒng)階段
1960年左右,計(jì)算機(jī)的軟件和硬件都有了較大的發(fā)展,有了磁盤等存儲(chǔ)設(shè)備和專門管理數(shù)據(jù)的軟件
該階段的數(shù)據(jù)管理有以下特點(diǎn):
- 數(shù)據(jù)可以長(zhǎng)期保存
- 由文件系統(tǒng)管理數(shù)據(jù)
- 共享性差、數(shù)據(jù)冗余大
- 數(shù)據(jù)獨(dú)立性差
1.3 數(shù)據(jù)庫(kù)階段
二十世紀(jì)60年代后,計(jì)算機(jī)逐漸應(yīng)用于管理系統(tǒng),而且規(guī)模越來(lái)越大,應(yīng)用越來(lái)越廣,數(shù)據(jù)量也急劇增長(zhǎng),對(duì)數(shù)據(jù)共享的要求越來(lái)越強(qiáng)烈,使得簡(jiǎn)單的文件系統(tǒng)不能滿足用戶的需求,于是出現(xiàn)了數(shù)據(jù)庫(kù)系統(tǒng)來(lái)統(tǒng)一管理數(shù)據(jù)。數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn),滿足了多用戶、多應(yīng)用共享數(shù)據(jù)的需求,比文件系統(tǒng)具有明顯的優(yōu)點(diǎn),標(biāo)志著數(shù)據(jù)管理技術(shù)的飛躍。
1.4 大數(shù)據(jù)階段
這個(gè)階段主要是以一些分布式的數(shù)據(jù)倉(cāng)庫(kù)作為數(shù)據(jù)管理的工具,這里就不給與詳細(xì)介紹了。
2 數(shù)據(jù)庫(kù)系統(tǒng)的組成
數(shù)據(jù)庫(kù)系統(tǒng)(database system,DBS) 是采用數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng),是由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)管理員、支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)的硬件和軟件組成,主要結(jié)構(gòu)如下:
2.1 數(shù)據(jù)模型的概念
數(shù)據(jù)模型主要是toenail描述數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系、數(shù)據(jù)的語(yǔ)義、數(shù)據(jù)一致性約束的概念性工具的集合,是數(shù)據(jù)庫(kù)系統(tǒng)的核心。 數(shù)據(jù)模型主要是由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)完整性約束3部分構(gòu)成,具體含義如下:
- 數(shù)據(jù)結(jié)構(gòu):是對(duì)系統(tǒng)靜態(tài)特征的描述、描述對(duì)象包括數(shù)據(jù)的類型、內(nèi)容、性質(zhì)、和數(shù)據(jù)之間的相互關(guān)系。
- 數(shù)據(jù)操作:是對(duì)系統(tǒng)動(dòng)態(tài)特征的描述、是對(duì)數(shù)據(jù)庫(kù)各種對(duì)象實(shí)例的操作。
- 完整性約束:是完整性規(guī)則的集合,它定義了給定數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則。
2.2 數(shù)據(jù)模型的種類
常見(jiàn)的數(shù)據(jù)模型主要有層次模型、網(wǎng)狀模型和關(guān)系模型,具體解釋如下:
1.層次模型:
層次模型用樹狀結(jié)構(gòu)表示實(shí)體類型及其實(shí)體間聯(lián)系的數(shù)據(jù)模型。該結(jié)構(gòu)有以下特點(diǎn):
(1)每棵樹有且僅有一個(gè)無(wú)雙親節(jié)點(diǎn),稱為根。
(2)樹中除根外所有節(jié)點(diǎn)有且僅有一個(gè)雙親。
2.網(wǎng)狀模型:
用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用網(wǎng)狀模型編寫應(yīng)用程序及其復(fù)雜,數(shù)據(jù)的獨(dú)立性較差。
關(guān)系模型:
以二維來(lái)描述。關(guān)系模型中,每個(gè)表有多個(gè)字段列和記錄行,每個(gè)字段列有固定的屬性(數(shù)字、字符、日期等),關(guān)系模型數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰、具有很高的數(shù)據(jù)獨(dú)立性,是目前主流的數(shù)據(jù)模型。
關(guān)系數(shù)據(jù)模型的基本術(shù)語(yǔ)如下:
(1)關(guān)系:一個(gè)二維表就是一個(gè)關(guān)系
(2)元組:二維表中的一行就是一個(gè)元組,即表中的記錄
(3)屬性:二維表中的一列,用類型和值表示
(4)域:每個(gè)屬性取值的變化范圍,如性別的域?yàn)閧男,女}。
關(guān)系中的數(shù)據(jù)約束如下:
(1)實(shí)體完整性約束:約束關(guān)系的主鍵中屬性值不能為空值
(2)參照完整性約束:關(guān)系之間的基本約束
(3)用戶定義的完整性約束:反應(yīng)了具體應(yīng)用中數(shù)據(jù)的語(yǔ)義要求。
2.3 關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化
關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論為:關(guān)系數(shù)據(jù)庫(kù)中的每一個(gè)關(guān)系都要滿足一定的規(guī)范。根據(jù)滿足規(guī)范的條件不同,可以分為5個(gè)等級(jí):1NF,2NF,3NF,BCNF,4NF,5NF。
一般情況下,數(shù)據(jù)庫(kù)滿足三范式就可以滿足需求了,下面介紹一下最基礎(chǔ)的三范式。
2.3.1 第一范式
在一個(gè)關(guān)系中,消除重復(fù)字段,且各字段都是最小的邏輯存儲(chǔ)單位。第一范式是第二和第三范式的基礎(chǔ),是最基本的范式
第一范式的原則如下:
(1)數(shù)據(jù)組的每一個(gè)屬性都只包含一個(gè)值
(2)關(guān)系中的每個(gè)數(shù)組必須包含相同數(shù)量的值
(3)關(guān)系中的每個(gè)數(shù)組一定不能相同
在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第一范式是最基本的要求,不滿足第一范式的數(shù)據(jù)庫(kù)就不是關(guān)系數(shù)據(jù)庫(kù)。由此可見(jiàn)第一范式具有不可再分解的原子特性。
2.3.2 第二范式
第二范式是在第一范式的基礎(chǔ)上建立起來(lái)的,即滿足第二范式必須先滿足第一范式,第二范式要求數(shù)據(jù)庫(kù)匯總的每一個(gè)實(shí)體(即每個(gè)記錄行)必須可以被唯一地區(qū)分?;蛘哒f(shuō)要求實(shí)體的屬性完全依賴于主關(guān)鍵字,不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在部分依賴的話,需要將這個(gè)屬性與主關(guān)鍵字分離出來(lái)形成一個(gè)新的實(shí)體。
2.3.3 第三范式
第三范式是在第二范式的基礎(chǔ)上建立起來(lái)的,即滿足第三范式必須先滿足第二范式,第三范式要求關(guān)系表中不存在非關(guān)鍵字列中對(duì)任意候選關(guān)鍵字列的傳遞函數(shù)依賴,也就是說(shuō),第三范式要求一個(gè)關(guān)系表中不包含已在氣壓表中包含的非主關(guān)鍵字信息。
所謂傳遞函數(shù)依賴,就是指如果存在關(guān)鍵字a決定非關(guān)鍵字b,而非關(guān)鍵字段b,決定非關(guān)鍵字段c,則稱非關(guān)鍵字段c傳遞依賴于關(guān)鍵字a。
2.4 關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)原則
數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,根據(jù)用戶的需求,利用數(shù)據(jù)模型和應(yīng)用程序模擬現(xiàn)實(shí)中該應(yīng)用環(huán)境的數(shù)據(jù)結(jié)構(gòu)和處理活動(dòng)的過(guò)程。
數(shù)據(jù)庫(kù)設(shè)計(jì)原則如下:
(1)數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)文件的數(shù)據(jù)組織應(yīng)該獲得最大限度的共享、最小冗余、消除數(shù)據(jù)及數(shù)據(jù)依賴關(guān)系中的冗余部分,使依賴于同一個(gè)數(shù)據(jù)模型的數(shù)據(jù)達(dá)到有效的分離。
(2)保證輸入輸出、修改數(shù)據(jù)的一致性與正確性
(3)保證數(shù)據(jù)與使用數(shù)據(jù)的應(yīng)用程序之間的高度獨(dú)立性。
以上這些特點(diǎn),需要涉及到數(shù)據(jù)庫(kù)中一個(gè)概念:事物 事務(wù)是邏輯上的一組數(shù)據(jù)庫(kù)操作,要么都執(zhí)行,要么都不執(zhí)行。事務(wù)在數(shù)據(jù)庫(kù)中就是一個(gè)基本的工作單位,事務(wù)中包含的邏輯操作(SQL 語(yǔ)句),只有兩種情況:成功和失敗。
事物有4個(gè)特性:
- 原子性(Atomicity ):一個(gè)事務(wù)是一個(gè)不可再分割的整體,要么全部成功,要么全部失敗
- 一致性(Consistency ):一個(gè)事務(wù)可以讓數(shù)據(jù)從一種一致?tīng)顟B(tài)切換到另一種一致性狀態(tài)
- 隔離性(Isolution ):一個(gè)事務(wù)不受其他事務(wù)的影響,并且多個(gè)事務(wù)彼此隔離
- 持久性(Durability ):一個(gè)事務(wù)一旦被提交,在數(shù)據(jù)庫(kù)中的改變就是永久的,提交后就不能再回滾
2.5 數(shù)據(jù)庫(kù)概念設(shè)計(jì)
概念設(shè)計(jì)是一個(gè)構(gòu)建概念數(shù)據(jù)模型的過(guò)程,這個(gè)概念數(shù)據(jù)模型在抽象的高層建模;需要足夠簡(jiǎn)單且通常是圖形化的;并且能夠用于與非技術(shù)用戶交流數(shù)據(jù)庫(kù)的需求。這里使用 ==ER 模型(實(shí)體關(guān)系模型)==來(lái)實(shí)現(xiàn)概念設(shè)計(jì)。 實(shí)體主要是指客觀存在并且客相互區(qū)分的事物,實(shí)體既可以是實(shí)際事物,也可以是抽象的概念或者關(guān)系。實(shí)體之間一般有3種對(duì)應(yīng)關(guān)系:
- 一對(duì)一:是指表a中的一條記錄在表b中有且只有一條相匹配的記錄。
- 一對(duì)多:表a中的行可以在表b中找到多行進(jìn)行匹配,但是表b的行在表a中只有一個(gè)能匹配。
- 多對(duì)多:每個(gè)表中的行在相關(guān)表中具有多個(gè)匹配行,一般情況下,多對(duì)多的關(guān)系是通過(guò)創(chuàng)建第三個(gè)表實(shí)現(xiàn)表之間關(guān)系的連接。
3. 數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)
3.1 數(shù)據(jù)庫(kù)的三級(jí)模式
三級(jí)模式是指:模式、外模式、內(nèi)模式
- 模式:迷失也稱為邏輯模式或者概念模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式,模式處于三級(jí)結(jié)構(gòu)中間。
- 外模式:也稱為用戶模式,是數(shù)據(jù)庫(kù)用戶(包含應(yīng)用程序猿和最終用戶)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。外模式是模式的子集,一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式。
- 內(nèi)模式:也稱為存儲(chǔ)模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。
到此這篇關(guān)于淺談一下數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展與組成的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫(kù)系統(tǒng)概念內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧
數(shù)據(jù)庫(kù)的設(shè)計(jì)方法、規(guī)范與技巧...2007-03-0390%程序員面試會(huì)遇到的索引優(yōu)化問(wèn)題
不管是用C/C++/Java等代碼編寫的程序,還是SQL編寫的數(shù)據(jù)庫(kù)腳本,都存在一個(gè)持續(xù)優(yōu)化的過(guò)程。也就是說(shuō),代碼優(yōu)化對(duì)于程序員來(lái)說(shuō),是一個(gè)永恒的話題。下面這篇文章主要給大家總結(jié)介紹了90%程序員在面試的時(shí)候會(huì)遇到的索引優(yōu)化問(wèn)題,需要的朋友可以參考下。2017-11-11使用Navicat工具比對(duì)兩個(gè)數(shù)據(jù)庫(kù)所有表結(jié)構(gòu)的差異案例詳解
這篇文章主要介紹了如何使用Navicat工具對(duì)比兩個(gè)數(shù)據(jù)庫(kù)test_old和test_new,并生成相應(yīng)的DDL?SQL語(yǔ)句,以便將test_old升級(jí)到和test_new一致的狀態(tài),需要的朋友可以參考下2025-02-02免費(fèi)開源數(shù)據(jù)庫(kù):SQLite、MySQL和PostgreSQL的優(yōu)缺點(diǎn)
對(duì)于處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問(wèn)的場(chǎng)景,MySQL和PostgreSQL更適合,SQLite在小型應(yīng)用程序或嵌入式設(shè)備中是一種輕量級(jí)、簡(jiǎn)單和易于使用的選擇,根據(jù)具體的應(yīng)用需求和場(chǎng)景特點(diǎn),選擇合適的開源關(guān)系型數(shù)據(jù)庫(kù)可以提供更好的性能、可擴(kuò)展性和靈活性2024-02-02淺談為什么數(shù)據(jù)庫(kù)字段建議設(shè)置為NOT NULL
本文主要介紹了MySQL數(shù)據(jù)庫(kù)中將字段設(shè)置為NOT NULL的性能和優(yōu)缺點(diǎn),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12mysql與MongoDB性能對(duì)比,哪個(gè)更適合自己
經(jīng)常看到有人討論,mongodb性能不如MySQL,MySQL能不能代替之類的說(shuō)法?,其實(shí)作為技術(shù)人,很不喜歡哪個(gè)比哪個(gè)好這種說(shuō)法,基本就是挑事,我們今天一起2023-06-06Mssql,Access的sql經(jīng)典SQL語(yǔ)句大全
常用不常用的一些sql語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)操作不是很熟練的朋友可以查詢2012-03-03IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解
這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫(kù)并行更新問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Beekeeper?Studio開源數(shù)據(jù)庫(kù)管理工具比Navicat更炫酷
這篇文章主要為大家介紹了一款界面更炫酷的開源數(shù)據(jù)庫(kù)管理工具Beekeeper?Studio比Navicat更好用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06