資料庫外來鍵

2021-09-22 18:24:35 字數 2383 閱讀 2176

主鍵:能夠唯一標識表中某一行的屬性或屬性組。乙個表只能有乙個主鍵,但是可以有多個索引。主鍵常常與外來鍵構成完整性約束,防止出現資料的不一致,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵是乙個特殊的索引。

外來鍵:用於建立和加強兩個表資料之間的連線的一列或者多列。外來鍵主要是用來維護兩個表之間的資料的一致性。

索引:用來快速尋找那些具有特定值的記錄,主要是為了查詢訪問的速度,按照一定的規則建立的,一般是排序作用。

總結:主鍵一定是唯一索引,唯一性索引並不一定是主鍵

乙個表中可以有多個唯一索引

主鍵列不允許空值,而唯一索引列允許空值。

外來鍵:一對多模型:

比如說乙個部門對應著多個員工,而不存在多個部門對應乙個員工,因此這是一對多的模型:

比如我們建立乙個表:部門表

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 將所有資料存放在一張表中的弊端 結構不清晰 浪費空間 可擴充套件性極...