# DBMS 中的复合键

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

**复合键的定义：**具有多个属性的键称为复合键。它也被称为复合键。

**注意：** [超键](https://beginnersbook.com/2015/04/super-key-in-dbms/)，[主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/)，[候选键](https://beginnersbook.com/2015/04/candidate-key-in-dbms/)等任何键都可以称为复合键，如果它超过一个属性。

## 复合键示例

让我们考虑一个表`Sale`。该表有四列（属性） - `cust_Id`，`order_Id`，`product_code` 和 `PRODUCT_COUNT`。

**表 - `Sale`**

```
cust_Id    order_Id    product_code    product_count
--------   --------    ------------    -------------
C01	   O001         P007           23
C02	   O123	        P007           19
C02	   O123	        P230           82
C01	   O001	        P890           42
```

这些列**中没有一个**可以在此表中充当主键。

单独的 **`cust_Id`** 列不能成为一个键，因为同一个客户可以下多个订单，因此同一个客户可以有多个记录。

单独的列 **`order_Id`** 不能是主键，因为相同的订单可以包含多个产品，因此可以多次出现相同的`order_Id`。

列 **`product_code`** 不能是主键，因为多个客户可以为同一产品下订单。

单独的 **`product_count`** 列不能是主键，因为两个订单可以具有相同的产品数量。

基于此，可以安全地假设键应具有多个属性：
**上表中的键：`{cust_id, product_code}`**

这是一个复合键，因为它由多个属性组成。