mysql复合主键优缺点_提问关于 mysql得联合主键和复合主键的问题
這個問題要是問外國開發(fā)者,TA們能一臉懵逼。
在英文語境中只有 Composite Primary Key(也有叫 Compound Primary Key 的),就是一個表中如果是多個字段組成一個主鍵,那么這個主鍵就被稱為這玩意兒。
至于這玩意兒你翻譯成“聯(lián)合主鍵”、“組合主鍵”、“混合主鍵”還是“復(fù)合主鍵”,都特么是一回事兒。
結(jié)果到了中文編程界,不知道是哪位神仙起的頭兒,非得編個“聯(lián)合主鍵”和“復(fù)合主鍵”的區(qū)別出來。再加上中文編程界有一大特點,就是博客或者問答習慣性東抄西搬,結(jié)果錯的知識也能流傳廣泛甚至成為“主流”。
搬一個“流傳最廣”的對于“聯(lián)合主鍵”和“復(fù)合主鍵”區(qū)別的文章:
“聯(lián)合主鍵”還是單一主鍵,只不過往往用在關(guān)聯(lián)表里,一個關(guān)聯(lián)表里會涉及到多個其他表的主鍵組合形成一條數(shù)據(jù),你既可以為它們設(shè)置一個“復(fù)合主鍵”、也可以再新加一個自增列設(shè)為“聯(lián)合主鍵”。
舉例:
--- 學生表
CREATE TABLE `student` (
`student_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`student_id`) USING BTREE
);
--- 科目表
CREATE TABLE `subject` (
`subject_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`subject_id`) USING BTREE
);
--- 分數(shù)表,用所謂的“復(fù)合主鍵”
CREATE TABLE `score` (
`student_id` int(10) unsigned NOT NULL,
`subject_id` int(10) unsigned NOT NULL,
`value` int(10) unsigned NOT NULL,
PRIMARY KEY (`student_id`, `subject_id`) USING BTREE
);
--- 分數(shù)表,用所謂的“聯(lián)合主鍵”
CREATE TABLE `score` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`student_id` int(10) unsigned NOT NULL,
`subject_id` int(10) unsigned NOT NULL,
`value` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `un`(`student_id`, `subject_id`) USING BTREE
);
寫在最后:
再次重申,這種概念是中文編程界(或者說是中文編程博客界)人為造出的。
上面的例子看看就得了,根本就是胡編一個 聯(lián)合主鍵 的定義出來,你會發(fā)現(xiàn)它其實就是一個最簡單的自增主鍵,只不過表的邏輯上 student_id + subject_id 是唯一的,id 就成了所謂的二者的 聯(lián)合主鍵。
總結(jié)
以上是生活随笔為你收集整理的mysql复合主键优缺点_提问关于 mysql得联合主键和复合主键的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线平面图设计教程
- 下一篇: SQL刷题宝典-MySQL速通力扣困难题