我的数据如下:
+------------+------------+-----------+
| Date1 | Date2 | CompanyID |
+------------+------------+-----------+
| 2017-01-01 | 2017-01-02 | 1 |
| 2017-02-01 | 2017-02-02 | 1 |
| 2017-01-01 | 2017-01-02 | 2 |
| 2017-01-21 | 2017-01-23 | 1 |
| 2017-01-21 | 2017-01-23 | 2 |
| 2017-11-21 | 2017-11-22 | 1 |
+------------+------------+-----------+
我想在MySQL中使用这些数据创建一个表,但是我需要创建一个唯一的密钥,因为两个CompanyID
的某些数据是相同的。我在考虑将Date1
和CompanyID
组合在一起:
+--------------+------------+------------+-----------+
| Key | Date1 | Date2 | CompanyID |
+--------------+------------+------------+-----------+
| 2017-01-01-1 | 2017-01-01 | 2017-01-02 | 1 |
| 2017-02-01-1 | 2017-02-01 | 2017-02-02 | 1 |
| 2016-01-01-2 | 2016-01-01 | 2016-01-02 | 2 |
| 2017-01-21-1 | 2017-01-21 | 2017-01-23 | 1 |
| 2017-04-10-2 | 2017-04-10 | 2017-04-11 | 2 |
| 2017-11-21-1 | 2017-11-21 | 2017-11-22 | 1 |
+--------------+------------+------------+-----------+
这是一个坏主意,为什么?是否有某种方法将Date1
+ CompanyID
与Key
相关联,以便在Date1
或CompanyID
更改时自动更改密钥?
答案 0 :(得分:1)
您不需要单独的键列。您可以在表格中添加UNIQUE KEY (CompanyID, Date1)
以防止重复。或PRIMARY KEY (CompanyID, Date1)
如果您希望它成为您的主键。
答案 1 :(得分:0)
这是一个糟糕的主意,因为如果您不止一次拥有相同的日期和相同的公司ID,那么您的密钥将不会是唯一的。只需添加自动增量密钥。