模式(SCHEMA)是對數據庫內的數據描述(列和表),以及任何相關對象和各種連接方式的描述。
1 外鍵
外鍵是表中的某一列,它引用用另一個表的主鍵
關於外鍵:
(1)外鍵可能與它引用的主鍵名稱不同
(2)外鍵使用的主鍵也稱爲父鍵,主鍵所在的表又稱爲父表
(3)外鍵能用於確認一張表中的行與另一表中的行相對應
(4)外鍵的值可以值NULL,即使主鍵值不可爲NULL
(5)外鍵值不需要唯一,事實上,外鍵通常不唯一
外鍵爲NULL,表示在父表中沒有相符的主鍵,要確認外鍵包含意義、已存儲在父表中,可以通過約束實現。
插入外鍵列的值必須已經存在父表的來源表中,這是引用完整性。
創建外鍵的方法:
方法一:
create table emp(
emp_id char(8) primary key,
emp_name char(30)
);
create table salary(
id char(8),
salary float,
foreign key (id) references emp (emp_id)
);
方法二:
alter table TABLE_NAME
add constraint FK_TABLE_NAME
foreign key (AA) references TABLE_NAME2 (AA);
2 表與表之間的關係
表間的關係:一對一、多對一、多對多
連接表(junction table):遇到多對多關係,可以在中間新建表以滿足範式的要求,減少重複數據。
組合鍵由多個列組成的主鍵。
3 函數依賴
當某列的數據必須隨着另一列的數據的改變而改變時,表示第一列函數依賴於第二列。
部分函數依賴指非主鍵的列依賴於組合主鍵的某個部分(但不是完全依賴於組合主鍵)
傳遞函數依賴指如果改變任何非鍵列可能造成其他列的改變
4 範式
第一範式(1NF)
規則1:每個數據行必須包含具有原子性的值
規則2:每個數據行必須有獨一無二的識別項——主鍵
第二範式(2NF)
規則1:先符合1NF
規則2:沒有部分函數依賴性
只要所有列都是主鍵的一部分或者表中有唯一主鍵列符合1NF的表也符合2NF
第三範式(3NF)
規則1:符合2NF
規則2:沒有傳遞函數依賴性