Общая сущность

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Общая сущность

Сообщение porcelanosa »

Вопрос уже обсуждался viewtopic.php?f=3&t=12779
Я просмотрела упомянутая в комментах слайд шоу : http://www.slideshare.net/billkarwin/sq ... trike-back с 32 кадра.
Да проблема, там описанная очень похожа на мою.

Вкратце суть:
когда архитектура сайта понятна заранее, все можно просчитать, и запланировать, все отлично.
Но... сайт динамично развивается - постоянно добавляются новые сущности - они все более или менее похожи - но тем не менее хранить их в одной таблице не всегда получается.

Для примера, картинки - если у каждой сущности одна картинка, то все ОК - мы ее предусмотрели, ну или добавили, в крайнем случае нужный столбец - но если у нас много картинок - ОК - добавляем связанную с этой сущностью таблицу Images - и опять живем дальше хорошо, пока в 10-ый раз не приходится это делать. А если вдруг, как вот у меня: решили всем сущностям добавить отзывы:

Хочется сделать одну таблицу и привязать ее к любой желаемой модели, причем, желательно не вносить в существующие модели изменения (Ну разве что написать, какое-то поведение или действие для сохранения и вывода связанных отзывов).
Изображение
У меня получилась такая таблиц
Т.е. мы храним имя модели и ID модели для каждой записи (отзыва): При выборке - для конкретной модели делаем запрос вида:

Код: Выделить всё

SELECT * FROM reviews WHERE model="news" AND model_id = 222
Что можете подсказать - не слишком ли это бестолково - может есть у кого наработки?
Спасибо.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
ads
Сообщения: 54
Зарегистрирован: 2014.03.01, 16:52

Re: Общая сущность

Сообщение ads »

porcelanosa писал(а): Что можете подсказать - не слишком ли это бестолково - может есть у кого наработки?
Спасибо.
нормальная схема. Похоже на "наследование с одной таблицей". Есть где-то в "рецептах".. попробуйте поискать
IvanChe
Сообщения: 89
Зарегистрирован: 2012.11.25, 18:55

Re: Общая сущность

Сообщение IvanChe »

Еще как вариант я использую одну таблицу для хранения сущности и смежную таблицу для связи многие-ко-многим для каждой сущности, с которой её нужно связать.
Пример.
Есть таблица File, которая описывает только сущность файла. И есть таблицы News, Product ... , которые нуждаются в связях с файлами. Для каждой такой сущности я создаю таблицу News_File, Product_File и т.д.
Про рациональность использования этого решения нужно смотреть по ситуации.
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: Общая сущность

Сообщение porcelanosa »

IvanChe писал(а):Еще как вариант я использую одну таблицу для хранения сущности и смежную таблицу для связи многие-ко-многим для каждой сущности, с которой её нужно связать.
Пример.
Есть таблица File, которая описывает только сущность файла. И есть таблицы News, Product ... , которые нуждаются в связях с файлами. Для каждой такой сущности я создаю таблицу News_File, Product_File и т.д.
Про рациональность использования этого решения нужно смотреть по ситуации.
Это как раз тот подход, который я хотела бы избежать - Хотя он самый правильный, имхо.
Но ведь лень...
И проблема в развитии проекта - выше эту проблему описывала - добавлять каждый раз таблицы связи
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Общая сущность

Сообщение SiZE »

С картинками какой-то надуманный пример. делаешь таблицу images (id, filename), делаешь таблицу news_images_rel (news_id,image_id). Это нормально. Не надо все подряд заранее оптимизировать.
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: Общая сущность

Сообщение porcelanosa »

SiZE писал(а):С картинками какой-то надуманный пример. делаешь таблицу images (id, filename), делаешь таблицу news_images_rel (news_id,image_id). Это нормально. Не надо все подряд заранее оптимизировать.
Так я и написала, что тут все просто.

А вот теперь у меня 20 сущностей - Преподаватели - студенты, курсы, события и т.д и т.п. - и ко всем мне надо добавить отзывы и обзоры, к примеру.
Если я буду делать таблицы связей, то мне надо будет сделать 40 таблиц, связи - и ведь это не предел, через месяц, еще что то может добавиться и т.д. будет продолжаться.

Я хочу такой механизм, что бы можно было добавить одну таблицу (только одну) - и привязать ее к любой сущности.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
Ответить