# DBMS 中的映射约束

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

映射约束可以用[映射基数](https://beginnersbook.com/2015/04/cardinality-in-dbms/)来解释：

**映射基数**：

**一对一**：实体集 A 的一个实体可以与实体集 B 中的至多一个实体相关联，实体集 B 中的一个实体可以与实体集 A 中的至多一个实体相关联。

**一对多**：实体集 A 的一个实体可以与实体集 B 的任意数量的实体相关联，并且实体集 B 中的一个实体可以与实体集中 A 的至多一个实体相关联。

**多对一**：实体集 A 的一个实体可以与实体集 B 中的至多一个实体相关联，并且实体集 B 中的一个实体可以与实体集 A 的任意数量的实体相关联。

**多对多**：实体集 A 的一个实体可以与实体集 B 的任意数量的实体相关联，并且实体集 B 中的一个实体可以与实体集 A 的任意数量的实体相关联。

在数据库中创建表时，我们可以使用这些约束。

**示例**：

```
CREATE TABLE Customer (
customer_id int PRIMARY KEY NOT NULL,
first_name varchar(20),
last_name varchar(20)
);

CREATE TABLE Order (
order_id int PRIMARY KEY NOT NULL,
customer_id int,
order_details varchar(50),
constraint fk_Customers foreign key (customer_id) 
       references dbo.Customer
);
```

假设客户下订单不止一次，上述关系代表**一对多**关系。同样，我们可以根据需求实现其他映射约束。