联合主键和复合主键的区别
一、复合主键
所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。
例如:
create table test ( name varchar(19), id number, value varchar(10), primary key (name,id) )
上面的name和id字段组合起来就是你test表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 ,一般情况下,主键的字段长度和字段数目要越少越好 。
这里就会有一个疑惑? 主键是唯一的索引,那么为何一个表可以创建多个主键呢?
其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。
二、联合主键
联合主键顾名思义就是多个主键联合形成一个主键组合(主键原则上是唯一的,别被唯一值所困扰。)
联合主键的意义:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。
一个简单的例子 :
主键A跟主键B组成联合主键
主键A跟主键B的数据可以完全相同,联合就在于主键A跟主键B形成的联合主键是唯一的。
下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系)
主键A数据 主键B数据
1 1
2 2
3 3
主键A与主键B的联合主键值最多也就是
11
12
13
21
22
23
31
32
33
总结: 以我来看复合主键就是含有一个以上的字段组成,如ID+name,ID+phone等,而联合主键要同时是两个表的主题组合起来的。这是和复合主键最大的区别!
相了解更多相关问题请访问PHP中文网:mysql视频教程
以上是联合主键和复合主键的区别的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

mysql逻辑主键是指在数据库中用于标识一条记录的字段或字段组合,但是它并不是唯一的。逻辑主键通常被用于数据查询和数据操作。逻辑主键可以是任何具有标识性质的字段,比如在用户表中,用户名可以作为逻辑主键,因为它可以用于标识一条记录,但是它并不是唯一的。

手机是现在中轻年人的必备之物,当然每个年龄段的人对手机需求是不一样的。RedmiK70Pro作为现在比较火爆的机型之一,内部拥有非常多样的功能以及服务,可以满足不同年龄段消费者们的需求。红米RedmiK70Pro怎么设置返回键和主键?也是需要了解清楚的,清楚之后才会决定要不要购买这款手机,那就跟随小编一起来看看下面的内容吧!红米RedmiK70Pro怎么设置返回键和主键?要访问手机的设置菜单,您可以通过下拉通知栏或在主屏幕上查找设置图标来打开设置界面。在设置界面中,查找并点击“按钮”或“导航栏”

如何让MySQL外键和主键自动关联起来?在MySQL数据库中,外键和主键是非常重要的概念,它们能够帮助我们在不同表之间建立关联关系,保证数据的完整性和一致性。在实际的应用过程中,经常需要让外键自动关联到对应的主键上,以避免数据不一致的情况发生。下面将介绍如何通过具体的代码示例实现这一功能。首先,我们需要创建两个表,一个表作为主表,另一个表作为从表。在主表中创

随着时代的快速发展,现在的手机技术也是在不断进步的,以前手机会有各种按键,现在逐渐被淘汰了,不过还是有很多人习惯使用按键来控制手机,那么荣耀90GT怎么设置返回键和主键?下面就来一起看看吧!荣耀90GT怎么设置返回键和主键?荣耀90GT是一款华为手机,设置返回键和主键的方法如下:步骤一:打开设置:在手机桌面上找到“设置”图标,点击进入设置界面。步骤二:寻找“系统与更新”选项:在设置界面中,向下滑动屏幕,找到并点击进入“系统与更新”选项。步骤三:进入导航栏设置:在系统与更新界面中,向下滑动屏幕,找

荣耀X50Pro是最近刚刚正式发布的一款旗舰手机,这款手机采用了全新的外观设计,颜值确实是非常不错的,除了颜值之外这款手机的性能配置也很出色,那么荣耀X50Pro怎么设置返回键和主键?下面就让我们来一起看看吧!荣耀X50Pro怎么设置返回键和主键?1、在主屏幕上找到“设置”图标,点击“系统和更新”功能选项;2、点击系统和更新功能项目中的“系统导航方式”;3、荣耀手机提供三种返回键设置,可以根据自己的设置进行调整:荣耀X50Pro这款手机设置返回键和主键的方法还是很简单的,大家可以按照上面的步骤来

mysql主键可以用整数类型、自增长整数类型、UUID类型或者字符串类型。类型详细介绍:1、整数类型,最常见的主键类型之一,在MySQL中,可以使用不同的长度;2、自增长整数类型,可以自动分配唯一的整数值作为主键,这个类型非常适合用作主键,特别是在需要高并发插入数据的场景中;3、UUID类型,一种128位的全局唯一标识符,可以确保数据的全局唯一性;4、字符串类型,不推荐使用等。

RedmiK70是很多用户们都在使用的机型,这款手机自从发布以来一直都保持着很不错的口碑,性价比超高而且还采用了很强大的性能配置,而且有很多人性化的功能可以让大家自己选择,比如说设置返回键和主键,但是具体要怎么设置呢?红米RedmiK70怎么设置返回键和主键?打开手机上的“设置”应用。在设置页面中向下滑动,找到并点击“额外设置”。进入额外设置页面后,选择“按钮和手势快捷方式”。在按钮和手势快捷方式设置中,您会看到“返回键”和“主键”的调整选项。点击“返回键”选项,您可以选择启用或禁用硬件返回键,
