外部キーを持つテーブルを作成したい。
これは、このテーブルのスキームです。
CREATE TABLE `SupplierOrderGoods` (
`shopOrder_id` INT(11) NOT NULL,
`supplierGood_id` INT(11) NOT NULL,
`count` INT(11) NOT NULL,
PRIMARY KEY (`shopOrder_id`, `supplierGood_id`),
CONSTRAINT `FK_SupplierOrderGoods_ShopOrders` FOREIGN KEY (`shopOrder_id`) REFERENCES `shoporders` (`id`),
CONSTRAINT `FK_SupplierOrderGoods_SupplierGoods` FOREIGN KEY (`supplierGood_id`) REFERENCES `suppliergoods` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
SupplierGoods
これには、 to table —FK_SupplierOrderGoods_SupplierGoods
と to table ShopOrders
—の 2 つのリンクがありますFK_SupplierOrderGoods_ShopOrders
。このコードを HeidiSQL または phpMyAdmin で実行すると、奇妙なインデックスFK_SupplierOrderGoods_SupplierGoods
が作成されます。
私のスキームでは指定していませんが、作成中です。HeidiSQLでこれを見たとき、私はそれに気づきました:
また、heidi でテーブルの作成コードが表示される可能性があります。
CREATE TABLE `SupplierOrderGoods` (
`shopOrder_id` INT(11) NOT NULL,
`supplierGood_id` INT(11) NOT NULL,
`count` INT(11) NOT NULL,
PRIMARY KEY (`shopOrder_id`, `supplierGood_id`),
------> INDEX `FK_SupplierOrderGoods_SupplierGoods` (`supplierGood_id`),
CONSTRAINT `FK_SupplierOrderGoods_ShopOrders` FOREIGN KEY (`shopOrder_id`) REFERENCES `shoporders` (`id`),
CONSTRAINT `FK_SupplierOrderGoods_SupplierGoods` FOREIGN KEY (`supplierGood_id`) REFERENCES `suppliergoods` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
とは言いませんでしINDEX
たが、ここにあります。怖い…どうして?:'(
なぜこのインデックスが表示されるのですか? ハイジが壊れていると思うので、phpmyadminで試してみましたが、同じ結果が得られました。
私はそれが正しいかどうか考えました...しかし、なぜ1つのフィールドだけに1つのインデックスしかないのですか? それが正しいなら、なぜ2つのインデックスではないのですか?
アップデート
わお!外部キーを持つすべてのテーブルにインデックスがあることに気付きました! 私はそれをグーグルで検索し、これを見つけました。通常、そのインデックスはfkで作成されていますよね?
では、なぜ 1 つのインデックスのみが作成され、2 つのインデックスは作成されないのでしょうか?