Добрый вечер.
Есть задача переписать движок сайта. Начал с приведения БД в порядок.
Но вот в чём проблема (самостоятельно додумать не в состоянии).
Есть три таблицы:
1) Туры
2) Туристы
3) Инструкторы
В этих таблицах несвязанные между собой данные, поэтому, id(PK) в этих таблицах повторяются.
Для каждой из записей в этих таблицах можно прикреплять изображения, изображений может быть много.
В старом варианте, для каждой таблицы есть дочерняя, специально для изображений. Таблицы для изображений совершенно одинаковые, количество полей, названия полей, типы данных, размеры данных и т.д. и т.п. Совершенно одинаковые три таблицы, только названия разные у них.
Поэтому я подумал, что это слишком, три одинаковые таблицы и решил все изображения(пути к файлам) хранить в одной таблице.
Вообще-то проблем с реализацией особо не возникает. Можно через внешний ключ, можно связующую таблицу. Но на этом этапе зашёл в тупик.
Если я возьму первую таблицу, "туры", и все изображения для этих записей перенесу в новую таблицу, то проблем нет.
Но если переносить изображения для "туристы" - возникает проблема. Для того, чтобы связать по внешнему ключу надо в таблице изображений завести колонку "parend_id", но у "туров" и "туристов" есть одинаковые id(PK) и поэтому не получается слить изображения в одну таблицу.
Думал и про связующую таблицу, но и там нужна колонка "parent_id" и опять совпадения.
Как можно решить данную проблему? Подскажите, пожалуйста, кто уже сталкивался с подобным.
P.S. Из таблицы "Туры" идут связи через внешний ключ на другие таблицы, не только на изображения.
P.S.S Или сделать в таблице изображений три поля для связующих id - tour_id, instructor_id and tourist_id?
Но не слишком ли это будет?
Это я и хочу сделать, но id в таблицах c турами, туристами и инструкторами совпадают.
Данные со старого сайта и к турам, например, привязаны цены, а к туристам их заказы...
slo_nik: Именно. Такая схема позволит сделать связь многие-ко-многим, то есть использовать несколько фотографий для одного тура/туриста/инструктора и использовать одну и ту же фотографию для разных туров/туристов/инструкторов.
Rsa97: Хотел сократить количество одинаковых таблиц, но видать никак не обойти это)))
Ну что же, так и буду делать.
С внешним придётся повозиться, ну да ладно)
Укажите тип то есть у вас туры туристы и тд... то есть перент id у вас повторяеться у туристов и туров, но тип у них разный и делайти выборку не по id а по id и type
Внешние ключи надо настроить, данные должны быть уникальными, а то как я определю, какое изображение принадлежит конкретному туру или туристу?
Или я что-то не понял?