数据库中哪些属性是核心主属性,哪些是非核心非主属性?
- 内容介绍
- 文章标签
- 相关推荐
主要主属性是能够唯一标识实体的一个或多个字段。它们在整个表中必须满足以下四大特性:
- 唯一性每一行的数据值只能出现一次不能重复。
- 非空性不能为空,否则无法完成唯一标识。
- 稳定性值应保持相对不变,避免频繁更新导致关联数据失效。
- 简洁性尽量短小、易于存储和索引,提高查询性能。
常见痛点 & 对策
- 痛点:不知道该选哪个字段做主键。
- 对策:可以优先考虑业务上天然唯一且不可变的字段,如身份证号、学号、订单号等;若不存在则考虑使用程序生成的自增ID或 UUID。
- 痛点:主键过长导致查询慢、索引膨胀。
- 对策:使用整数型自增键或短字符型,避免把大文本或复合自然键直接设为主键。
- 痛点:误将可变字段设为主键,引发级联更新异常。
- 对策:确保选定字段在业务生命周期内不会变化;若必须变化,请使用代理键来承担唯一标识职责。
非主要非主属性指除主要主属性之外用来描述实体特征的所有字段。它们的主要特点如下:
- 可重复性同一列可以出现相同值,例如“姓名”“年龄”。不过,
- 可空性可以允许为空值。以适应信息缺失的情况,
- 描述性提供业务上下文信息,帮助查询过滤、报表展示等。
- 灵活性通常可以随业务需求增删改,而不会影响实体唯一标识。
- 痛点:把经常查询的过滤条件放在非主属性。却未建立索引,导致查询慢。
- 对策:针对高频过滤列,适当添加普通索引或覆盖索引。
- 痛点:数据冗余——多个记录拥有相同的非主属性值,却未抽象成独立实体。
- 对策:评估是否需要拆分为关联表,以实现规范化并降低冗余度。
- 痛 点 : 非 主 属性 为 空,导 致 下 游 程序 报 错 或 报 表 缺 失 数据。 li> 对 策 : 根据业务需求设置 NOT NULL 或 在应用层做必填校验。按理说,/ ul>
实例解析这方面,学生信息表
假设有一张学生表 Student,包含以下字段:
| 字段名 | 类别 | 说明 |
|---|---|---|
| studentid | 主 属性 | 学号,程序生成,自增整数,唯一且不可空 |
| name | 非 主 属性 | 学生姓名。可重复,可为空 | age | 非 主 属性 | 年龄,可为空,可能存在相同值 | gender | 非 主 属性 | 性别,可为空,多人共用 “男/女” 等值 | classid |
--- End of content ---
。主要主属性是能够唯一标识实体的一个或多个字段。它们在整个表中必须满足以下四大特性:
- 唯一性每一行的数据值只能出现一次不能重复。
- 非空性不能为空,否则无法完成唯一标识。
- 稳定性值应保持相对不变,避免频繁更新导致关联数据失效。
- 简洁性尽量短小、易于存储和索引,提高查询性能。
常见痛点 & 对策
- 痛点:不知道该选哪个字段做主键。
- 对策:可以优先考虑业务上天然唯一且不可变的字段,如身份证号、学号、订单号等;若不存在则考虑使用程序生成的自增ID或 UUID。
- 痛点:主键过长导致查询慢、索引膨胀。
- 对策:使用整数型自增键或短字符型,避免把大文本或复合自然键直接设为主键。
- 痛点:误将可变字段设为主键,引发级联更新异常。
- 对策:确保选定字段在业务生命周期内不会变化;若必须变化,请使用代理键来承担唯一标识职责。
非主要非主属性指除主要主属性之外用来描述实体特征的所有字段。它们的主要特点如下:
- 可重复性同一列可以出现相同值,例如“姓名”“年龄”。不过,
- 可空性可以允许为空值。以适应信息缺失的情况,
- 描述性提供业务上下文信息,帮助查询过滤、报表展示等。
- 灵活性通常可以随业务需求增删改,而不会影响实体唯一标识。
- 痛点:把经常查询的过滤条件放在非主属性。却未建立索引,导致查询慢。
- 对策:针对高频过滤列,适当添加普通索引或覆盖索引。
- 痛点:数据冗余——多个记录拥有相同的非主属性值,却未抽象成独立实体。
- 对策:评估是否需要拆分为关联表,以实现规范化并降低冗余度。
- 痛 点 : 非 主 属性 为 空,导 致 下 游 程序 报 错 或 报 表 缺 失 数据。 li> 对 策 : 根据业务需求设置 NOT NULL 或 在应用层做必填校验。按理说,/ ul>
实例解析这方面,学生信息表
假设有一张学生表 Student,包含以下字段:
| 字段名 | 类别 | 说明 |
|---|---|---|
| studentid | 主 属性 | 学号,程序生成,自增整数,唯一且不可空 |
| name | 非 主 属性 | 学生姓名。可重复,可为空 | age | 非 主 属性 | 年龄,可为空,可能存在相同值 | gender | 非 主 属性 | 性别,可为空,多人共用 “男/女” 等值 | classid |
--- End of content ---
。
