当前位置: 首页 > news >正文

mysql数据库:超键、候选键、主键与外键

mysql数据库:超键、候选键、主键与外键

  • 1、超键(Superkey)
  • 2、候选键(Candidate Key)
  • 3、主键(Primary Key)
  • 4、外键(Foreign Key)


💖The Begin💖点点关注,收藏不迷路💖

1、超键(Superkey)

超键是能唯一确定表中每行数据的属性集。它可以是单个属性或多个属性的组合。

示例:

一个学生表(Student),包含学号(ID)、姓名(Name)、年龄(Age)和班级(Class)四个字段。

其中,学号(ID)单独、姓名+班级(Name+Class)组合,以及学号+姓名+年龄+班级的全集都可以作为超键,因为它们都能唯一标识表中的一行数据。

IDNameAgeClass
001张三201班
002李四212班
003王五201班
004赵六223班

2、候选键(Candidate Key)

候选键是最小的超键,即没有任何多余属性的超键。一个表可以有多个候选键。

示例:

在上表中,如果假设学号(ID)是唯一的,并且没有其他属性与学号组合后还能保持唯一性,那么学号(ID)就是一个候选键。同时,如果姓名+班级的组合在表中也是唯一的(尽管这种情况较少见),那么它也是一个候选键。

3、主键(Primary Key)

主键是表中的一个特殊候选键,用于唯一标识每行数据。每个表只能有一个主键,且主键的值不能为空。

示例:

在上表中,我们通常会选择学号(ID)作为主键,因为它能唯一标识每一个学生,并且符合主键的所有要求。

4、外键(Foreign Key)

外键是表中的一个字段,其值必须是另一个表的主键的值。它用于在两个表之间建立关联,确保数据的参照完整性。

示例:

假设我们还有一个班级表(Class),其中包含班级ID(ClassID)和班级名称(ClassName)两个字段,且班级ID是主键。

在学生表中,我们可以添加一个班级ID(ClassID)字段作为外键,这个字段的值必须对应于班级表中的某个班级ID,从而在学生表和班级表之间建立关联。这样,当我们查询某个学生的信息时,可以通过学生表中的班级ID快速找到该学生所属的班级信息。

班级表 (Class)

ClassIDClassName
C001一年级1班
C002一年级2班
C003二年级1班

学生表 (Student)

IDNameAgeClassID
001张三20C001
002李四21C002
003王五20C001
004赵六22C003

简洁来说,超键包含候选键,候选键中最常用的是主键,而外键用于表间关联。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

http://www.mrgr.cn/news/36576.html

相关文章:

  • 【GreenHills】使用“gsrec”命令生成二进制文件
  • 什么是秒传,代码
  • 对 AI 产品定价模式的新思考:基于人数 or 工作量?
  • TLS(Transport Layer Security)是一种加密协议,用于在互联网通信中保护数据的安全性。
  • SQL优化系列-有索引,为什么查询也这么慢?
  • 25 基于51单片机的温度电流电压检测系统(压力、电压、温度、电流、LCD1602)
  • Qwen2.5 模型使用初体验
  • Linux 学习笔记(十五)—— 基础IO
  • 领导收拾下属的10大阳谋
  • static类型成员函数与变量的调用方法
  • 打卡软件——人脸识别综合实现Pro
  • LLM基础概念:Prompt
  • 【转型必看】Java到AI,程序员的逆袭秘籍!
  • 力扣9.26
  • Linux 如何发送 GET 请求
  • Tesla Robotaxi 最新进展分析
  • 高级java每日一道面试题-2024年9月26日-分布式篇-BASE理论是什么?
  • 示例说明:elasticsearch实战应用
  • compose remember 作用
  • Linux驱动开发(速记版)--并发与竞争