StalkerClasses
Новичок
Это к вопросу как в EAV создать поле типа связь что бы его можно было выбирать.Научное название связи M:M но без промежуточной таблицы
Relation?
Это к вопросу как в EAV создать поле типа связь что бы его можно было выбирать.Научное название связи M:M но без промежуточной таблицы
Relation?
ацкое множествоЭто к вопросу как в EAV создать поле типа связь что бы его можно было выбирать.
не могу найти ничего про это в интернете про association listsEAV - это отдельная вещь в себе. В нем ты оперируешь attribute-value pairs, а реляции строятся не на уровне самих данных, а на уровне модели пар attribute-value (еще это называется association lists). Так что стандартные реляции на это напрямую не ложатся, тут промежуточный шаг.
Я не совсем пойму чем ваше описание association lists отличается от обычного EAV...Что, даже одноименную страницу в Википедии не нашел?
Считай, что это как ассоциативный массив в php, но строго типизированный (например, все значения - только строки. или только инты). Пары attribute-value. Из этого и строится EAV (E - это для какой сущности эти пары). В EAV конкретные имена и значения атрибутов инкапсулированы в association lists, реляции же строятся не для конкретных значений, а между сущностями и association lists их атрибутов.
ничем, я и описываю обычный eavЯ не совсем пойму чем ваше описание association lists отличается от обычного EAV...
За основу EAV я брал вот эту библиотеку: https://sunel.github.io/eav/master/installation.html
Но здесь ни слова про то, что можно сделать атрибут типа связь к другой талице.
Вот и сейчас я смотрю магазин на yii2 и там тоже характеристики можно выбрать только и все. А вот связь к другой таблице сделать нет возможности. Что бы я например мог в характеристике задать пользователя например (внешняя таблица). И как быть?ничем, я и описываю обычный eav
Обычно в eav не пихают связи. Просто атрибуты, типа там размер и цвет товара. А такие вещи отдельно.Вот и сейчас я смотрю магазин на yii2 и там тоже характеристики можно выбрать только и все. А вот связь к другой таблице сделать нет возможности. Что бы я например мог в характеристике задать пользователя например (внешняя таблица). И как быть?
Как это технически выглядит?денормальное представление полиморфной связи таблиц к eav
Мне не нравятся поля типа json - хотя бы потому что по ним нет возможности искать...Обычно в eav не пихают связи. Просто атрибуты, типа там размер и цвет товара. А такие вещи отдельно.
Конечно, если очень захочется, никто не мешает сделать и eav что-то вида entity - "userid" - 123123, но это такое - foreign key не сделаешь, индексы тоже (ну, в постгресе можно).
Смысл eav в том, что у тебя заранее неизвестно, какие будут attributes. Примерно в такой же ситуации используют json-поля или всякие hstore (или mongodb). Когда если делать все columns стандартным подходом, то получится таблица с 100000 columns, да еще и alter-ить придется, и почти все в каждой строке будут пустые - то есть ситуация "разреженности".
Почему нельзя искать? Ты хоть раз пробовал читать документацию?Мне не нравятся поля типа json - хотя бы потому что по ним нет возможности искать...
Можно.Мне не нравятся поля типа json - хотя бы потому что по ним нет возможности искать...
Как то замороченно.Можно.
В mysql: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html
А в постгресе это еще и в тыщу раз эффективнее, чем eav, если использовать jsonb и подходящие индексы. (в mysql можно извратиться с индексируемыми виртуальными столбцами, но это только для частных случаев сгодится)
Тред вчера был когда fb не работал, ватсап и инстаграм - я вздохнул.Кажется тред набирает обороты... *взял попкорн*
есть куча статей про нормализацию, если пленку крутить назад, то придешь к денормальной форме. и да, такие таблицы используют поисковые движки (хочется заметить, что с json ты не прав). но это не значит что в таком виде имеет смысл хранить данные.Как это технически выглядит?
Я не нашел внятных описаний по этой теме - подскажите куда копать.