正規化
這裡我只說說第一,第二和第三正規化,因為目前接觸到的專案,感覺滿足第三正規化就可以了。
首先是第一正規化,第一正規化是資料庫表必須滿足的最低要求,簡單的說,就是你的表如果連第一正規化都不能滿足,那就不是乙個資料庫的表了。所謂第一正規化是指,你的資料庫中表的字段都必須是乙個不可分割的屬性字段。例如下表:
這個表中的研究生欄位有兩個值,它就不滿足第一正規化,他可以分割成如下表的形式:
分割之後的上表就是滿足第一正規化的表,這個比較簡單,相信大家都能理解。
其次是第二正規化,我覺得要理解第二正規化首先要理解乙個概念,那就是
主關鍵字(主鍵)
。主關鍵字
是從表的
候選關鍵字
中挑選出來的,作為表的行的唯一標識乙個欄位或多個字段。所謂
候選關鍵字
,是指乙個屬性集,這個屬性集能夠唯一確定表中的一行,但是去掉任何乙個屬性之後,就無法唯一確定表中的一行,一般來說,表中只有乙個候選關鍵字,也有可能有多個候選關鍵字的情況,這個時候就從多個候選關鍵字中挑選出乙個關鍵字作為主關鍵字。至於挑選的原則,這個應該沒有規定,我覺得一般都是挑選屬性少,型別簡單的作為主關鍵字。
理解了主關鍵字,再來看第二正規化,第二正規化是建立在你的表已經滿足了第一正規化的基礎上的。第二正規化首先要求你要有主關鍵字,其次要求你的所有非主關鍵字的屬性都必須是
完全依賴
於主關鍵字。所謂
完全依賴
就是,你的表中的某個非關鍵字屬性不能由主關鍵字中的一部分屬性。如果主關鍵字中去掉乙個或幾個屬性也能唯一確定某個非關鍵字屬性,那就是不滿足第二正規化,必須要把這個屬性和它依賴的部分單獨劃分成乙個新錶。
然後是第三正規化,
第三正規化也是建立在滿足第二正規化的基礎上的。第三正規化要求你的表中不能包含其他表中的非關鍵字資訊。簡單來說,第三正規化的目的就是防止資料冗餘,你在其他表的非關鍵字資訊欄位中已經儲存的資訊,不能在另乙個表中再儲存一遍。當然,外來鍵不算,外來鍵包含的是其它表的主鍵。
外來鍵
所謂外來鍵,簡單來說就是表
a的主鍵
k,與表
b中的屬性集
k相對應,那麼這時
k就是表
b的外建。表
a被稱為主表,也稱為目標關係或被參照關係,表
b被稱為從表,亦被稱為參照關係。其中
需要注意的是,k
和f的屬性名稱可以不同,但是型別必須相同。
另乙個需要注意的問題設f
是基本關係
r的乙個或一組屬性,
但不是關係的鍵,ks
是基本關係
s的主鍵。如果f與
ks相對應,則稱f是
r的外來鍵,並稱基本關係r為
參照關係
,基本關係
s為被參照關係或目標關係。
從上面定義的紅色字型可以看出,這個定義上說的外來鍵不是從表的鍵,那麼我產生了乙個問題,那就是從表的外來鍵可不可以也是從表的主鍵,最後我得出的結論是可以的,所以上面我給的定義中,並沒有標明屬性集k是
b上圖中,表
2的學號既是對應表
1的外來鍵,也是表的主鍵。
外來鍵的作用
了解了外來鍵的概念,或許你還是很糊塗,外來鍵到底是幹嘛的,為什麼要設定外來鍵。
簡而言之,外來鍵的作用就是保持資料庫表中的資料的
完整性和一致性
,主要目的是使兩表形成關聯,以便於控制從表中的資料。
為什麼要控制呢
,例如上圖中,如果我在表
2中插入了一條新資料,其中學好為
20150222222
,這個學號在表
1中不存在。這顯然是不合理的,你學校的資料庫沒有擁有這個學號的學生,卻有這個學好的成績。還有如果你在表
1中刪除了一行資料,代表這個學生已經不再我學校中了,但是表
2中卻還有這個同學的成績,這顯示也是不合理的,這就是資料庫中的資料不完整了。
那麼如何控制呢
,有兩種方式,分別是級聯執行和阻止執,其中級聯執行,主要是針對主表的操作會在從表中進行相應的操作:
阻止執行
級聯執行
兩種方法提供給使用者選擇。無論選取哪種方法,從表裡都不會有多餘行。從另乙個角度理解,用拒絕同一事物在從表中的標誌與主表不一致來實現與主表中的標誌一致。
設定級聯,是在從表設定外來鍵的時候進行的,設定的語法cascade為級聯執行、restrict為阻止執行。例如:
級聯執行:
foreign key(id) references outtable(id) on deletecascade on update cascade);
資料庫 超鍵 候選鍵 主鍵 外來鍵
首先看看各種鍵的定義 超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 候選鍵 candidate key 不含有多餘屬性的超鍵稱為候選鍵 主鍵 primary key 使用者選作元組標識的乙個候選鍵程式主鍵 外來鍵 foreign key 如果關係模式r1中的某屬性集不是...
資料庫 超鍵 候選鍵 主鍵 外來鍵
超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 候選鍵 candidate key 不含有多餘屬性的超鍵稱為候選鍵 主鍵 primary key 使用者選作元組標識的乙個候選鍵成為主鍵 外來鍵 foreign key 如果關係模式r1中的某屬性集不是r1的主鍵,而是另乙個...
Dongle 資料庫 超鍵 候選鍵 主鍵 外來鍵
最近做試題的時候,遇到資料關係中的各種鍵 超鍵 候選鍵 主鍵 外來鍵 理解,發現自己能理解,但是和小夥伴講總是講不到點上,故而下來又重新總結了一番,相信下面的總結能對您認識資料庫關係有一定幫助 超鍵 superkey 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 候選鍵 candidatekey...