#mysql #sql #key
#mysql #sql #Клавиша
Вопрос:
Я пытаюсь понять структуру этой таблицы. Я никогда не видел такого заявления, это какой-то внешний ключ?
нет таблицы, подобной *IDX_ATTRIBUTE_LABEL_ATTRIBUTE*
CREATE TABLE IF NOT EXISTS `eav_attribute_label (
`attribute_label_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`attribute_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`store_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`value` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`attribute_label_id`),
KEY `IDX_ATTRIBUTE_LABEL_ATTRIBUTE` (`attribute_id`),
KEY `IDX_ATTRIBUTE_LABEL_STORE` (`store_id`),
KEY `IDX_ATTRIBUTE_LABEL_ATTRIBUTE_STORE` (`attribute_id`,`store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
Спасибо
Ответ №1:
В этом случае KEY является синонимом INDEX, это не внешний ключ.
Примечание — индекс на attribute_id
является избыточным, поскольку существует составной индекс ( attribute_id
, store_id
).
Комментарии:
1.Ваше замечание верно только потому, что есть также ключ на
store_id
. Другими словами, если ключа не былоstore_id
, то могла быть законная причина для наличия ключейattribute_id
и (attribute_id
,store_id
).