數據的分類: 結構化數據:有固定的格式,例如一個表格裡面的信息 非結構化數據:無固定格式,例如圖片、網頁、語音、視頻 半結構化數據:html、xml格式的數據 資料庫:存放數據的一個集合,可以是文件的方式,也可以是其他的方式。 資料庫的發展: 萌芽階段:文件系統 使用磁碟文件來存儲數據,比如一個文檔 ...
數據的分類:
-
結構化數據:有固定的格式,例如一個表格裡面的信息
-
非結構化數據:無固定格式,例如圖片、網頁、語音、視頻
-
半結構化數據:html、xml格式的數據
資料庫:存放數據的一個集合,可以是文件的方式,也可以是其他的方式。
資料庫的發展:
- 萌芽階段:文件系統
使用磁碟文件來存儲數據,比如一個文檔裡面存了很多數據內容。
缺點:管理不方便,且容易造成文件的損壞、安全性差。
- 初級階段:第一代資料庫
出現了網狀模型、層次模型的資料庫
- 中級階段:第二代資料庫
關係型資料庫和結構化查詢語言
- 高級階段:新一代資料庫
"關係-對象"型資料庫
相關概念
-
DBMS:Database Management System,資料庫管理系統,就是一個應用軟體,實現對數據的管理。例如mysql、orcler、redis等。
-
Database:資料庫
-
DBA:Database Administrator(DBA)資料庫管理員
-
Application:應用程式,用戶訪問數據不是直接通過DBMS來進行訪問的。通過一些圖形界面軟體等來訪問這些數據。例如京東、淘寶等。
DBMS工作邏輯:數據放在磁碟上,用戶通過工具訪問DBMS,然後DBMS訪問到對應的數據。
資料庫結構:
-
單機架構:資料庫就在一個機器上,只能通過這個機器來操作資料庫,例如access
-
主從架構(C/s):客戶端-伺服器,將要客戶端和伺服器區分開,通過客戶端發送請求來和伺服器交互。
-
分散式架構:把數據分散在多個地方,不是集中在一起。
各種資料庫管理系統:
-
層次結構:按層(樹狀結構)組織數據,容易產生冗餘
-
網狀結構:關係複雜,不容易管理
-
關係型資料庫:RDBMS,
關係型資料庫相關概念:把所有數據放在一張二維表裡面
-
關係:就是一張二維表,
-
行:row,稱為記錄,每一行稱為一條記錄(record)
-
列:column,稱為屬性、欄位或者域(field)
-
主鍵:Primary key,一個或者多個欄位的組合,主鍵不能為空且不能重覆
-
唯一鍵:Unique key, 一個或多個欄位的組合,不能重覆但可以為空
-
域:domain,屬性的取值範圍。
常用的關係型數據據:
-
mysql: MySQL, MariaDB, Percona Server
-
oracle
-
DB2
-
PostgreSQL
實體-聯繫模型E-R:
-
E-R:描述資料庫存儲數據的結構模型
-
實體Entity:用矩形表示,例如課程、班級、學生等
-
屬性Attribute:用橢圓形表示,描述實體的特征
-
聯繫Relationship:實體的屬性之間的關聯規則
E-R模型的聯繫類型:
- 一對一: 假設有兩張表,一張存姓名,另一個存身份證,一個人只能有一個身份證。
- 一對多:假設兩張表部門和員工,一個部門能有多個員工信息。
- 多對多:假設兩張表課程和學上。一個學生能擁有多門課程,一個課程也能被多個學生選擇。
資料庫的操作:
- 增加:Insert
- 刪除:Delete
- 查找:Select
- 修改:Update
資料庫的規範化:
作用:減少數據的冗餘,增進數據的一致性。越高的範式資料庫冗餘越小
-
第一範式(1NF):無重覆列、一列不能有多個值
-
第二範式(2NF):表中的每一條記錄都能被唯一區分(通過主鍵區分),某一個非主鍵的欄位要依賴整個組件,而不能只依賴部分主鍵(多個欄位組成一個逐漸)。
-
第三範式(3NF):非主鍵的欄位之間不能有從屬關係
註意:滿足第一範式的資料庫才能稱為關係資料庫。
SQL
-
SQL:Structure Query Language,結構化查詢語言。SQL配套關係型資料庫使用的。
-
SQL解釋器:將SQL語句解釋成機器語言
-
數據存儲協議:應用層協議,C/S
S:server, 監聽於套接字,接收並處理客戶端的應用請求
C:Client
數據約束:
- 約束:constraint,需要遵守的限制
常見的約束:
-
主鍵:primary key,一個或多個欄位的組合,非空且唯一。
-
唯一鍵:unique key, 一個或者多個欄位的組合
-
非空:not null
-
外鍵:foreign key,用來建立表和表之間的關係。外鍵的欄位依賴於另一張表的欄位。
-
預設:default,預設值
-
檢查:欄位值的一個範圍
主鍵和外鍵的區別:
-
主鍵:primary key
作用:用於惟一地標識表中的某一條記錄,確保每列的原子性。
形式:主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵
其他:建立主鍵會生成唯一索引,一個表只能建一個主鍵。 -
外鍵:foreign key
作用:保持數據一致性,完整性,主要目的是使兩張表形成關聯,並控制存儲在外鍵表中的數據。
形式:建立外鍵的表為“從表”,外鍵依賴的表為“主表”,主表是從表的“外表”
其他:外鍵只能引用外表中的列的值!一個表只能建一個外鍵。
建立外鍵的列,必須是外表的主鍵,並且欄位類型必須一致。
關係運算:
-
選擇:篩選行(記錄)
-
投影;(cut)篩選列
-
連接:表和表之間的關係。比如外鍵。