1. 什么是數(shù)據(jù)庫(kù)范式柬泽?為什么要學(xué)習(xí)數(shù)據(jù)庫(kù)范式柱搜?
數(shù)據(jù)庫(kù)范式(database normal form):數(shù)據(jù)庫(kù)表中的屬性要符合某一規(guī)范块茁。
學(xué)習(xí)數(shù)據(jù)庫(kù)范式佣渴,有助于我們?cè)O(shè)計(jì)出合理的數(shù)據(jù)庫(kù)表辫狼。合理的數(shù)據(jù)庫(kù)表,就是在進(jìn)行數(shù)據(jù)庫(kù)操作的時(shí)候辛润,不會(huì)出現(xiàn)刪除膨处、插入、更新等異常。
-
自己的一些想法:
- 在學(xué)習(xí)過(guò)程中真椿, 感覺(jué)滿足數(shù)據(jù)庫(kù)范式的過(guò)程就是一個(gè)拆分表的過(guò)程鹃答。
- 起初數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,可能所有屬性都放在一張表里突硝,肯定會(huì)出現(xiàn)上面所說(shuō)的一些異常錯(cuò)誤测摔。
- 所以我們按照一定的規(guī)則,將表進(jìn)行拆分解恰,使其滿足一定范式锋八,避免異常錯(cuò)誤。
- 但并不是說(shuō)滿足的范式越高护盈,拆分的表越多就越好挟纱,一般情況下,達(dá)到第三范式或BCNF范式即可黄琼。
2. 基本概念:
- 實(shí)體:實(shí)際世界中的的一種事物,可以使真實(shí)的整慎,也可以是虛擬的脏款。往往對(duì)應(yīng)的是數(shù)據(jù)庫(kù)中的一張表
- 屬性:數(shù)據(jù)庫(kù)中的一個(gè)字段(列)
- 元組:數(shù)據(jù)庫(kù)中的一條記錄(行)
- 分量:屬性值
- 碼:通過(guò)實(shí)體中的某個(gè)屬性或?qū)傩约希梢源_定一個(gè)元組裤园,我們便稱其為碼撤师。
- 候選碼:一個(gè)實(shí)體可能有多個(gè)碼,每一個(gè)碼都是候選碼拧揽。
- 主碼:從候選碼中剃盾,選出一個(gè)碼作為主碼。(主鍵)
- 全碼:如果一個(gè)實(shí)體的所有屬性淤袜,作為該元組的主碼痒谴,那么這樣的主碼就是全碼
- 主屬性:被選為碼(主碼+候選碼)的屬性或?qū)傩约?/li>
- 非主屬性:沒(méi)有被選為碼的屬性或?qū)傩约?/li>
- 外碼:若某個(gè)屬性不是作為碼出現(xiàn)的,而是在別的表中作為碼铡羡,則稱其為外碼积蔚。(外鍵)
3. 函數(shù)依賴
- 要想理解數(shù)據(jù)庫(kù)范式首先要清楚函數(shù)依賴的相關(guān)概念。
- 在數(shù)據(jù)庫(kù)設(shè)計(jì)中烦周,實(shí)現(xiàn)范式的過(guò)程尽爆,起始就是一個(gè)消除函數(shù)依賴的過(guò)程。
- 數(shù)據(jù)依賴:在一個(gè)關(guān)系中读慎,通過(guò)屬性值的是否相等漱贱,來(lái)體現(xiàn)數(shù)據(jù)之間的關(guān)系。
- 函數(shù)依賴:設(shè)X夭委,Y是關(guān)系R的屬性集合幅狮,若在任意兩個(gè)元組中,X的值相同,它們的Y值也相同彪笼,則稱Y函數(shù)依賴X钻注,或X函數(shù)決定Y。記作:X-->Y.(個(gè)人感覺(jué)就是一個(gè) y = f(x)的關(guān)系配猫。)
- 部分函數(shù)依賴:設(shè)X,Y是關(guān)系R中的屬性集合幅恋。X`是X的一個(gè)真子集,若X-->Y泵肄,且存在X`-->Y,則稱Y部分函數(shù)依賴于X捆交。
- 存在部分函數(shù)依賴的原因是X是一個(gè)屬性集合。 X集合中的某一個(gè)子集合也能函數(shù)決定Y腐巢。
- 完全函數(shù)依賴:設(shè)X,Y是關(guān)系R的屬性集合品追,X`是X的一個(gè)真子集,若X-->Y冯丙,且不存在X`-->Y肉瓦,則稱Y完全函數(shù)依賴X。
- 傳遞依賴:設(shè)X胃惜,Y泞莉,Z是關(guān)系R的屬性集合,若X-->Y船殉,且Y!-->X,Y-->Z鲫趁,則稱Z傳遞函數(shù)依賴于X。