mysql 联合主键 null_提问关于 mysql得联合主键和复合主键的问题
这个问题要是问外国开发者,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 联合主键 null_提问关于 mysql得联合主键和复合主键的问题相关推荐
- mysql show processlist info null_关于查询mysql processlist的建议
查询mysql进程,因为数据库的sleep连接很多(一般都会在几千个左右),不建议直接show processlist或者show full Processlist 尽量去用select查询 正在ru ...
- 超键、候选键、主键、外键、联合主键、复合主键
首先看看各种键的定义: 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键(只要有一个键唯一,再随便组其他的键,合起来叫主键) 候选键(candidatekey):不含有多余 ...
- 数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量
文章目录 前言 一.主键.联合主键和复合主键 (一)主键 (二)联合主键 (三)复合主键 二.外键.设置种子数目和增量 (一)外键的概念 (二)添加外键 (三)设置种子数目和增量 结语 前言 这篇文章 ...
- SpringData JPA复合主键
一.JPA和复合主键的简介 JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合.JPA通过JDK5.0注解或XML描述对象-关系表的映射关系, ...
- Hibernate复合主键映射
目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...
- java 复合主键,Spring Data Jpa 复合主键的实现
前言 这次大创有个需求,在数据库建表时发现,user表与project表的关系表 user_project的主键为复合主键: CREATE TABLE user_project( user_id IN ...
- mysql复合主键优缺点_提问关于 mysql得联合主键和复合主键的问题
这个问题要是问外国开发者,TA们能一脸懵逼. 在英文语境中只有 Composite Primary Key(也有叫 Compound Primary Key 的),就是一个表中如果是多个字段组成一个主 ...
- mysql 联合主键_深入理解Mysql索引底层数据结构与算法,背后的故事
引言 索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构对比 二叉树 左边子节点的数据小于父节点数据,右边子节点的数据大于父节点数据.如果col2是索引,查找索引为89的行元素,那么只需 ...
- mysql联合主键语句6_初探SQL语句复合主键与联合主键
一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...
- mysql联合主键_初探SQL语句复合主键与联合主键
一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...
最新文章
- Fragment 之间传递数据
- 2015华为校招机试题
- php连接mysql数据,php连接mysql数据库
- CentOS忘记普通用户密码解决办法
- Linux工作笔记-查看tcp与udp端口并对比Windows简单分析
- 【机器人】9-10月项目疑惑
- python数字图像处理(14):高级滤波
- EasyExcel 并发读取文件字段并进行校验,数据写入到新文件,批量插入数据到数据库
- QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新)
- 093 一个人的固执里,藏着低水平的认知
- 【转】Java Hotspot G1 GC的一些关键技术
- python爬虫爬取糗百成人图片单线程版本
- R数据科学-第六章用dplyr处理关系数据
- HTML中abbr标记,HTML abbr标记
- 你会用turtle画画吗?
- vscode debug Attach mode
- 原油有所反弹但空间依然不大
- 荣耀7x Android8,荣耀7X升级安卓8.0
- Excel嵌入网页(一)
- div在屏幕中如何实现居中效果
热门文章
- H3C PPP MP协议
- 新旧音标对照表与英式音标表
- NoSQLBooster for MongoDB的下载,安装,连接数据库,查询
- 推荐ietester工具
- nc 监听数据_nc 命令使用详解
- mysql存储特殊表情符号_解决mysql存储特殊文字(表情符号)utf8mb4-阿里云开发者社区...
- 贝叶斯网络之父Judea Pearl力荐、LeCun点赞,这篇长论文全面解读机器学习中的因果关系
- Python进阶(九) -- 操作excel文件
- 【自用记录向】YOLOv5模型训练,按进度更新
- 你未必知道的 WebRTC:前世、今生、未来