Ограничение составного внешнего ключа через phpMyAdmin?

#mysql #foreign-keys #phpmyadmin #rdbms #composite-key

#mysql #внешние ключи #phpmyadmin #rdbms #составной ключ

Вопрос:

Есть ли способ добавить составной (многоколоночный) внешний ключ в таблицу InnoDB через интерфейс phpMyAdmin? У меня уже есть соответствующий составной первичный ключ в целевой таблице, и я могу ограничить внешний ключ одним столбцом, но я не могу найти способ в интерфейсе, чтобы сделать составной.

 Table Log
- Date
- Service
PRIMARY KEY (Date,Service)

Table Issue
- Issue_Id
- Log_Date
- Log_Service
PRIMARY KEY Issue_Id
FOREIGN KEY (Log_Date=Log.Date,Log_Service=Log.Service)
  

Все уже настроено, кроме внешнего ключа; Я захожу в представление отношений phpMyAdmin и вижу только, как настроить FK для журнала.Дата, а не против Log.Service вообще.

Комментарии:

1. Вы когда-нибудь находили ответ? Я могу только выяснить, как настроить простые ограничения FK в phpMA.

Ответ №1:

Я только что столкнулся с аналогичной проблемой при настройке составного внешнего ключа в phpMyAdmin, и, возможно, мое решение могло бы помочь и вам.

Вот моя настройка:

Моя настройка

Как вы можете видеть, у меня есть составной первичный ключ в моей таблице ConferenceRoom, часть которого также является внешним ключом к streetaddress в table Office (это может отличаться от вашей проблемы).

На этот составной первичный ключ должен ссылаться составной внешний ключ в table Insticture, но проблема для меня заключалась в том, что, несмотря на то, что оба были определены как индексы первичного ключа, phpMyAdmin будет ссылаться только на name столбец в первичном ключе ConferenceRoom, а не на office_streetaddress столбец.

Чего мне здесь не хватало, так это того, что я не настроил связь между ConferenceRoom и Office перед попыткой настроить связь между ConferenceRoom и InstPicture. Полагаю, я забыл сначала обработать сильные стороны, как того требует методология базы данных.

Когда связь между конференц-залом и Office была определена, office_streetaddress столбец отображался в списке индексированных столбцов, и на него мог ссылаться conferenceroom_office_streetaddress столбец в table InstPicture.

Я надеюсь, что это также могло бы вам помочь, возможно, попробуйте создать отдельный индекс для вашего столбца Log.Service. Или, если это FK, настройте его отношения, а затем повторите попытку.