attributeLabels

Добрый день!

Есть идея хранения attributeLabels в комментариях к полям таблицы.

Насколько плоха идея? И как ее лучше реализовать?

(В MySQL есть "show full columns from mytable".)

Навскидку идея плоха тем, что отрезается поддержка многоязычности приложения.

Можно хранить на основном языке. Остальные подставлять через Yii:t() просто перегрузив attributeLabels

Тут вопрос в том, что я думаю над каталогом с настраиваемыми (добавляемыми, редактируемыми, удаляемыми) характеристиками объектов. Идея использовать ALTER TABLE.

Вот почему встал вопрос о хранении attributeLabels в комментариях

Может кто что дельное подскажет?

Если в какой-то определенный момент таблица в БД станет большой, то ALTER не всегда будет работать. Столкнулся с подобным при таблице в 500-600 мегабайт и 2000-3000 записей.

И как решил??

В том конкретном случае никак, но решал бы созданием новой таблицы с нужной структурой и переносом всех данных из старой.

Я тут тоже медленно думаю над подобной идей каталога. И вот пока остановился на такой штуке, как MongoDB. Присматриваюсь.

http://www.mongodb.org/display/DOCS/Home

Почему именно MongoDB?

MongoDB - это не реляционная БД, а документо/объекто-ориентированная с отсутствием четкой структуры таблиц/коллекций (schemaless).

Может быть и не MongoDB, а, например, CouchDB или просто даже XML.

Просто мне кажется отсутствие четкой структуры колонок поможет в создании каталогов такого типа с гибкой структурой.

to Rsol

MongoDB сильная вещь. Во всяком случае это точно лучше чем использовать паттерн EAV в реляционных БД, к использованию которого вы рано или поздно придете решая подобную задачу.

Что касается ALTER TABLE, то это хуже чем EAV. Так что, если возможности использовать schemaless БД нет, то тут практически без вариантов.

Думал над такой постановкой вопроса…

Есть существенная проблема: переносимость. Т.е. очень жесткие требования к хостингу.

паттерн EAV - можно подробнее? Гугл конечно рулит, но может есть что-то "личное"? :slight_smile:

О EAV почитал. Одни его ругают, другие хвалят.

Хостинг с MongoDB вообще не нашел. :frowning:

Да, готового хостинга с MongoDB нету. Есть только проект http://www.mongohq.com/home, но они пока в бета-тестировании.

А иначе нужен минимум VPS/VDS. Установка между прочим очень проста.

Есть такое дело. Но посмотрите, что предлагают те, кто его ругает. Они предлагают вообще отказаться от любых конструкторов объектов, мотивируя это неправильной постановкой задачи. С другой стороны вариантов других то нет, ведь реляционные БД не проектировались под такой функционал. Так что идеологически правильно использовать MongoDB, но практически(ввиду проблем с хостингом) остается только EAV.

Посмотрел как сделали это в ShopCMS.

Используют EAV с некоторой небольшой модификацией.

Так что остановлюсь на EA. Спасибо всем.

Вот накопал:

http://www.yiiframework.ru/forum/viewtopic.php?f=9&t=383

Может кому-то будет интересно.