主鍵:能夠唯一標識表中某一行的屬性或屬性組。乙個表只能有乙個主鍵,但是可以有多個索引。主鍵常常與外來鍵構成完整性約束,防止出現資料的不一致,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵是乙個特殊的索引。
外來鍵:用於建立和加強兩個表資料之間的連線的一列或者多列。外來鍵主要是用來維護兩個表之間的資料的一致性。
索引:用來快速尋找那些具有特定值的記錄,主要是為了查詢訪問的速度,按照一定的規則建立的,一般是排序作用。
總結:主鍵一定是唯一索引,唯一性索引並不一定是主鍵
乙個表中可以有多個唯一索引
主鍵列不允許空值,而唯一索引列允許空值。
外來鍵:一對多模型:
比如說乙個部門對應著多個員工,而不存在多個部門對應乙個員工,因此這是一對多的模型:
比如我們建立乙個表:部門表
create table dep(id int primary key auto_increment,name char(32),
dep_desc char(32)
);create table staff(id int primary key auto_increment, name char(32),age int,dep_id int,foreign key(dep_id) references dep(id) on update cascade on delete cascade );
修改乙個主表從表中的dep_id也會隨著修改,這就相當於建立了乙個聯絡。
insert into dep values(1,"技術部","專研技術"),(2,"研發部","研發**");
insert into staff values(2,"wy",20,1);
insert into staff values(3,"wy",20,2);
delete from dep where id=2;
會將從表staff中的dep_id=2的元素刪除
外來鍵:多對多
案例呢就是乙個作者可以寫多本書,一本書也可以被多個作者共同著作
從作者的角度:乙個作者對應著多本書
從書的角度:就是一本書對應著多個作者
對於二者建立外來鍵連線存在著乙個互為外來鍵的問題,怎麼解決?我們使用第三張表來構建這兩張表的聯絡,第三張表關聯書與作者的表:
書:id name
作者 id,name
第三個表: book_id author_id
建立乙個輸的表
create table book(id int primary key auto_increment,
name char(32)
);
建立乙個作者的表
create table author(id int primary key auto_increment,
name char(32)
);
插入書名
insert into book(name) values("金瓶梅"),("蘭桂坊"),("圍城");
插入作者名
insert into author(name) values("egon"),("kevin"),("jason");
建立關聯表名:
create table booktwoauthor(id int primary key auto_increment,
book_id int,foreign key(book_id) references book(id)
on update cascade
on delete cascade,
author_id int,foreign key(author_id) references author(id)
on update cascade
on delete cascade
);
一對一:
客戶 :id 姓名 qq phone
學生:id 班級名,使用者id
create table customer(id int primary key auto_increment,
name char(32),qq char(20),phone char(11)
);create table student(id int primary key auto_increment,
class_name char(32),custom_id int unique,
foreign key(custom_id) references customer(id)
on update cascade
on delete cascade
);
資料庫 外來鍵
外來鍵是什麼?外來鍵 fk 是用於建立和加強兩個表資料之間的鏈結的一列或多列。通過將儲存表中主鍵值的一列或多列新增到另乙個表中,可建立兩個表之間的鏈結。這個列就成為第二個表的外來鍵。外來鍵資料庫一級的完整性約束,由資料庫自行維護.你也可以手動建立.1如果存在外來鍵關係的話,任何修改主表主鍵欄位和刪除...
資料庫外來鍵
概念 table2的乙個鍵關聯table1的主鍵 foreign key 作用 保持資料的一致性和完整性 表的字段必須與外來鍵型別相同 insert table2的時候會檢查foreign key是否在table1中存在,不存在則返回失敗 delete table1某行資料的時候檢查table2中是...
資料庫 外來鍵
員工資訊表有三個字段 工號 姓名 部門 公司有3個部門,但是有1個億的員工,那意味著部門這個字段需要重複儲存,部門名字越長,越浪費 解決方法 我們完全可以定義乙個部門表 然後讓員工資訊表關聯該錶,如何關聯,即foreign key 將所有資料存放在一張表中的弊端 結構不清晰 浪費空間 可擴充套件性極...