powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / паттерн EAV
22 сообщений из 22, страница 1 из 1
паттерн EAV
    #39048372
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день, к сути вопроса,

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

для реализации подобной задачи принято решение использовать паттерн EAV (Entity-Attribute-Value). или скорее антипаттерн

но для реализации подобной системы нужно будет извратиться

вообще я уже начал смотреть в сторону nosql но в целом идея следующая на mysql

суть такова для отдельного типа данных -числа строки текст дата , заводится своя отдельная таблица

пользователь заводит задачу(товарный шаблон) и указывает в нем поля, для каждого нового товара создается строка , она связывает задачу и занесенные данные

user
id | user

task
id | id_user | task_name

field
id| id_task| field_name | type_table

row
id |id_task

конкретный вид таблицы для хранения информации определенного вида
id_field | id_row | data


разумна ли подобная организация бд или есть более простое решение7
...
Рейтинг: 0 / 0
паттерн EAV
    #39048424
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hurt3для отдельного типа данных -числа строки текст дата , заводится своя отдельная таблица
А смысл? максимум что будет по таким полям - это фильтрация/поиск. Почему тогда не использовать универсальный тип и конвертацию? тем более что в MySQL типизация, мягко говоря, не очень, а автоприведение типов торчит из всех щелей...
...
Рейтинг: 0 / 0
паттерн EAV
    #39048428
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у нас может быть 10 000 пользователей, каждый пользователь может создать 1000 и более товарных шаблонов, ив каждом товарном шаблоне может быть неограниченное количество свойств для товара

я думал вначале создать под отдельный шаблон отдельную таблицу

но если база будет содержать 10000000 таблиц это не нормально или нет? или какое решение вы можете предложить?
общие свойства могут быть типа размер или цвет но они будут в кардинальном меньшинстве, поэтому затачивать функционал под них отдельно бессмысленно
...
Рейтинг: 0 / 0
паттерн EAV
    #39048519
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не просто ненормально...
...
Рейтинг: 0 / 0
паттерн EAV
    #39048526
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так и какую реализацию задачи посоветуете?
...
Рейтинг: 0 / 0
паттерн EAV
    #39048534
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hurt3,

Вполне решаемый подход. Примерно так и делал одному из заказчиков года 2-3 назад. Относительно живой сервер с 16 гектарами вполне тащил до 5млн товаров с примерно по 15 параметров на каждый.

Таблички со значениями разных типов - имеют смысл, который становится особо понятен, когда вы упретесь в вычисляемые и диапазонные значения "размеры с 36-го по 45-й" ... :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048536
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Да, забылось уже: вам ещё потребуется один тип значений - индексный. Это когда значение - определяет номер (ид) другого товара. Например "упаковка" - картонная коробка 40х30х60, гофрокартон 2мм.

Или ещё такой идиотизм как "набор столовых предметов 7шт: 3 вилки + 3 ложки + зубочистка" ... ну, с комплектами и наборами вам повозится все одно придется. :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048540
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

А, ну ещё ... предоставление другому автору права на пользование товарным шаблоном неизбежно приведет к пропускам в заполнении тех или иных значений ... что будете делать с недоопределенными значениями?

А ещё веселее будет, когда новоиспеченный пользователь шаблона захочет его "поправить", ибо этот параметр называется вовсе не "длина", а "ширина", а тот "толщина", а не высота... :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048542
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Ну и под занавес: что будете делать с сокращениями значений и ваще с их разнокалиберным написанием?

вот к примеру "л." - это "листов", "литров" или чего ишо? Требование писать только верно - приведет к извечному "а я так вижу!" и? :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048544
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Ну и поле id_task у вас использовано избыточно. Одно использование - точно лишнее. :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048565
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109А ещё веселее будет, когда новоиспеченный пользователь шаблона захочет его "поправить", ибо этот параметр называется вовсе не "длина", а "ширина", а тот "толщина", а не высота... :)Гы... вспомнился offtop
мужчины для измерения габаритных предметов используют 3 характеристики: высота, ширина, длина
У женщин тоже 3 характеристики, но немного другие: высота, ширина, глубина

физиология-с
...
Рейтинг: 0 / 0
паттерн EAV
    #39048643
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

Да просто я этой темой с перерывами занимаюсь с 2000-го года. Когда ещё на Access-97 забабахал себе прогу "автоматизированный снабженец" ... тогда это ещё не называлось так громко - "EAV" (Тенцер ещё не писал свою статью), а просто: "хранение данных повдоль: одна запись - одно свойство" против обычного "поперек: одна запись - весь набор свойств, колонок" ...

