每周表

时间:2016-04-29 07:52:49

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

我需要一个表来每周为每个用户存储文本 所以我想了两个选择:
1)使用复合主键:

CREATE TABLE `WeeklyTxt` ( 
`Year` YEAR(4) NOT NULL , 
`Week` ENUM('1','2','3','4', ... ,'51','52','53') NOT NULL ,
`UserId` BIGINT NOT NULL ,
`WeekTxt` TEXT NOT NULL,
PRIMARY KEY (`Year`, `Week`, `UserId`)
) ENGINE = InnoDB;

2)使用自动增量主键

CREATE TABLE `WeeklyTxt_2` ( 
`WeekTxtId` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Year` YEAR(4) NOT NULL , 
`Week` ENUM('1','2','3','4', ... ,'51','52','53') NOT NULL ,
`UserId` BIGINT NOT NULL ,
`WeekTxt` TEXT NOT NULL
) ENGINE = InnoDB;

我无法弄清楚什么是更好的选择(及其原因)

1 个答案:

答案 0 :(得分:0)

这取决于您通常会在表格中进行的搜索!

我会使用简单的PRIMARY KEY,我会像你的KEY一样添加另一个KEY:(YearWeekUserId