1

我需要一个表格来为每个用户每周存储文本。
所以我想到了两种选择:
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;

我不知道什么是更好的选择(以及为什么)

4

1 回答 1

0

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

通常我会使用一个简单的主键,我会添加另一个键,比如你的键:( Year, Week, UserId)

于 2016-04-29T08:59:57.133 回答