这个问题要是问外国开发者,TA们能一脸懵逼。

在英文语境中只有 Composite Primary Key(也有叫 Compound Primary Key 的),就是一个表中如果是多个字段组成一个主键,那么这个主键就被称为这玩意儿。

至于这玩意儿你翻译成“联合主键”、“组合主键”、“混合主键”还是“复合主键”,都特么是一回事儿。

结果到了中文编程界,不知道是哪位神仙起的头儿,非得编个“联合主键”和“复合主键”的区别出来。再加上中文编程界有一大特点,就是博客或者问答习惯性东抄西搬,结果错的知识也能流传广泛甚至成为“主流”。

搬一个“流传最广”的对于“联合主键”和“复合主键”区别的文章:

“联合主键”还是单一主键,只不过往往用在关联表里,一个关联表里会涉及到多个其他表的主键组合形成一条数据,你既可以为它们设置一个“复合主键”、也可以再新加一个自增列设为“联合主键”。

举例:

--- 学生表

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

);

--- 分数表,用所谓的“复合主键”

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

);

--- 分数表,用所谓的“联合主键”

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

);

写在最后:

再次重申,这种概念是中文编程界(或者说是中文编程博客界)人为造出的。

上面的例子看看就得了,根本就是胡编一个 联合主键 的定义出来,你会发现它其实就是一个最简单的自增主键,只不过表的逻辑上 student_id + subject_id 是唯一的,id 就成了所谓的二者的 联合主键。

mysql复合主键优缺点_提问关于 mysql得联合主键和复合主键的问题相关推荐

  1. mysql自定义函数的优缺点_浅谈MySQL创建自定义函数漏洞的利用和防止

    前一阵子网上风靡的MySQL的udf.dll提权我有所了解-近日由于不再在IDC行业工作了-所以也有所淡忘- 只是最近实在手痒,就决定对我的站点所在的服务器下手--.正好用上这招了- 站点的服务器是W ...

  2. MySQL子查询的优缺点_浅谈mysql的子查询

    浅谈mysql的子查询 mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会 ...

  3. 数据库 外键 优缺点_不同数据格式的优缺点:键值与元组

    数据库 外键 优缺点 by Hieu Nguyen (Jack) 由Hieu Nguyen(Jack) 不同数据格式的优缺点:键值与元组 (The pros and cons of different ...

  4. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  5. mysql 添加外键 完整_详解mysql添加外键的方法

    本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...

  6. keepalived mysql双主架构图_基于keepalived Mysql双主热备配置

    基于keepalived双主热备: 一.环境: OS:CentOS 6.5 X64 DB Version:Percona Mysql 5.7.15-9-log 路径:/app/mysql57 数据文件 ...

  7. 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本

    概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...

  8. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  9. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解

    原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...

最新文章

  1. 【Cmake】执行cmake命令时报错:No XSLT processor found
  2. 新兴AI解决方案将越来越依赖于嵌入式视觉技术
  3. 请选择JAVA中有效的标识_Java中有效的标识符是什么?
  4. mysql 唯一性约束报错_怪异的MySQL Online DDL报错Duplicate entry
  5. PHP 中华如何用命令连接数据库,选择MySQL数据库的命令以及PHP脚本下的操作方法...
  6. python 连接db2_大迷糊的博客
  7. 企业信息门户与办公自动化的集成应用
  8. pip download的使用记录
  9. mysql workbench企业_甲骨文发布MySQL Workbench 6.0版本
  10. 立下2019年的Flag,鞭策自己,使命宣言
  11. python random 生成随机数
  12. exfat默认配置大小_如何分配U盘exFAT格式单元大小保证速度和空间呢
  13. 多层线性模型和面板数据模型笔记(待完善,持续更)
  14. 基于Mongodb的轻量级领域驱动框架(序)
  15. sqli-labs(23-27a)
  16. 善于做“加减法”的百分点科技 成就数据智能的先行者
  17. 【ParaView教程】2.13 保存截图和保存动画
  18. 【题解】【PTA里的Python题库】7-1 身份证校验_python
  19. s1 Linux 硬件基础
  20. 唐山校友会会长苏伟与徐飞校长的一次短信交流

热门文章

  1. 八皇后问题汇总(C++版)
  2. ​720vr全景的优势是什么?这种全景技术应用有哪些?
  3. 系统架构设计笔记(46)—— 面向服务的架构
  4. 用Matlab求解一维非稳态导热问题(有限差分法+显式离散)
  5. 有趣的Python基础教程(上)
  6. APPScan扫描器
  7. morphology.remove_small_objects的使用——和numpy转换为bool
  8. PV、UV的几种写法
  9. mysql awr flush_如何使用awr_set_report_thresholds控制AWR报告里的sql语句数量
  10. 工具分享(5):用H5开发一个合租记账APP—“合租薄”