news 2026/2/27 23:21:56

数据库核心概念:候选码、主码与外码详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库核心概念:候选码、主码与外码详解

一句话先记住:
候选码是“能唯一标识一行”的最小属性集;从中挑一个当主码;外码是“引用别人主码”的属性;主属性是任何候选码里的成员。

下面分开说清楚:

  1. 候选码(Candidate Key)
    定义:关系里能唯一标识一条元组、且去掉其中任一属性就不再唯一的最小属性集合。
    特点:

    • 唯一性:不同元组在该属性集上取值绝不重复。
    • 最小性:再少一个属性就失去唯一性。
    • 可以有多个:例如学生表里(学号)和(身份证)都可做候选码。
  2. 主码(Primary Key)
    定义:人为选定、用来在表里唯一区分行的那个候选码。
    特点:

    • 只能选一个;DBMS 会自动为它建唯一索引并强制 NOT NULL。
    • 其余候选码如果也声明,就叫“唯一键/候补键(Alternate Key)”。
  3. 外码(Foreign Key)
    定义:一个表(子表)里的属性或属性集,其取值必须要么全空,要么等于被参照表(父表)主码的某个现有值
    作用:建立两个表之间的参照完整性约束。
    例子:
    选课表(学号, 课号, 成绩) 里的“学号”引用学生表的主码“学号”;选课表的“学号”列就是外码。

  4. 主属性(Prime Attribute)
    定义:任何一个候选码里包含的属性都称为主属性。
    非主属性(Non-prime Attribute):不属于任何候选码的属性。
    例子:
    若候选码有(学号)和(身份证),那么学号、身份证都是主属性;姓名、年龄等是非主属性。

记忆口诀
“候选”是最小唯一键,
“主码”是选定的真命键;
“外码”拿来连别人,
“主属性”一切候选都包含。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 14:27:03

ResNet18模型压缩实战:云端GPU低成本实现轻量化

ResNet18模型压缩实战:云端GPU低成本实现轻量化 引言 作为一名嵌入式工程师,你是否经常遇到这样的困境:想要在资源受限的设备上部署AI模型,却发现原始模型太大、太慢、太耗电?ResNet18作为经典的轻量级卷积神经网络&…

作者头像 李华
网站建设 2026/2/24 15:50:07

Qwen3-VL-WEBUI实战教程|快速搭建视觉-语言交互系统

Qwen3-VL-WEBUI实战教程|快速搭建视觉-语言交互系统 1. 引言:为什么需要Qwen3-VL-WEBUI? 随着多模态大模型的快速发展,视觉-语言理解与生成能力已成为AI应用的核心竞争力之一。阿里推出的 Qwen3-VL 是目前Qwen系列中最强大的视觉…

作者头像 李华
网站建设 2026/2/27 4:00:07

Linux如何更改目录文件属性?

chattr是Linux中用于管理文件或目录扩展属性的强大工具,该命令有着非常重要的作用,本文为大家详细讲解一下Linux chattr命令,一起来看看吧。Linux中的chattr命令是一个文件系统命令,用于更改目录中文件的属性。此命令的主要用途是…

作者头像 李华
网站建设 2026/2/25 21:50:01

万能分类器极速体验:打开浏览器就能用,比下载安装包还快

万能分类器极速体验:打开浏览器就能用,比下载安装包还快 1. 为什么你需要这个解决方案 作为一名技术总监,最尴尬的时刻莫过于:客户突然要求演示AI分类功能,而你发现演示电脑上连Python环境都没装。传统方案需要经历&…

作者头像 李华
网站建设 2026/2/22 21:20:50

分类模型资源焦虑终结:云端随时扩容缩容

分类模型资源焦虑终结:云端随时扩容缩容 引言 在电商大促期间,你是否遇到过这样的困境:精心准备的分类推荐系统,在流量暴增时突然崩溃,导致用户看到的商品推荐乱七八糟?这就是典型的"分类模型资源焦…

作者头像 李华
网站建设 2026/2/23 23:16:44

移动端推送实现:极光推送、Firebase Cloud Messaging 实战

极光推送实现代码Android 端集成 在 build.gradle 中添加依赖:implementation cn.jiguang.sdk:jpush:4.6.0 implementation cn.jiguang.sdk:jcore:2.7.0初始化代码(在 Application 类中):JPushInterface.setDebugMode(true); JPus…

作者头像 李华