Так вот тогда и появилась "эйфория": да ща мы весь мир в БД запих*ем! Ага ... так это "щазз" и тянется... хотя, современные компы, в целом, уже позволяют утверждать что "решение близко". :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048704
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Таблички со значениями разных типов - имеют смысл, который становится особо понятен, когда вы упретесь в вычисляемые и диапазонные значения "размеры с 36-го по 45-й" ... :)
Я, правда, не каждый день такие базы клепаю, да и записей там обычно меньше миллиарда... но вот когда возникла именно такая надобность - диапазонные отборы и вычисления,- я пошёл по пути "одна таблица, но несколько полей". Т.е. стринговое поле заполнено всегда, а из остальных заполнены только те, которые приводимы. Типа
CREATE TABLE EAV_data (
id BIGINT AI PK,
sValue VARCHAR(255) NOT NULL,
lValue BIGINT,
dValue DOUBLE,
dtValue DATETIME
)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048830
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин ну ппц а решать нужно, есть более простое решение?
...
Рейтинг: 0 / 0
паттерн EAV
    #39048843
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
а смысл? яица в одну корзину

Arhat109

>А, ну ещё ... предоставление другому автору права на пользование товарным шаблоном неизбежно приведет к пропускам в >заполнении тех или иных значений ... что будете делать с недоопределенными значениями?

это можно обыграть запросом sql, или через php

>вот к примеру "л." - это "листов", "литров" или чего ишо? Требование писать только верно - приведет к извечному "а я так вижу!" и? >:)

определение типа измеряемой единицы в отдельной таблице

все это ничего, и решение на php можно разработать и прочие мелочи учесть. Смущает один момент -фактически создается новая бд из mysql и php, и я чувствую что это не верный подход, но как иначе решить задачу не знаю, задаю этот вопос на 3 форумах в итоге все по 0. Я не прошу за меня думать но хотя бы какую то наметку получить
...
Рейтинг: 0 / 0
паттерн EAV
    #39048850
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hurt3,

Дык, вам об том и пишут, что полноценного решения до сих пор нет ... никакого. Я вам привел список ожидающих вас проблем "первого уровня", что вспомнил, на память ... это далеко не "огласите весь список пжалста!" :) Там ишо проблема очепяток и синонимии вкупе с "отображением", контекстно разного смысла у разных "авторов", утерянного контекста и его восстановления (проблема поисковиков ... Яндекс), поиска "аналогов", желании продавцов продавать свой, уникальный аналог ... и т.д.

Решение лучше или хуже - возможно только при задании сильных ограничений на задачу "в целом". Вот и уточняйте свое ТЗ до "приемлемого" уровня. В таком виде - сказать "есть ли лучше" - низзя. Я уже скока лет занимаюсь этим вопросом (периодически, ктобы платил...). :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048856
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hurt3,

"все бы ничего, но создается новая БД..."

Конечно. Любое клиентское приложение (Скуль + клиент) - завсегда и есть такая "БД". Скуль "сам по себе" - всего лишь инструмент .. Система Управления Базами Данных (СУБД)

как-то так. :)

P.S.

Посмотрите в сторону Cache и Mumps ... там есть ряд очень вкусных решений как раз этой задачи (EAV). Тока "не пугайтесь". :)
...
Рейтинг: 0 / 0
паттерн EAV
    #39048959
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hurt3а смысл?
Привязывать одну таблицу, пусть и вдвое бОльшую, дешевле, чем четыре.
...
Рейтинг: 0 / 0
паттерн EAV
    #39048999
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arhat109 , Akina спасибо большое

>Посмотрите в сторону Cache и Mumps ...

нужно почитать тему не закрывайте, думаю дискуссия продолжится после изучения материала
...
Рейтинг: 0 / 0
паттерн EAV
    #39049254
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Посмотрите в сторону Cache и Mumps ...

да что то уже более похожее на нужное решение, хоть и в стиле алгебры древнего египта
...
Рейтинг: 0 / 0
паттерн EAV
    #39049266
hurt3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
господа а что можете сказать о Redis ? может быть его лучше применить?
...
Рейтинг: 0 / 0
паттерн EAV
    #39049376
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может в будущее... CUBRID ...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / паттерн EAV
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]