概述 資料庫(database): 一個相關聯數據的集合。它可以代表現實中某些具體的領域,在邏輯上將相關聯的數據整合起來,從而實現一個具體的目的。 資料庫管理系統(database management system, DBMS): 一個允許用戶進行創建和維護資料庫的程式的集合。它一般是一個通用軟體 ...
概述
資料庫(database): 一個相關聯數據的集合。它可以代表現實中某些具體的領域,在邏輯上將相關聯的數據整合起來,從而實現一個具體的目的。
資料庫管理系統(database management system, DBMS): 一個允許用戶進行創建和維護資料庫的程式的集合。它一般是一個通用軟體系統(general-purpose software system),旨在實現以下過程:
- 定義(defining): 指定數據類型、結構以及約束條件;
- 組織(constructing): 在某種存儲介質中組織、存儲和管理數據;
- 操作(manipulating): 檢索和操作數據;
- 共用(sharing): 多個用戶或多個程式同時使用數據。
常見的幾種關係型資料庫管理系統(relational DBMSs)包括 Oracle, IBM DB2, Microsoft's Access, Microsoft's SQL Server, MySQL, postgreSQL 等等。
資料庫系統(database system): 由資料庫和其管理軟體組成的系統,屬於信息系統的組成成分。它主要提供高效的請求查詢服務以及更新執行服務。
資料庫的發展歷史
- 層次型資料庫(Hierarchical Databases): 最早研製成功的資料庫系統(19世紀60年代),最成功的典型是IMS(Information Management System),由IBM公司研製成功。
- 網狀型資料庫(Network Databases): 層次型資料庫的拓展,從樹狀結構變成網狀結構(19世紀60年代末)。
- 關係型資料庫(Relational Databases): 採用關係模型來組織數組,以行和列的形式存儲數據,以便於用戶理解。
- 面向對象資料庫(Object-Oriented Databases):也稱為對象數據管理系統,出現於19世界80年代,以面向對象編程語言為驅動,如 C++、Java, 用於實現存儲以及共用複雜的結構化對象。
- XML資料庫: 一種支持對 XML 格式文檔進行存儲和查詢等操作的數據管理系統。19世紀90年代 XML 成為 Web 數據交換的標準,該資料庫適用於稀疏數據、深度嵌套數據和混合內容。
- NoSQL資料庫: NoSQL = Not Only SQL。泛指非關係型資料庫,不使用 SQL 作為查詢語言,具有水平可拓展性的特征。自2009年起,在工業上取得重大發展。
使用資料庫的優勢
我們日常工作中,常用的文件管理系統一般採用的是簡單的樹狀結構,存儲大量獨立而不相關的文件。相比而已,資料庫系統從邏輯上將相關文件數據集合起來,統一進行綜合管理。一般來說,資料庫系統在以下幾個環節具備優勢:
- 數據冗餘(Data redundancy): 資料庫系統能把控內部的數據冗餘以確保數據的一致性以及節省存儲空間。
- 數據完整性(Data integrity): 資料庫管理系統能自動補齊一些完整性約束。
- 數據安全(Data security): 資料庫管理系統對數據進行集中管理,能確保資料庫訪問是通過授權的通道進行的。
- 併發事務(Concurrent transactions)
- 備份和恢復服務(Backup and recovery services)
- 數據的獨立性(Data independence)
- 等等。。。。。。
三級ANSI / SPARC體繫結構
美國國家標準協會的電腦與信息處理委員會中的標準計劃與需求委員會(ANSI-SPARC Architecture (American National Standards Institute, Standards Planning And Requirements Committee)提出了資料庫的標準體繫結構,如下圖所示。
該三級體繫結構主要分為:
- 外部模式(External level): 屬於用戶或應用程式視圖,描述應用程式中使用的資料庫的重構部分;
- 概念 / 邏輯模式(Conceptual / logical level): 屬於用戶社區視圖,描述什麼數據存儲在資料庫中以及數據之間的關係(該內容獨立於它們的物理存儲結構);
- 內部模式 (Internal level): 屬於系統實現視圖,描述數據如何存儲在資料庫中(如物理存儲結構)。
在三級體繫結構的基礎上,可以總結出一些派生原則,主要針對的是數據的獨立性。
- 邏輯數據的獨立性(Logical data independence): 無需更改外部模式或應用程式,即可更改概念 / 邏輯模式。
- 如果添加或刪除實體,只引用其餘數據的外部模式不應受到影響。
- 物理數據的獨立性(Physical data independence): 更改內部模式而無需更改概念 / 邏輯模式。
- 如果重新組織了物理文件,不必更改概念 / 邏輯模式。
籠統來講,當模式在某一層發生變化時,下一層的模式保持不變,只更改兩個級別之間的映射。
參考概念
在資料庫操作中會使用到很多數學上的概念以及運算,常用的包括集合(Set)、元組(Tuple)、集合的笛卡爾積(Cartesian Product of Sets)。具體可以參考維基百科上的說明。
集合(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