В отчете о СОЗДАНИИ ТАБЛИЦЫ, почему «КЛЮЧ» используется таким образом? КЛЮЧ `IDX_ATTRIBUTE_LABEL_ATTRIBUTE` (`attribute_id`)

#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 ).