外键:独特&复合主键的一部分

时间:2017-11-09 14:54:27

标签: mysql database database-design composite-primary-key unique-key

我有桌子:

coupon

| id |    name  |    description   |     start_at       |       end_at        |
| 1  | coupon_1 | FREE coupon ...  |2017-02-01 04:00:33 | 2017-02-15 04:00:33 |

coupon_code

| id | coupon_id |    code   |
| 1  |    1      | P69MFE5K  |
| 13 |    1      | 75PRUE4G  |

coupon_recipient

| coupon_id | user_id | couponcode_id |
|    1      |    4    |      1        |
|    1      |    4    |      13       |

coupon_recipient键:

coupon_id, user_id, couponcode_id = Composite Primary Key

couponcode_id = Unique Index

couponcode_id作为composite primary key&的一部分可以吗? unique index

因为User可以使用不同的same couponcoupon_code)多次收到Composite Primary Key

相同的coupon_code只能使用1 timeUnique Index

1 个答案:

答案 0 :(得分:0)

没有技术原因你不能将couponcode_id作为唯一索引并作为主键的一部分。但是,我认为没有任何实际理由可以使用coupon_id& PK中的user_id只会使表键更宽,这会对性能产生负面影响。

假设您的主键也是聚集索引键,如果couponcode_id在coupon_recipient中是唯一的,为什么不将它用作主键。你可以为coupon_id&创建一个非聚集索引。用户身份。