假设这是表的 SQL 代码:
CREATE TABLE `user_is_in` (
`id_user` INT NULL ,
`id_city` INT NULL ,
`when` DATETIME NULL ,
INDEX `fk_user` (`id_user` ASC) ,
INDEX `fk_city` (`id_city` ASC) ,
CONSTRAINT `fk_user`
FOREIGN KEY (`id_user` )
REFERENCES `user` (`id` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_city`
FOREIGN KEY (`id_city` )
REFERENCES `city` (`id` )
ON DELETE SET NULL
ON UPDATE CASCADE)
ENGINE = InnoDB;
该表的用途是存储一种 Foursquare 签到(用户一次在一个地方注册)。
现在我有两个选择:
创建一个包含 3 个字段且没有主键的唯一索引:
唯一索引
id_user_is_in_UNIQUE
(id_user
ASC、id_city
ASC、when
ASC)创建一个额外的经典 id 自动增量字段
我不喜欢第二个选项,因为我想创建对用户和城市的查询(即:搜索在某个日期在一个城市签到的所有用户)
提前致谢。