我在设计数据库时遇到问题而且我不知道如何解决它:
我有下表(相关专栏):
CREATE TABLE IF NOT EXISTS `prmgmt_tasks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(300) NOT NULL,
`project_id` int(11) NOT NULL,
);
我想要的是:每个任务都有一个唯一的ID(自动增量)。任务的名称不是唯一的,但对于每个项目它应该是唯一的。例如"设计用户界面"可以出现在id为1和2的项目中,但在id为1的项目中不会出现两次。对于“group by project_id'。”这样的东西是唯一的。
当然,我可以在每个查询中检查一下,但我正在寻找一种在数据库中对此进行建模的方法,因此无论执行什么查询,它都会保持一致。
感谢您的帮助!
答案 0 :(得分:2)
在组合字段上创建唯一的复合索引。
CREATE UNIQUE INDEX tasks_name_project
ON prmgmt_tasks (name, project_id);