ссылки на столбцы 2 разных таблиц - PullRequest
0 голосов
/ 29 октября 2011

Следующая схема:

archivebox (id, mediatype_id)
mediatype (id, name)
archivebox_records (id, archiveboxId, recordId)
picture (id,name)
print (id,name)

recordId должно ссылаться на pictureId или printId.Как можно решить эту проблему?Я работаю с MySQL.

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Другое чистое решение - объединить picture и print в

medium( id, name, type)

где type может быть "print" или "picture" или когда модель данных увеличивает внешний ключ, ссылающийся на таблицу, содержащую допустимые значения.

1 голос
/ 29 октября 2011

Всегда лучше быть явным в ваших проектах.Это может включать создание двух таблиц archive_pictures и archive_prints с отношениями внешнего ключа к соответствующим таблицам.

Если вы действительно не хотите идти по этому пути, попробуйте добавить несколькосортировать индикатор записи в таблице archive_records, например,

ALTER TABLE `archive_records` ADD `record_type` ENUM('picture', 'print') NOT NULL;

Затем можно создавать запросы на основе этого индикатора

SELECT p.name FROM picture p
INNER JOIN archive_records ar
    ON ar.record_type = 'picture' AND p.id = ar.recordId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...