一張資料表如何設定兩個或多個外鍵?(已經更新了後續的問題,見連結)

來源:互聯網
上載者:User
關鍵字 php mysql

目前後續的問題,已經更新,連結地址

我正在做商城資料表的設計,目前有一個商品表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都沒有,你這也太簡單了吧,像玩具啊,

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.