數據庫管理系統:DBMS
Database Management System
數據庫也是一段大型的管理程序,實現數據(高效存取)管理;專用於爲某一項目或某一方案使用數據集合即爲數據庫php
層次模型:與應用程序耦合度太高,不利於使用
網狀模型:
關係模型:關係是指表之間
行、列:二維關係表,行爲數據,列爲字段
事務、範式(下降存儲空間的浪費,卻增長多張表之間的關係,浪費服務器的讀寫和計算能力)
對象-關係模型:python
Sybase, Infomix, Oracle
PostgreSQL, MySQL, MariaDB, Sqlitemysql
MySQL, MariaDBsql
SQL: Structured Query Lanague
CREATE
DROP
ALTER
INSERT
SELECT
UPDATE
DELETE數據庫
事務:(多個語句綁成一個操做視爲事務,在一個操做完成前第二個操做必須等待)
A:原子性,多個操做都完成纔算結束
C:一致性,事務的部分操做結果寫入數據庫中,則庫的狀態就是不一致,數據庫必須一致性狀態
I:隔離性,多個事務必須隔離開不能同時操做
D:持久性,保證數據一旦修改能長久保存硬盤中編程
RDMBS設計範式基礎概念服務器
設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,這些不一樣的規範要求被稱爲不一樣的範式,各類範式呈遞次規範,越高的範式數據庫冗餘越小。數據結構
目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴德斯科範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多規範要求的稱爲第二範式(2NF),其他範式以次類推。通常說來,數據庫只需知足第三範式(3NF)就好了。多線程
(第1範式) 字段不可分割;
(第2範式) 應該擁有主鍵;
(第3範式) 表間不能擁相同的非主鍵字段;ide
約束:constraint
主鍵約束:新插入行的(單個字段或者字段集合)不能同已存行的,非空的必須字段賦值;(Not Null);一張表只能有一個唯一鍵;primary key
唯一鍵約束:不能同已有數據;一張表上能夠存在多個唯一鍵;unique key
外鍵約束:表之間對應字段間的約束關係;foreign key,該字段的值必須在另外個表上存在且爲另外表的主鍵
檢查性約束:自定義的表達式約束;
索引:將表中一個或多個字段抽取出來,按特定數據結構從新組織和存放的數據;(方便了讀操做,多了寫操做)
關係運算:
選擇和投影
選擇:挑選行;
投影:挑選字段;
選擇和投影沒必要同時進行
鏈接:當字段的值相等數據,鏈接表之間
RDBMS的管理結構:
C/S
Client:客戶端程序(GUI, CLI)、應用編程接口(API);
mysql客戶端mysql進程, php-mysqlphp鏈接mysq的組件, python-MySQL
Server:DBMS (監聽在套接字上,接收、處理並響應客戶端請求);
mysqld
mysql --> mysql protocol --> mysqld
mysql單進程多線程方式,全部客戶端都鏈接mysql單進程下的線程
數據抽象:
物理層:決定的數據的存儲格式,即RDBMS在磁盤上如何組織文件;(系統工程師)
邏輯層:描述DB中存儲什麼數據,以及數據間存在什麼樣的關係;(數據庫DBA)
視圖層:描述DB中的部分數據;(開發人員)
數據模型的分類: 關係模型 實體-關係模型 基於對象的數據模型 半結構化數據模型