MySQL(一) 正規化

2021-09-25 05:12:17 字數 2573 閱讀 9197

四、啟動和退出

1、ddl(data definition language):資料庫定義語言

2、dml(date manipulation language):資料操控語言

3、dcl(data control language):資料控制語言

名詞概念

實體現實世界中客觀存在並可以被區別的事物。比如「乙個學生」、「一本書」、「一門課」等。注意:這裡所說的「事物」不僅僅是看得見摸得著的「東西」,也可以是虛擬的,比如說「老師與學校的關係」。

屬性教科書上解釋為:「實體所具有的某一特性」,由此可見,屬性一開始是個邏輯概念,比如說,「性別」是「人」的乙個屬性。在關聯式資料庫中,屬性又是個物理概念,屬性可以看作是「表的一列」。

元組表中的一行就是乙個元組。

分量元組的某個屬性值。在乙個關聯式資料庫中,它是乙個操作原子,即關聯式資料庫在做任何操作的時候,屬性是「不可分的」,否則就不是關聯式資料庫了。

碼(鍵)

表中可以唯一確定乙個元組的某個屬性(或者屬性組),如果這樣的碼有不止乙個,那麼大家都叫候選碼(候選鍵),從候選碼中挑乙個出來做老大,它就叫主碼(主鍵)。

全碼如果乙個碼包含了所有的屬性,這個碼就是全碼。

主屬性乙個屬性只要在任何乙個候選碼**現過,這個屬性就是主屬性。

非主屬性

與上面相反,沒有在任何候選碼**現過,這個屬性就是非主屬性。

外碼乙個屬性(或屬性組),它不是碼,但是它別的表的碼,它就是外碼。

我們首先來了解下面幾個概念

完全函式依賴

傳遞函式依賴

1、第一正規化(1nf)

在任何乙個關聯式資料庫中,第一正規化是對關係模式的基本要求,不滿足第一正規化的資料庫就不是關聯式資料庫。
所謂第一正規化(1nf)是指資料庫表的每一列(即每個屬性)都是不可分割的基本資料項(每一列保持原子特徵),同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。

簡而言之,第一正規化就是無重複的列。

學生表學號姓名

年齡位址

01張三

18xx省xx市xx區xx大學

因為上表中位址資訊還包含省市區可以拆分,所以不屬於第一正規化

拆分改造後:

學生表(學號、使用者名稱、性別、年齡、位址id)

位址表(位址id、省、市、區)

拆成上述學生表和位址表就變成第一正規化咯

2、第二正規化(2nf)

第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。

屬性完要全依賴於主鍵(針對聯合主鍵 -> 消除部分依賴)

在1nf基礎上,非主屬性完全依賴於主鍵,如果不是依賴主鍵,應該拆分成新的主體,拆分成一對多的關係。

也就是說第二正規化需要確保資料庫表中每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。

例子

學生選課表(學生id、學生姓名、學生性別、課程名稱、課程成績)

主鍵(學生id、課程名稱)

學生姓名→學生id (部分依賴)

學生性別→學生id (部分依賴)

課程成績→(學生id、課程名稱)(完全依賴)

拆分改造後:

學生表(學生id、學生姓名、學生性別) 主鍵:學生id

課程成績表(課程id、課程名字、學生id、成績) 主鍵:課程id

3、第三正規化(3nf)

在2nf基礎上,屬性不依賴於其他非主屬性(消除傳遞依賴)

例子

學生表(學生id、學生姓名、學生性別、學院名稱、學院**)

主鍵:學生id

學生姓名-》學生id

學生性別-》學生id

學院名稱-》學生id

學院** -》 學生id -》查詢學院-》查詢學院**

拆分改造後:

學生表:(學生id、學生姓名、學生性別、學院id)主鍵:學生id

學院表:(學院id、學院名稱、學院**) 主鍵:學院id

4、總結
1nf:確保每列保持原子性
資料庫正規化的優點:資料庫正規化的缺點:ps:正規化不是越高越好,一般滿足3nf即可!1、啟動

連線前服務端必須要啟動

mysql -u *** -p ***

mysql:代表客戶端命令

-u 後面跟使用者名稱

-p 後面跟使用者密碼

2、退出

退出使用者端登入: exit

mysql 反正規化 mysql 正規化和反正規化

第一正規化 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。第二正規化 2nf 首先是 2nf,另外包含兩部分內容一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。第三正規化 3nf 首先是 2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。...

mysql 正規化化 MySQL 正規化和反正規化

1.第一正規化 1nf 列不能再拆分 原子性,字段不可分 列的資訊 只要是關係型資料庫,就自動滿足1nf 2.第二正規化 2nf 主鍵唯一,且被依賴 在第一正規化基礎上建立的,即滿足第二正規化的必須先滿足第一正規化。要求db表中的每個例項或行必須可以被唯一區分,通常設計乙個主鍵來實現,其他屬性完全依...

mysql的正規化 Mysql正規化與反正規化的利弊

mysql正規化與反正規化的利弊 一 三大正規化 第一正規化 1nf是對屬性的原子性,要求屬性具有原子性,不可再分解 第一正規化是最基本的正規化。如果資料庫表中的所有字段值都是不可分解的原子值,就說明該資料庫表滿足了第一正規化。資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原...