通俗易懂SQL server 中的三大正規化

2021-10-01 09:12:17 字數 815 閱讀 8882

一:第一正規化:

官方定義: 資料庫表中的所有欄位都是單一屬性,不可再分的。強調的是列的原子性。

白話:每一列都有自己的屬性說明,誰也幫不了誰,誰幹誰的活。清晰明了。

二:第二正規化

官方定義:一是表必須有乙個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。 

白話:資料庫表中有倆種身份 一種是主人 一種是僕人  僕人服務於主人。

例子:學生表中姓名、成績、名次     這樣一看就知道  姓名是主人  成績和名次是僕人 服務於說明主人的資訊

三:第三正規化

官方定義:所有非主屬性對任何候選關鍵字都不存在傳遞依賴

白話:有的時候欄位有倆種身份既是主人又是僕人。   

就是說我的僕人只服務於我  即使我是別人的僕人  我的僕人也不需要去服務我的主人

例子:學生表中姓名、成績、名次、聯絡**  但是聯絡**現在需求有手機和固定**倆種 這樣一來本來聯絡**只是個僕人

結果自己現在又是主人了,因為有倆個僕人需要服務聯絡**。這個時候聯絡**需要建一張主人表,然後讓倆個僕人服務。

那麼如果說表的字段變成   姓名、成績、名次、手機**、固定** 第一正規化是ok的

但是很顯然的是 手機**、固定**的主人 是聯絡**  而聯絡**的主人是姓名

這樣相當於越級了,所以呢怎麼辦 在開個主人表 也就是聯絡**的 主人表

這個聯絡**表 擁有 主鍵id  手機**  固定**

原來學生表還是  姓名、成績、名次、聯絡**

總結來說就是  僕人永遠要服務於自己的主人  主人需要擁有自己的表  當然自己的主人也可以是別人的僕人 這就跟你無關了

通俗易懂SQL server 中的鎖

之前講了資料庫中的事務,為了讓事務順利執行,就有了鎖?1 什麼是鎖?顧名思義,就是防止保護被偷東西,那麼在資料庫中就是防止資料被偷也就是 資料不完整。2 為什麼要用鎖?因為有些時候會出錯,要保證資料正常不出現問題就需要鎖。既然是防止資料被偷,那麼什麼情況下資料 會變得不完整呢?一下就是錯誤例項 在多...

通俗易懂SQL server 中的索引

一 什麼是索引?資料庫索引其實就是類似目錄的乙個東西,搜尋的時候能夠引導你更好更快的查出來。主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 二 為什麼要用索引?好的索引會讓資料查詢效率提高百倍,所以必要的情況下需要使用索引來提高速度。三 怎麼使用索引?1 索引...

SQLSERVER通俗易懂的連線查詢 聯合查詢

最近有好多小夥伴對連線查詢有很多的疑問,當然包括初學者和工作幾年的老鳥 首先建立兩個表,學生和班級表,乙個班級對應多個學生 新建學生表 select into student from select 1 as id 張三 as name 18 as age,1 as classid union se...