25

我的教科书数据库系统将基数定义如下:

关系的基数是它包含的元组的数量。相比之下,元组的数量称为关系的基数,并且随着元组的添加或删除而变化。高基数 - 很多元组,低基数 - 很少元组。

而关于基数(SQL 语句)的维基百科文章将其定义如下:

基数是指包含在数据库表的特定列(属性)中的数据值的唯一性。基数越低,列中的重复元素就越多。基数有 3 种类型:高基数、正常基数和低基数。

他们可能都是对的,但我无法将这两个定义连接为相关定义。一个改写将是appriciated!

4

4 回答 4

29

他们说的是同一件事,它与元组 ( relational algebra) 或行(外行术语)有关。

当它说高基数是唯一的特定属性(或字段)的可能值时,因此行或元组的数量更高:

示例

 StudentID   Lastname Firstname  Gender
 101         Smith    John       M
 102         Jones    James      M
 103         Mayo     Ann        F
 104         Jones    George     M
 105         Smith    Suse       F

至于StudentID是因为它是独一无二的cardinalityhigh在此它有五 (5) 个元组/行。

另一方面,姓氏具有正常的基数,特别是只有三 (3) 个唯一元组/行。因此它有normal cardinality

最后Gender因此只有两个可能的唯一元组Low Cardinality

Cardinality您可能在这里混淆了与关系(或表)Degree中的数量有关的关系。attributes/fields

另一方面,教科书Database通常Cardinality与一个实体与另一个实体的关系有关,即参与给定关系类型的实体可能发生的关系的数量。因此,例如 abinary relationship cardinality可以one-to-oneone-to-manymany-to-many

于 2014-08-28T12:18:18.687 回答
5

这两个定义都试图说基数是“行数”。区别在于比较是“在表中”还是“在特定列中”。

您的数据库教科书中的版本侧重于关系代数和表的结构(该术语中的“关系”)。

维基百科条目更实用。它包含了教科书的定义,假设表有一个主键(主键的基数与表相同)。但是,它也可以应用于标志列。如果标志只取两个值(0vs 1),那么我们可以说该列的基数是 2。

这对于优化查询很重要。基数是选择连接、聚合和选择数据的最佳方法的一个组成部分。在实践中,大多数数据库使用比基数更多的信息,即关于列及其值的所谓“统计”以进行优化。

于 2014-08-28T11:51:29.320 回答
1

有两个概念

  1. 索引基数
  2. 基数

我相信这是指索引基数,这是非常不同的 https://www.ibm.com/developerworks/data/library/techarticle/dm-1309cardinal/

  • 索引基数被认为是索引中唯一值的数量
  • 该术语用于讨论创建索引、表扫描、索引访问与表访问,它如何影响插入、更新、删除、存储空间

这是另一个示例, https://en.wikipedia.org/wiki/Cardinality_(SQL_statements)

  • 在 SQL(结构化查询语言)中,术语基数是指包含在数据库表的特定列(属性)中的数据值的唯一性。
  • 基数越低,列中的重复元素就越多。因此,具有最低可能基数的列对于每一行将具有相同的值。SQL 数据库使用基数来帮助确定给定查询的最佳查询计划。

只是基数这个词,我相信侧重于表之间的关系 特别是,它不是用于讨论单个表或数据唯一性的术语

IBM 文档(如果您搜索单词 unique,则未提及) https://www.ibm.com/support/knowledgecenter/en/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.ug_cog_rlp.10.2。 2.doc/c_cog_rlp_rel_cardinality.html 解释基数时,必须考虑显示在关系两端的符号。可能的结束标签显示在以下列表中:

  • 0..1(零或一匹配)
  • 1..1(正好一场比赛)
  • 0..n(零个或多个匹配)
  • 1..n(一个或多个匹配)

在数学中,集合的基数是“集合的元素数量”的量度。(没有提到独特的顺便说一句) https://en.wikipedia.org/wiki/Cardinality

在数据库设计中,一个数据方面相对于另一个方面的基数或基本原则是一个关键特征。一个与另一个的关系必须是精确的,彼此之间的关系必须准确,才能解释各个方面如何联系在一起。在关系模型中,表可以关联为“一对多”、“多对多”、“一对零或一”等。这就是所谓的基数一个给定的表相对于另一个表。 https://en.wikipedia.org/wiki/Cardinality_(data_modeling)

于 2019-06-24T14:39:33.360 回答
0

如果我们有表 A 和 B,将基数视为与表 A 中的行相关的表 B 的行数。如果表是 PERSON 和 VEHICLE,并且关系是 RODE_ON,那么基数很高,因为大多数过去人们乘坐许多不同的车辆,大多数车辆载着很多人。如果关系是 OWNS,那么基数很低——大多数人拥有一辆车,有些人没有,而且一辆车通常只有一两个车主,而不是更多。

请注意,关系一侧的基数不等于另一侧的基数。如果表是 PERSON 和 FINGER,并且关系是 BELONG TO,那么一个人有很多手指,但每个手指只属于一个人。

于 2014-08-28T11:55:42.467 回答