代码之家  ›  专栏  ›  技术社区  ›  TheShield

有多个属性是实体的主键?

  •  0
  • TheShield  · 技术社区  · 6 年前

    实体只能有一个属性作为主键吗?或者,是否可以将一组属性作为主键?

    2 回复  |  直到 6 年前
        1
  •  2
  •   nvogel    6 年前

    钥匙是独一无二的。 设置 属性,这意味着一个键可以由零个、一个或多个属性组成。键不可约的要求并不意味着它们必须很小或由单个属性组成;它只是意味着每个键必须具有满足唯一性要求所需的最小数量的属性。

    关系表必须至少有一个键,并且可能有多个键。这些键中的任何一个都可能包含几个属性。

        2
  •  0
  •   nvogel    6 年前

    主键是一个逻辑约束,由唯一标识集合成员的属性集合组成;该集合只能有一个成员。换句话说,是的。

    自然主键是关系纯粹主义者的首选,因为添加代理键会添加不属于数据模型固有部分的其他属性。代理键(例如,标识值)在实践中是首选的,因为它们降低了连接的复杂性,并提高了关系引擎大多数实现基础索引的性能。

    https://www.databasejournal.com/features/mssql/article.php/3922066/SQL-Server-Natural-Key-Verses-Surrogate-Key.htm 供进一步讨论。