请看一下这个简单的建表SQL是否有问题?

Helen1978 2011-06-15 03:34:06
请看一下这个简单的建表SQL是否有问题?我认为 UNIQUE KEY 这一句是毫无意义的。
这个是我们公司请的俄罗斯数据库工程师写的建表SQL。
CREATE TABLE `user_gboards` (
`gboard_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`total_items` int(11) NOT NULL default '0',
`creator` varchar(64) default 'igor',
`modified` timestamp NOT NULL default '0000-00-00 00:00:00',
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`gboard_id`),
UNIQUE KEY `gboard_id` (`gboard_id`,`user_id`),
KEY `fk_user_gboards_fk1` (`user_id`),
CONSTRAINT `fk_user_gboards_fk1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
biandongfeng 2011-06-16
  • 打赏
  • 举报
回复
我感觉他是想加一个联合索引,并不是为了唯一,而是提高这两列的查询效率
WWWWA 2011-06-16
  • 打赏
  • 举报
回复
根据你的具体情况判断,估计是为了某个查询的需要
回南山种豆 2011-06-16
  • 打赏
  • 举报
回复
没有想清楚他的意思,我感觉不加那句
minitoy 2011-06-16
  • 打赏
  • 举报
回复
呵呵,的确看不出有什么意义
rucypli 2011-06-15
  • 打赏
  • 举报
回复
UNIQUE KEY `gboard_id` (`gboard_id`,`user_id`),

做唯一判断完全没有必要 ,因为gboard_id本身已经不重复

但是这个联合索引可能会有用到加速查询gboard_id`,`user_id这两个字段
ACMAIN_CHM 2011-06-15
  • 打赏
  • 举报
回复
单从这个表本身来说, 由于 PRIMARY KEY (`gboard_id`), 了,自然会保证 (`gboard_id`,`user_id`), 为唯一。 所以说没什么意义。

一种情况就是,某个表以 (`gboard_id`,`user_id`)为外键则需要创建这个 UNIQUE KEY `gboard_id`, 但那个表完全可以直接 参照 PRIMARY KEY (`gboard_id`),就行了。

估计是什么自动工具产生的语句。
Helen1978 2011-06-15
  • 打赏
  • 举报
回复
是这样,估计是为了规范`user_id`吧
[/Quote]

不太明白你的意思,规范user_id是什么意思?
wwwwb 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 helen1978 的回复:]
gboard_id 是主键了,那么`gboard_id`,`user_id` 不可能会有重复啊。
[/Quote]
是这样,估计是为了规范`user_id`吧
Helen1978 2011-06-15
  • 打赏
  • 举报
回复
gboard_id 是主键了,那么`gboard_id`,`user_id` 不可能会有重复啊。
wwwwb 2011-06-15
  • 打赏
  • 举报
回复
我认为 UNIQUE KEY 这一句是毫无意义的。:说明理由
`gboard_id`,`user_id` 不能同时重复
根据你的具体情况判断

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