[關系數據庫](https://zh.wikipedia.org/wiki/%E5%85%B3%E7%B3%BB%E6%95%B0%E6%8D%AE%E5%BA%93)
關系數據庫(英語:Relational database),是創建在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。關系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。現如今雖然對此模型有一些批評意見,但它還是數據存儲的傳統標準。標準數據查詢語言SQL就是一種基于關系數據庫的語言,這種語言執行對關系數據庫中數據的檢索和操作。
關系模型由關系數據結構、關系操作集合、關系完整性約束三部分組成。
## 實體關系模型
實體關系模型(Entity-Relationship Model),簡稱E-R Model,是陳品山(Peter P.S Chen)博士于1976年提出的一套數據庫的設計工具,他運用真實世界中事物與關系的觀念,來解釋數據庫中的抽象的數據架構。實體關系模型利用圖形的方式(實體-關系圖(Entity-Relationship Diagram))來表示數據庫的概念設計,有助于設計過程中的構思及溝通討論。
## 關系操作
關系模塊中常用的操作包括:
**數據查詢**
* 選擇
* 投影
* 連接
* 并
* 交
* 差
* 除
**數據操作**
* 插入
* 刪除
* 修改
* 查詢
## 完整性約束
完整性約束包括:
* 實體完整性
* 參照完整性
* 用戶定義完整性
## 關系數據語言SQL
SQL(Structured Query Language)語言是1974年由Boyce和Chamberlin提出的一種介于關系代數與關系演算之間的結構化查詢語言,是一個通用的、功能極強的關系性數據庫語言。
## 模式結構
* 外模式
* 模式
* 內模式
表
視圖
索引
## 全關系系統十二準則
全關系系統應該完全支持關系模型的所有特征。關系模型的奠基人埃德加·科德具體地給出了全關系系統應遵循的基本準則。
0. 準則0
一個關系形的關系數據庫系統必須能完全通過它的關系能力來管理數據庫。
1. 準則1 信息準則
關系數據庫系統的所有信息都應該在邏輯一級上用表中的值這一種方法顯式的表示。
2. 準則2 保證訪問準則
依靠表名、主碼和列名的組合,保證能以邏輯方式訪問關系數據庫中的每個數據項。
3. 準則3 空值的系統化處理
全關系的關系數據庫系統支持空值的概念,并用系統化的方法處理空值。
4. 準則4 基于關系模型的動態的聯機數據字典
數據庫的描述在邏輯級上和普通數據采用同樣的表述方式。
5. 準則5 統一的數據子語言
一個關系數據庫系統可以具有幾種語言和多種終端訪問方式,但必須有一種語言,它的語句可以表示為嚴格語法規定的字符串,并能全面的支持各種規則。
6. 準則6 視圖更新準則
所有理論上可更新的視圖也應該允許由系統更新。
7. 準則7 高級的插入、修改和刪除操作
系統應該對各種操作進行查詢優化。
8. 準則8 數據的物理獨立性
無論數據庫的數據在存儲表示或存取方法上作任何變化,應用程序和終端活動都保持邏輯上的不變性。
9. 準則9 數據邏輯獨立性
當對基本關系進行理論上信息不受損害的任何改變時,應用程序和終端活動都保持邏輯上的不變性。
10. 準則10 數據完整的獨立性
關系數據庫的完整性約束條件必須是用數據庫語言定義并存儲在數據字典中的。
11. 準則11 分布獨立性
關系數據庫系統在引入分布數據或數據重新分布時保持邏輯不變。
12. 準則12 無破壞準則
如果一個關系數據庫系統具有一個低級語言,那么這個低級語言不能違背或繞過完整性準則。
- 數據庫
- CAP定理
- 關系模型
- 關系數據庫
- NoSQL
- ODBC
- JDBC
- ODBC、JDBC和四種驅動類型
- mysql
- 安裝與配置
- CentOS 7 安裝 MySQL
- 優化
- 比較全面的MySQL優化參考
- 1、硬件層相關優化
- 1.1、CPU相關
- 1.2、磁盤I/O相關
- 2、系統層相關優化
- 2.1、文件系統層優化
- 2.2、其他內核參數優化
- 3、MySQL層相關優化
- 3.1、關于版本選擇
- 3.2、關于最重要的參數選項調整建議
- 3.3、關于Schema設計規范及SQL使用建議
- 3.4、其他建議
- 后記
- Mysql設計與優化專題
- ER圖,數據建模與數據字典
- 數據中設計中的范式與反范式
- 字段類型與合理的選擇字段類型
- 表的垂直拆分和水平拆分
- 詳解慢查詢
- mysql的最佳索引攻略
- 高手詳解SQL性能優化十條經驗
- 優化SQL查詢:如何寫出高性能SQL語句
- MySQL索引原理及慢查詢優化
- 數據庫SQL優化大總結之 百萬級數據庫優化方案
- 數據庫性能優化之SQL語句優化1
- 【重磅干貨】看了此文,Oracle SQL優化文章不必再看!
- MySQL 對于千萬級的大表要怎么優化?
- MySQL 數據庫設計總結
- MYSQL性能優化的最佳20+條經驗
- 數據操作
- 數據語句操作類型
- DCL
- 修改Mysql數據庫名的5種方法
- DML
- 連接
- 連接2
- DDL
- 數據類型
- 字符集
- 表引擎
- 索引
- MySQL理解索引、添加索引的原則
- mysql建索引的幾大原則
- 淺談mysql的索引設計原則以及常見索引的區別
- 常用工具簡介
- QA
- MySQL主機127.0.0.1與localhost區別總結
- 視圖(view)
- 觸發器
- 自定義函數和存儲過程的使用
- 事務(transaction)
- 范式與反范式
- 常用函數
- MySQL 數據類型 詳解
- Mysql數據庫常用分庫和分表方式
- 隔離級別
- 五分鐘搞清楚MySQL事務隔離級別
- mysql隔離級別及事務傳播
- 事務隔離級別和臟讀的快速入門
- 數據庫引擎中的隔離級別
- 事務隔離級別
- Innodb中的事務隔離級別和鎖的關系
- MySQL 四種事務隔離級的說明
- Innodb鎖機制:Next-Key Lock 淺談
- SQL函數和存儲過程的區別
- mongo
- MongoDB設置訪問權限、設置用戶
- redis
- ORM
- mybatis
- $ vs #
- mybatis深入理解(一)之 # 與 $ 區別以及 sql 預編譯
- 電商設計
- B2C電子商務系統研發——概述篇
- B2C電子商務系統研發——商品數據模型設計
- B2C電子商務系統研發——商品模塊E-R圖建模
- B2C電子商務系統研發——商品SKU分析和設計(一)
- B2C電子商務系統研發——商品SKU分析和設計(二)
- 數據庫命名規范--通用