資料庫三大正規化以及外來鍵多表設計

2021-09-11 03:13:34 字數 1637 閱讀 1908

1nf:無重複的列.表中的每一列都是不可分割的基本資料項.不滿足1nf的資料庫不是關聯式資料庫.

如聯絡人表(姓名,**),乙個聯絡人有家庭**和公司**,則不符合1nf,應拆分為(姓名,家庭**,公司**).

2nf:屬性完全依賴於主鍵.不能存在僅依賴於關鍵一部分的屬性.

如選課關係(學號,課程名稱,成績,學分),組合關鍵字(學號,課程名稱)作為主鍵.其不滿足2nf,因為存在決定關係:課程名稱->學分,即存在組合主鍵中的部分字段決定非主屬性的情況.會導致資料冗餘,更新/插入/刪除異常.

3nf:屬性不傳遞依賴於其它非主屬性.非主鍵列必須直接依賴於主鍵,而不能傳遞依賴。即不能是:非主鍵a依賴於非主鍵b,非主鍵b依賴於主鍵.

如學生表(學號,姓名,學院編號,學院名稱),學號是主鍵,姓名、學院編號、學院名稱都完全依賴於學號,滿足2nf,但不滿足3nf,因為學院名稱直接依賴的是學院編號 ,它是通過傳遞才依賴於主鍵.

正規化可以避免資料冗餘,減少資料庫的空間,減輕維護資料完整性的麻煩.但等級越高的正規化設計出來的表越多,可能會增加查詢所需時間.當我們的業務所涉及的表非常多,經常會有多表連線,並且我們對錶的操作要時間上要盡量的快,這時可以考慮我們使用「反正規化」.也就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯.

查詢記錄時,正規化模式往往要進行多表連線,而反正規化只需在同一張表中查詢,當資料量很大的時候,顯然反正規化的效率會更好。

反正規化有很多重複的資料,會占用更多的記憶體,查詢時可能會較多地使用droup by或distinct等耗時耗效能的關鍵字。

當要修改更新資料時(例如修改accounting部門的領導為russell),正規化更靈活,而反正規化要修改全部的資料,且易出錯。

多表設計:

多對一:

在多對一的情況下則在「多」的一方那個表參照」一「的那個表,也就是說在」多「的那個表設計乙個外來鍵關聯」一「的那個表。

一對一:

而一對一的這種情況,是隨意的~那個表參照哪個表都是沒有所謂的。

多對多:

多對對建表原則:建立第三張表(中間表)在中間表中至少兩個字段,這兩個字段分別指向多對多兩個表的主鍵。(中間表和這兩張表都是一對多關係)

外來鍵約束:

mysql 下,外來鍵設定:

on delete 規則:

1、cascade:級聯

(1)所謂的級聯刪除,就是刪除主鍵表的同時,外來鍵表同時刪除。

(2)以上面的例子將就是,假如院系表中的某個院系被刪除了,那麼在學生表中要想查詢這個被刪除的院系號所對應的院資訊就會報錯,因為已經不存在這個系了,所以,刪除院系表(主鍵表)時必須刪除其他與之關聯的表,這裡就說明了外來鍵的作用,保持資料的一致性、完整性。當然反過來講,你刪除學生表中的記錄,並不影響院系表中的資料,你查詢院系號也能正確查詢。所以刪除外來鍵表中的資料並不影響主鍵表。

2、no action(非活動,預設)、restrict:約束/限制

當取值為no action或者restrict時,則當在主鍵表中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許刪除。(即外來鍵表約束主鍵表)

3、set null

當取值為set null時,則當在主鍵表中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則設定子表中該外鍵值為null(,一樣是外來鍵表約束主鍵表,不過這就要求該外來鍵允許取null)。

原文:

資料庫設計三大正規化資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

MySQL多表 外來鍵 資料庫設計

2.多表關係設計 3.多表查詢 3.1.2 外連線查詢 3.1.3 各種連線方式的總結 4.子查詢 subquery 5.資料庫設計 5.2 資料庫反三正規化 員工表中有乙個欄位dept id 與部門表中的主鍵對應,員工表的這個欄位就叫做 外來鍵 擁有外來鍵的員工表 被稱為 從表 與外來鍵對應的主鍵...

資料庫表外來鍵的設計和資料庫三正規化

擁有外來鍵的表是子表,主鍵被其他表引用的表是父表 因為父表的標識被很多子表中的記錄引用,所以叫父表。擁有外來鍵關係,並且可以隨便刪除資料,不影響其他表的資料的那個表叫子表。使用的時候誰做為誰的外來鍵,主要從以下兩點考慮 1,刪除是如何相互影響的,刪除記錄受約束的那個是父表,不受約束的那個是子表 2,...