Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / паттерн EAV / 22 сообщений из 22, страница 1 из 1
10.09.2015, 17:36:16
    #39048372
hurt3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
паттерн EAV
добрый день, к сути вопроса,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Arhat109

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

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

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

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

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

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

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

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

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

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

P.S.

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

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

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

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


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