首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

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

2012-04-07 
请看一下这个简单的建表SQL是否有问题?请看一下这个简单的建表SQL是否有问题?我认为 UNIQUE KEY 这一句是

请看一下这个简单的建表SQL是否有问题?
请看一下这个简单的建表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

[解决办法]
我认为 UNIQUE KEY 这一句是毫无意义的。:说明理由
`gboard_id`,`user_id` 不能同时重复
根据你的具体情况判断
[解决办法]

探讨
gboard_id 是主键了,那么`gboard_id`,`user_id` 不可能会有重复啊。

[解决办法]
单从这个表本身来说, 由于 PRIMARY KEY (`gboard_id`), 了,自然会保证 (`gboard_id`,`user_id`), 为唯一。 所以说没什么意义。

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

估计是什么自动工具产生的语句。
[解决办法]
UNIQUE KEY `gboard_id` (`gboard_id`,`user_id`),

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

但是这个联合索引可能会有用到加速查询gboard_id`,`user_id这两个字段

热点排行