概述
數(shù)據(jù)庫(kù)(database): 一個(gè)相關(guān)聯(lián)數(shù)據(jù)的集合勃黍。它可以代表現(xiàn)實(shí)中某些具體的領(lǐng)域懦砂,在邏輯上將相關(guān)聯(lián)的數(shù)據(jù)整合起來(lái)姐扮,從而實(shí)現(xiàn)一個(gè)具體的目的抬探。
數(shù)據(jù)庫(kù)管理系統(tǒng)(database management system, DBMS): 一個(gè)允許用戶進(jìn)行創(chuàng)建和維護(hù)數(shù)據(jù)庫(kù)的程序的集合子巾。它一般是一個(gè)通用軟件系統(tǒng)(general-purpose software system),旨在實(shí)現(xiàn)以下過(guò)程:
- 定義(defining): 指定數(shù)據(jù)類型、結(jié)構(gòu)以及約束條件线梗;
- 組織(constructing): 在某種存儲(chǔ)介質(zhì)中組織匿醒、存儲(chǔ)和管理數(shù)據(jù);
- 操作(manipulating): 檢索和操作數(shù)據(jù)缠导;
- 共享(sharing): 多個(gè)用戶或多個(gè)程序同時(shí)使用數(shù)據(jù)。
常見(jiàn)的幾種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(relational DBMSs)包括 Oracle, IBM DB2, Microsoft's Access, Microsoft's SQL Server, MySQL, postgreSQL 等等溉痢。
數(shù)據(jù)庫(kù)系統(tǒng)(database system): 由數(shù)據(jù)庫(kù)和其管理軟件組成的系統(tǒng)僻造,屬于信息系統(tǒng)的組成成分。它主要提供高效的請(qǐng)求查詢服務(wù)以及更新執(zhí)行服務(wù)孩饼。
數(shù)據(jù)庫(kù)的發(fā)展歷史
層次型數(shù)據(jù)庫(kù)(Hierarchical Databases): 最早研制成功的數(shù)據(jù)庫(kù)系統(tǒng)(19世紀(jì)60年代)髓削,最成功的典型是IMS(Information Management System),由IBM公司研制成功镀娶。
網(wǎng)狀型數(shù)據(jù)庫(kù)(Network Databases): 層次型數(shù)據(jù)庫(kù)的拓展立膛,從樹狀結(jié)構(gòu)變成網(wǎng)狀結(jié)構(gòu)(19世紀(jì)60年代末)。
關(guān)系型數(shù)據(jù)庫(kù)(Relational Databases): 采用關(guān)系模型來(lái)組織數(shù)組梯码,以行和列的形式存儲(chǔ)數(shù)據(jù)宝泵,以便于用戶理解。
面向?qū)ο髷?shù)據(jù)庫(kù)(Object-Oriented Databases):也稱為對(duì)象數(shù)據(jù)管理系統(tǒng)轩娶,出現(xiàn)于19世界80年代儿奶,以面向?qū)ο缶幊陶Z(yǔ)言為驅(qū)動(dòng),如 C++鳄抒、Java, 用于實(shí)現(xiàn)存儲(chǔ)以及共享復(fù)雜的結(jié)構(gòu)化對(duì)象。
XML數(shù)據(jù)庫(kù): 一種支持對(duì) XML 格式文檔進(jìn)行存儲(chǔ)和查詢等操作的數(shù)據(jù)管理系統(tǒng)棒口。19世紀(jì)90年代 XML 成為 Web 數(shù)據(jù)交換的標(biāo)準(zhǔn)保屯,該數(shù)據(jù)庫(kù)適用于稀疏數(shù)據(jù)、深度嵌套數(shù)據(jù)和混合內(nèi)容贤重。
NoSQL數(shù)據(jù)庫(kù): NoSQL = Not Only SQL茬祷。泛指非關(guān)系型數(shù)據(jù)庫(kù),不使用 SQL 作為查詢語(yǔ)言并蝗,具有水平可拓展性的特征牲迫。自2009年起,在工業(yè)上取得重大發(fā)展借卧。
使用數(shù)據(jù)庫(kù)的優(yōu)勢(shì)
我們?nèi)粘9ぷ髦许镌鳎S玫奈募芾硐到y(tǒng)一般采用的是簡(jiǎn)單的樹狀結(jié)構(gòu),存儲(chǔ)大量獨(dú)立而不相關(guān)的文件铐刘。相比而已陪每,數(shù)據(jù)庫(kù)系統(tǒng)從邏輯上將相關(guān)文件數(shù)據(jù)集合起來(lái),統(tǒng)一進(jìn)行綜合管理。一般來(lái)說(shuō)檩禾,數(shù)據(jù)庫(kù)系統(tǒng)在以下幾個(gè)環(huán)節(jié)具備優(yōu)勢(shì):
- 數(shù)據(jù)冗余(Data redundancy): 數(shù)據(jù)庫(kù)系統(tǒng)能把控內(nèi)部的數(shù)據(jù)冗余以確保數(shù)據(jù)的一致性以及節(jié)省存儲(chǔ)空間挂签。
- 數(shù)據(jù)完整性(Data integrity): 數(shù)據(jù)庫(kù)管理系統(tǒng)能自動(dòng)補(bǔ)齊一些完整性約束。
- 數(shù)據(jù)安全(Data security): 數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行集中管理盼产,能確保數(shù)據(jù)庫(kù)訪問(wèn)是通過(guò)授權(quán)的通道進(jìn)行的饵婆。
- 并發(fā)事務(wù)(Concurrent transactions)
- 備份和恢復(fù)服務(wù)(Backup and recovery services)
- 數(shù)據(jù)的獨(dú)立性(Data independence)
等等。戏售。侨核。。灌灾。搓译。
三級(jí)ANSI / SPARC體系結(jié)構(gòu)
美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)的計(jì)算機(jī)與信息處理委員會(huì)中的標(biāo)準(zhǔn)計(jì)劃與需求委員會(huì)(ANSI-SPARC Architecture (American National Standards Institute, Standards Planning And Requirements Committee)提出了數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)體系結(jié)構(gòu),如下圖所示锋喜。
該三級(jí)體系結(jié)構(gòu)主要分為:
- 外部模式(External level): 屬于用戶或應(yīng)用程序視圖些己,描述應(yīng)用程序中使用的數(shù)據(jù)庫(kù)的重構(gòu)部分;
- 概念 / 邏輯模式(Conceptual / logical level): 屬于用戶社區(qū)視圖嘿般,描述什么數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中以及數(shù)據(jù)之間的關(guān)系(該內(nèi)容獨(dú)立于它們的物理存儲(chǔ)結(jié)構(gòu))段标;
- 內(nèi)部模式 (Internal level): 屬于系統(tǒng)實(shí)現(xiàn)視圖,描述數(shù)據(jù)如何存儲(chǔ)在數(shù)據(jù)庫(kù)中(如物理存儲(chǔ)結(jié)構(gòu))炉奴。
在三級(jí)體系結(jié)構(gòu)的基礎(chǔ)上怀樟,可以總結(jié)出一些派生原則,主要針對(duì)的是數(shù)據(jù)的獨(dú)立性盆佣。
- 邏輯數(shù)據(jù)的獨(dú)立性(Logical data independence): 無(wú)需更改外部模式或應(yīng)用程序往堡,即可更改概念 / 邏輯模式。
如果添加或刪除實(shí)體共耍,只引用其余數(shù)據(jù)的外部模式不應(yīng)受到影響虑灰。
- 物理數(shù)據(jù)的獨(dú)立性(Physical data independence):?更改內(nèi)部模式而無(wú)需更改概念 / 邏輯模式。
如果重新組織了物理文件痹兜,不必更改概念 / 邏輯模式穆咐。
籠統(tǒng)來(lái)講,當(dāng)模式在某一層發(fā)生變化時(shí)字旭,下一層的模式保持不變对湃,只更改兩個(gè)級(jí)別之間的映射。
參考概念
在數(shù)據(jù)庫(kù)操作中會(huì)使用到很多數(shù)學(xué)上的概念以及運(yùn)算遗淳,常用的包括集合(Set)拍柒、元組(Tuple)、集合的笛卡爾積(Cartesian Product of Sets)屈暗。具體可以參考維基百科上的說(shuō)明拆讯。
集合(Set)
https://zh.wikipedia.org/wiki/%E9%9B%86%E5%90%88_(%E6%95%B0%E5%AD%A6)
https://en.wikipedia.org/wiki/Set_(mathematics)
元組
https://zh.wikipedia.org/wiki/%E5%A4%9A%E5%85%83%E7%BB%84
https://en.wikipedia.org/wiki/Tuple
笛卡爾積
https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%84%BF%E7%A7%AF
https://en.wikipedia.org/wiki/Cartesian_product