SQL 数据库中的主键:什么是、优点以及如何选择

已发表: 2021-05-25

目录

什么是主键?

用 SQL 设计一个新的数据库会带来很多无与伦比的选择。 确定合适的主键是您必须做出的最关键的决定之一。 主键的基本目标简单明了。

主键起着两管齐下的基本作用。 一,它有助于定义关系。 二是有助于落实这种关系。 换句话说,没有主键,关系数据库就不会存在。 可以理解,主键的概念听起来很不寻常。

但是,如果我们告诉您,您在日常生活中一直在使用主键却没有意识到这一点。 在我们一天中每一个清醒的时刻,我们都被数据库世界中的主键包围着,然而我们却认为它们是理所当然的。 例如,考虑您的学生证。 这是需要主键的经典示例。 同样,每个员工都有唯一的公司代码,世界上每个国家都有唯一的名称和代码。

阅读: SQL 中的规范化

主键的优点是什么?

SQL 中的主键定义为单个值或表中几个值的组合。 它清楚地表示表中的每条记录。 访问此值可确保及时访问表中相关记录的位置,以及来自同一记录的其他值。 在这一点上,你可能有一个重要的问题要提出。 是否必须在每个表中生成主键? 绝对不。

SQL 不需要创建主键。 然而,最好和最有效的数据库建模实践强烈建议为 SQL 中的每个表创建一个主键。 除了作为表之间的公共链接字段之外,主键的优点是多方面的。

下面的列表总结了主键的主要优点:

  1. 由于主键用作索引,因此基于速度的数据库操作(如排序和搜索记录)变得更快。
  2. 主键有助于快速识别和查找特定数据库表中的唯一行。
  3. 在安全模式下,只能使用主键唯一标识特定记录,以确保更新和删除只影响特定行,而不影响大量数据。
  4. 当在数据库中的其他表中用作外键时,它们有助于保持参照完整性。

如何选择主键?

表包含 SQL 数据库中的主要对象。 这些表将数据存储为记录或行。 因此,要识别一个表的每一行,我们需要在同一个表中找到每一行具有不同输入值的列。 例如,假设我们有一个包含每个美国公民数据的表格。 名为“social_security_number”的列将有助于将此类表中的一行与另一行区分开来。

同样,让我们​​考虑另一个例子。 假设我们有一张私人银行的储蓄账户表。 名称为“account_number”的列可用于唯一标识此表中的特定行。

在这两个示例中,一旦您为表中的每一行确定了具有不同值的列,即“social_security_number”和“account_number”,您就可以创建主键。 根据您确定的特定列,此主键将成为表中每一行的主要标识符。

因此,示例数据库设计的标志是 SQL 中的主键。 因此,不言而喻,选择的主键必须是 100% 唯一的,并且每行数据必须存在一个唯一的主键值。 通常,个人倾向于依赖数据库管理系统本身来生成唯一标识符。

强主键的特点如下:

  1. 强主键通常长度短、紧凑并且包含尽可能少的属性。 长数据类型和复合键增加了 SQL 的复杂性。 主键长度不应超过 900 字节。
  2. 完全是数字的主键有助于提高查询性能。
  3. 避免使用特殊字符或大小写字母的组合。 避免使用文本数据类型,因为 SQL 比较字符串值比数字值花费的时间要长得多。
  4. 避免来自同一行中非关键列的可识别信息,例如邮政编码、电子邮件地址和社会安全号码。 如果主键是基于真实世界的数据,那么它可能必须在将来的某个时候进行更改,这是一种不可取的建模实践。 如果主键是任意标识符,则显示给用户的数据可能会在以后更改,但标识符不必更改。
  5. 主键值必须保持稳定,不能被修改。

需要注意的是,主键采用了一种技术机制来确保每一行在主键列中都有一个唯一的、非空的值。 这意味着记录的主键值不能为空。 此外,假设您尝试插入一个新值,该值的重复值可以在主键列中找到。 在这种情况下,新行的插入将被主键拒绝。

结帐: SQ​​L 项目的想法和主题

具有多列的主键

在某些情况下,不存在自然的单列主键。 当使用多列来定义一个主键时,它被称为多列或复合主键。 例如,假设我们有一个表“reservation”,其中包含“customer_name”、“reservation_day”、“reservation_time”和“number_of_people”列。

在这里,'customer_name' 不能单独用作主键,因为很自然,客户可能在不同日期甚至同一天有多个预订。 因此,我们将“reservation_day”和“reservation_time”添加到主键中,以使每个值的组合都是唯一的。

这种考虑不应超过 32 列。 列数越多,存储空间需求就越大。 添加多列主键的语法与添加单列主键不同。

从世界顶级大学在线学习软件工程课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

加起来

您是否曾经致电客户服务并被要求提供您的客户编号? 您甚至可能已经忘记了,这是他们询问您的邮政编码或电话号码的时候。

你有没有想过为什么? 好吧,简短的回答是主键。 长答案是,主键的优势是所有数据库系统的起点。 如果没有主键,数据库将无法像现在这样工作,或者准确地说,根本无法运行。

如果您想了解 SQL、全栈开发,请查看 IIIT-B 和 upGrad 的全栈软件开发执行 PG 计划,该计划专为在职专业人士创建,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导,与行业导师的一对一,与顶级公司的 400 多个小时的学习和工作协助。

SQL中的主键是什么?

主键是具有唯一值的字段,用于定义实体的身份。 一旦定义了主键,就不能删除或修改它。 事实上,主键是表的一个特殊特性,它成为表关系的基础。 主键始终定义在表的第一列中,不能更改。 它在数据的逻辑和物理记录结构中起着非常重要的作用。 由于主键用于唯一标识记录,因此它们被称为候选键。

SQL中的主键有什么特点?

主键是唯一标识表中每条记录的一列或一组列。 一张表只能有一个主键。 为了保持完整性,始终需要主键。 主键应由彼此不同的列组合而成。 如果主键仅由一列组成,则称为简单主键。 数据库引擎使用主键来定位和更新数据库中的记录。 主键不能为 Null,因为 Null 表示未定义或未知。 主键可以是单列或多列。 主键值可以是唯一的或非唯一的。 主键具有被索引的能力。 主键帮助数据库引擎维护表的完整性。 在数据库中可以很容易地识别主键。

SQL中如何选择主键?

主键是表中最重要的列。 这些是您的应用程序用来唯一标识每条记录的 ID。 您选择作为主键的字段必须是唯一的且不为空。 主键通常是索引的最佳候选列。 主键用于: 表中每条记录的唯一引用,查找您已有数据的记录的id,确保每行在主键中都有有效值。 为确保表中的数据保持有效和一致,请确保所有主键值都是唯一的,并且没有主键值为空。