目前後續的問題,已經更新,連結地址
我正在做商城資料表的設計,目前有一個商品表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
如果能給我一些建議,對我來說莫大的協助!
回複內容:
目前後續的問題,已經更新,連結地址
我正在做商城資料表的設計,目前有一個商品表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
如果能給我一些建議,對我來說莫大的協助!
不要用資料庫的物理外鍵,用程式實現和維護邏輯外鍵,尤其是在高並發的互連網環境。
樓上正解.做物理外鍵是一種很不明智的選擇.
我做過的工程從來都沒做外鍵,這東西沒什麼意義啊,還有很多意外的影響,一般表做點索引就行了,還不是所有的情況都有,外鍵在大多數情況下,基本就是過度設計,沒什麼必要。你好好想想goods_and_attributes這表的設計更現實一些,當然你其他表設計的也。。。,建立者和日期,還有status或deteled都沒有,你這也太簡單了吧,像玩具啊,