目前后续的问题,已经更新,链接地址
我正在做商城数据表的设计,目前有一个商品表goods
、商品属性表attributes
、商品与属性关联表goods_and_attributes
:
如图所示,商品表已经与商品属性关联表有了联系,现在我想在商品属性关联表goods_and_attributes
中设置外键attribute_id
与商品属性表attributes
联系起来,数据库会报错:
我清空了数据,并且重新创建slq语句:
DROP TABLE IF EXISTS `goods_and_attribute`;
CREATE TABLE `goods_and_attribute` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`goods_id` int(11) DEFAULT NULL,
`value` varchar(50) NOT NULL,
`stock` int(11) NOT NULL,
`attribute_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `IDX_72C0A1A2B7683595` (`goods_id`),
KEY `IDX_20160603` (`attribute_id`) USING BTREE,
CONSTRAINT `FK_good_id_20160519` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`id`)
CONSTRAINT `FK_attribute_id_20160603` FOREIGN KEY (`attribute_id`) REFERENCES `attributes` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
报错信息如下:
Error :
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'CONSTRAINT `FK_attribute_id_20160519`
FOREIGN KEY (`attribute_id`) REFERENCES `a' at line 1
如果能给我一些建议,对我来说莫大的帮助!
不要用数据库的物理外键,用程序实现和维护逻辑外键,尤其是在高并发的互联网环境。