多表之間的關(guān)系
- 分類
- 一對(duì)一
如:人與身份證 - 一對(duì)多
如:部門與員工 - 多對(duì)多
如:學(xué)生課程
- 實(shí)現(xiàn)方式
- 一對(duì)多:在多的一方建立外鍵马篮,指向一的一方的主鍵美旧。
- 多對(duì)多:多對(duì)多關(guān)系的實(shí)現(xiàn)需要借助第三張中間表困檩。中間表至少包含兩個(gè)字段四瘫,這兩個(gè)字段作為第三張表的外鍵捶索,分別指向兩張表的主鍵
- 一對(duì)一:可以在任意一方添加外鍵指向另一方的主鍵,且給外鍵添加唯一約束
- 案例
班級(jí)與學(xué)生(一對(duì)多)
學(xué)生與課程(多對(duì)多)
①班級(jí)表
CREATE TABLE class(
cid INT,
name VARCHAR(20));
②學(xué)生表
CREATE TABLE student(
id int PRIMARY KEY,
NAME VARCHAR(10),
cid INT,
CONSTRAINT cls_stu FOREIGN KEY (cid) REFERENCES class(cid));
③課程表
create TABLE course(
id INT PRIMARY KEY,
name VARCHAR(20)
);
④為實(shí)現(xiàn)學(xué)生與課程多對(duì)多關(guān)系的中間表
create TABLE m_student_course(
sid int,
cid int,
PRIMARY KEY (sid,cid),-- 聯(lián)合主鍵
CONSTRAINT tostudent FOREIGN KEY (sid) REFERENCES student(id),
CONSTRAINT tocourse FOREIGN KEY (cid) REFERENCES course(id)
);
范式
- 分類
①第一范式(1NF):每一列都是不可分割的原子數(shù)據(jù)項(xiàng)
②第二范式(2NF):在1NF的基礎(chǔ)上董朝,非碼屬性必須完全依賴于候選碼(消除非主屬性對(duì)主碼的部分函數(shù)依賴)
③第三范式(3NF):在2NF的基礎(chǔ)上鸠项,任何非主屬性不依賴于其他非主屬性(消除傳遞依賴) - 概念:
①函數(shù)依賴:A-->B,如果通過(guò)A屬性(屬性組)的值子姜,可以唯一確定B屬性的值祟绊,稱B依賴于A
②完全函數(shù)依賴:A-->B,如果A是一個(gè)屬性組哥捕,而B(niǎo)屬性值的確定需要依賴于A屬性組中所有的屬性
③部分函數(shù)依賴:A-->B牧抽,如果A是一個(gè)屬性組,而B(niǎo)屬性值的確定只需要依賴于A屬性組的某些值
④傳遞函數(shù)依賴:A-->B遥赚,B-->C如果通過(guò)A屬性可以確定唯一B的值扬舒,通過(guò)B屬性可以確定唯一C的值,稱C傳遞依賴于A
⑤碼:如果在一張表中凫佛,一個(gè)屬性或?qū)傩越M讲坎,被其他所有屬性所完全依賴,則稱這個(gè)屬性(屬性組)為該表的碼
⑥主屬性:碼屬性組中所有的屬性
⑦非主屬性:除去碼屬性組中的屬性