重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1885|回复: 1
打印 上一主题 下一主题

[转载] 基础:数据库中的各种键

[复制链接]
跳转到指定楼层
楼主
发表于 2022-11-11 20:00:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
键在关系数据库中起着重要作用,它是关系数据库模型的重要组成部分。下面本篇文章就来带大家认识一些数据库中常见的键,希望对大家有所帮助。




为什么我们需要使用键?


在实际应用中,存储数据所需的表的数量很大,并且不同的表也彼此相关。此外,表格中存储了大量数据。表通常扩展到存储在其中的数千条记录,未分类和无组织。


现在要从这样的数据集中获取任何特定记录,您将必须应用一些条件,但是如果存在重复数据并且每次尝试通过应用某些条件来获取某些数据时会出现错误数据。在获得正确的数据之前有多少次试验?


为了避免这一切,定义键可以轻松识别表中的任何数据行。


在数据库中,键是用于建立和标识表之间的关系,也用于唯一标识表中的任何记录或数据行。它可以是单个属性或一组属性,其中组合可以作为键。


键的类型


下面给大家介绍一些常见类型的键,为了让大家了解这些键,我们来通过例子介绍一下:



                               
登录/注册后可看大图


可以看出这是一个简单的Student表,有字段student_id,name,subject_id,age和phone。


候选键(Candidate Key)


候选键被定义为可以唯一地标识表中的每个记录的最小字段集。它是一个属性或一组属性,可以充当表的主键,以唯一地标识该表中的每个记录。


在上面的Student表中,student_id和phone都是学生表的候选键。下面是候选键的一些特征:


● 候选键永远不能为NULL或为空;它的价值应该是独一无二的。


● 表中除主键之外的其余属性都可被视为候选键,一个表可以有多个候选键。


● 候选键可以是多个列(属性)的组合。


超级键(Super Key)


超级键被定义为表中的一组属性,可以唯一地标识表中的每个记录。超级密钥是候选键的超集。


在上面定义的表中,超级键可以是:


● student_id:因为每行student_id数据都是唯一的,因此它可以用于唯一地标识每一行。


● (student_id, name):现在两个学生的姓名可以相同,但他们的学生ID不能相同,因此这个组合也可以是一个键。


● phone:因为每个学生的电话号码都是唯一的,因此,phone也可以是一个键。


所以它们都可以是超级键。


主键(Primary Key)


主键是最适合成为任何表的标识键的候选键,它可以唯一标识表中每条记录。


对于Student表,我们可以将student_id列作为主键。



                               
登录/注册后可看大图


复合键(Composite key)


复合键是由两个或多个唯一标识表中任何记录的属性组成的键。当表的任何单个属性都不能唯一地标识行时,我们就需要使用复合键。


注:共同形成复合键的属性不是独立或单独的键。



                               
登录/注册后可看大图


在上面的是一个Score表,用于存储学生在特定科目中得到的分数。



                               
登录/注册后可看大图


在这个表中student_id,subject_id将形成主键,因此它是一个复合键。


备用键(Alternative key)


在所有候选键中,只会有一个被选为主键,其余键称为备用键或辅助键。


外键(Foreign Key)


外键是表中的属性值,充当另一个表的主键。因此,外键可用于将两个表链接在一起。



                               
登录/注册后可看大图


注:需要非常小心地在外键列中输入数据,因为输入错误的数据可能使两个表之间的关系无效。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2022-11-11 20:02:30 | 只看该作者
辅助键 就是备用键。除主键之外的候选键。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-29 11:13 , Processed in 0.102184 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表