mysql的聯合主鍵與復合主鍵區別


復合主鍵就是指你表的主鍵含有一個以上的字段組成 。 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段組合起來就是你test表的復合主鍵 (若其一為單索引字段時,左邊的id才會有索引) 它的出現是因為你的name字段可能會出現重名,所以要加上ID字段這樣就可以保證你記錄的唯一性 一般情況下,主鍵的字段長度和字段數目要越少越好

聯合主鍵,顧名思義就是多個主鍵聯合形成一個主鍵組合,體現在聯合。 (主鍵原則上是唯一的,別被唯一值所困擾。) 索引可以極大的提高數據的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行這些寫操作時,還要操作索引文件。 簡單的例子 主鍵A跟主鍵B組成聯合主鍵 主鍵A跟主鍵B的數據可以完全相同(困擾吧,沒關系),聯合就在於主鍵A跟主鍵B形成的聯合主鍵是唯一的。

聯合主鍵體現在多個表上,復合主鍵體現在一個表中的多個字段

學生表:student

create table student(
id mediumint auto_increment comment '主鍵id',
name varchar(30) comment '姓名',
age smallint comment '年齡',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '學生'

課程表:course

create table course(
id mediumint auto_increment comment '主鍵id',
name varchar(30) comment '課程名稱',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '課程'

學生課程表:stu_cour

create table IF NOT EXISTS stu_cour(
id mediumint auto_increment comment '主鍵id',
stu_id mediumint comment '學生表id',
cour_id mediumint comment '課程表id',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '學生課程表'

此時stu_cour中id就表示聯合主鍵,通過id可以獲取學生和課程的一條記錄

復合主鍵:

create table student(
name varchar(30) comment '姓名',
age smallint comment '年齡',
sex enum('男','女') comment '性別',
primary key(name,age)
)
engine = myisam,
charset = utf8,
comment = '學生'
原文地址:https://www.jianshu.com/p/8625b3b639b3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM