# DBMS 中的基数

> 原文： [https://beginnersbook.com/2015/04/cardinality-in-dbms/](https://beginnersbook.com/2015/04/cardinality-in-dbms/)

在 DBMS 中，您可以在两个不同的地方听到基数术语，它也有两种不同的含义。

**在数据模型的背景下**：

就[数据模型](https://beginnersbook.com/2015/04/data-models-in-dbms/)而言，基数是指两个表之间的关系。如[实体关系指南](https://beginnersbook.com/2015/04/e-r-model-in-dbms/)中所见，关系可以是四种类型：

一对一 - 第一个表的单行与第二个表的单行相关联。例如，人与护照表之间的关系是一对一的，因为一个人只能拥有一本护照，而护照只能分配给一个人。

一对多 - 第一个表的单行与第二个表的多行相关联。例如，客户和订单表之间的关系是一对多，因为客户可以下多个订单，但单个订单只能属于一个客户。

多对一 - 第一个表的多行与第二个表的单行相关联。例如，学生和大学表之间的关系是多对一的，因为大学可以有很多学生，但学生一次只能在一所大学学习。

多对多 - 第一个表的多行与第二个表的多行相关联。例如，学生和课程表之间的关系是多对多的，因为学生可以一次学习很多课程，并且可以将课程分配给许多学生。

**在查询优化的上下文**中：

在查询方面，基数是指表中列的唯一性。具有所有唯一值的列将具有高基数，并且具有所有重复值的列将具有低基数。这些基数得分有助于查询优化。