資料庫的主鍵和外來鍵設計方法

2021-10-05 12:55:08 字數 2100 閱讀 1963

目錄

一 外來鍵概念

二 外來鍵作用

三 實戰

四 說明

五 最佳實踐

六 參考

如果公共關鍵字在乙個表中是主關鍵字,那麼這個公共關鍵字被稱為另乙個表的外來鍵。由此可見,外來鍵表示了兩個表之間的相關聯絡。以另乙個表的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。

在實際操作中,將乙個表的值放入第二個表來表示關聯,所使用的值是第乙個表的主鍵值(在必要時可包括復合主鍵值)。此時,第二個表中儲存這些值的屬性稱為外來鍵(foreign key)。

保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料,約束。使兩張表形成關聯,外來鍵只能引用外表中的列的值或使用空值。

1 建立外來鍵的方式一 : 建立子表同時建立外來鍵

-- 年級表 (id\年級名稱)

create table `grade` (

`gradeid` int(10) not null auto_increment comment '年級id',

`gradename` varchar(50) not null comment '年級名稱',

primary key (`gradeid`)

) engine=innodb default charset=utf8

-- 學生資訊表 (學號,姓名,性別,年級,手機,位址,出生日期,郵箱,身份證號)

create table `student` (

`studentno` int(4) not null comment '學號',

`studentname` varchar(20) not null default '匿名' comment '姓名',

`***` tinyint(1) default '1' comment '性別',

`gradeid` int(10) default null comment '年級',

`phonenum` varchar(50) not null comment '手機',

`address` varchar(255) default null comment '位址',

`borndate` datetime default null comment '生日',

`email` varchar(50) default null comment '郵箱',

`idcard` varchar(18) default null comment '身份證號',

primary key (`studentno`),

key `fk_gradeid` (`gradeid`),

constraint `fk_gradeid` foreign key (`gradeid`) references `grade` (`gradeid`)

) engine=innodb default charset=utf8

2 建立外來鍵方式二 : 建立子表完畢後,修改子表新增外來鍵

alter table `student`

add constraint `fk_gradeid` foreign key (`gradeid`) references `grade` (`gradeid`);

3 刪除外來鍵

操作:刪除 grade 表,發現報錯

注意: 刪除具有主外來鍵關係的表時 , 要先刪子表 , 後刪主表

-- 刪除外來鍵

alter table student drop foreign key fk_gradeid;

-- 發現執行完上面的,索引還在,所以還要刪除索引

-- 注:這個索引是建立外來鍵的時候預設生成的

alter table student drop index fk_gradeid;

以上操作的都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用,避免資料庫過多造成困擾。

資料庫就是單純的表,只用來存資料,只有行(資料)和列(字段)

我們要想使用多表的資料,想使用外來鍵(程式去實現)

1 關於資料庫主鍵和外來鍵

2 外來鍵設計

3 sql中乙個表設定兩個主鍵是將兩個字段聯合起來設定為主鍵,乙個表只能有乙個主鍵

資料庫的主鍵和外來鍵

資料庫主鍵是指表中乙個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。乙個表只能有乙個 primary key 約束,而且 primary key 約束中的列不能接受空值。主鍵具有的特點 唯一性 非空性。思考 主鍵帶來了什麼樣的優點和缺點?外來鍵...

資料庫 主鍵 外來鍵

1 什麼是主鍵 在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵 或主碼 這裡說 欄位集 是因為主鍵可能用乙個字段或者多個欄位來表示。舉例來看 學生表 學號,姓名,性別,專業編號 這裡學號是主鍵,乙個學號id就可以唯一標識乙個學生的資訊。另乙個表 學生選課表 學號,課程號...

資料庫外來鍵主鍵

如果乙個欄位被設定為主鍵,那他一定是唯一的,並且是非空的。如果設定為整型,那麼可以新增為自動遞增的功能 外來鍵,應用於主從表。可以保證當前新增的字段在一定範圍內選擇。比如我有兩張表,乙個表是班級表,乙個表是學生表,我需要知道學生在哪乙個班級以及他的位置,我當然可以在班級表中寫好幾個列,但是顯得臃腫,...