powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сложность в проектировании
25 сообщений из 25, страница 1 из 1
Сложность в проектировании
    #39668782
Petka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос, есть товары А, Б и С, ну их целый список, у них есть общие поля такие как наименование, артикул и так далее, все по стандарту. Далее возникает сложность, например под товаром А я подразумевают лист железа, у которого 2 параметра это длина и ширина, под товаром Б я подразумеваю объемное железо, параметры длина, ширина и высота. Предположим что мы продаем несколько видов прямоугольного железа 1 на 1, 2 на 3 и 3 на 4, у каждого есть своя цена, то же самое и с объемным железом, есть цена.

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

Вторая мысль это сделать отдельную таблицу для каждого товара, где можно с небольшим избытком связать её со справочной таблицей, но опять возникнет сложность объединения товаров в единую таблицу.

Вопрос что делать? Заранее благодарен.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668807
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petka999Вопрос, есть товары А, Б и С, ну их целый список, у них есть общие поля такие как наименование, артикул и так далее, все по стандарту. Далее возникает сложность, например под товаром А я подразумевают лист железа, у которого 2 параметра это длина и ширина, под товаром Б я подразумеваю объемное железо, параметры длина, ширина и высота. Предположим что мы продаем несколько видов прямоугольного железа 1 на 1, 2 на 3 и 3 на 4, у каждого есть своя цена, то же самое и с объемным железом, есть цена.

Вопрос что делать? Заранее благодарен.

1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка)
2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес)
3. Справочник цен по вариантам поставки
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668808
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFW Entity-Attribute-Value model
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668817
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668829
Petka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка)
2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес)
3. Справочник цен по вариантам поставки

Не совсем понял, можно немного на пальцах объяснить?

Alex_496Dimitry Sibiryakov,

прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику.

А у вас есть вариант решения проблемы? Заранее благодарен.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668831
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_496Dimitry Sibiryakov,

прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику.
+1

Добавлю, что при всей своей универсальности, набор из множества характеристик никем не используется, кроме (иногда) узких специалистов. Всех устраивает перечисление ключевых характеристик через запятую (или по ГОСТУ) для контекстного поиска.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668848
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Petka999] 1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка)
2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес)
3. Справочник цен по вариантам поставки

Не совсем понял, можно немного на пальцах объяснить?

[quot Alex_496]Dimitry Sibiryakov,
Можно так:
1. Справочник материалов:
Вид материала - строка

Отличительная характеристика (марка, сорт, гост...) - строка

Натуральная ед.измерения (вес, объем...) - справочник

2. Справочник вариантов поставки :

Материал - ссылка на материал,

Вариант поставки (Лист, Круг, Упаковка,..) - строка;

Характеристика поставки (размер упаковки, гост,...) - строка

Условная единица измерения (штуки, упаковки, бухты) - справочник

Коэф-нт пересчета условных в натуральные ед. - число

Справочник цен:

Вариант поставки - ссылка ,

Цена - число,
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668853
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предметы лучше идентифицировать по основным атрибутам в наименовании. Например:

А1000 Лист стальной (Сталь 10), толщина 1.0мм, холоднокатанный, стандарт...
А1001 Лист стальной (Сталь 10), толщина 1.2мм, холоднокатанный, стандарт...
......
N20134 Проволока волоченная (Алюминий АЛ20), диаметр 3.3мм, стандарт...

И т.д.
Дополнительными атрибутами могут быть цвет, вес 1 погонного (квадратного) метра,
упаковка, минимальная партия и т.д. и т.п.
Дополнительные атрибуты размещаются в отдельных таблицах.
Плюс таблица связности (предметов и атрибутов).

Самое главное при таком подходе - правильно разделить все возможные атрибуты на основные и дополнительные.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668992
Petka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sereginseregin,

Сейчас я понял ход мыслей, но поясню в чем конкретно загвоздка, опять же, на примере.

Другой пример, по проще слегка. У нас продается...Веревка. минимальный размер от 10 см с шагом 10 см до 100 метров, то есть 10, 20, 30... 100 см .. 1000см

указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно)

В приложении к БД пользователь вводит длину веревки (он не может помнить сколько стоит веревка размером 95 см), после ввода, должна подгрузиться стоимость этой веревки. Приложение должно взять ближайшее число в бОльшую сторону(округлить до метра) и выдать стоимость, то есть эти 97 рублей.

Это и есть основная задача.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39668995
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petka999Это и есть основная задача.

Эта задача нечёткого поиска в приложении не имеет прямого отношения к проектированию БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669005
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый месяц какой то фунтик задает
ВОПРОС -
Издали все вещи похожи друг на друга! Как же их различить?

ОТВЕТ -
Подойди поближе или купи телескоп.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669046
Petka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Я задаю вопрос о том как лучше сгруппировать данные в БД... Как их хранить
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669050
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petka999Я задаю вопрос о том как лучше сгруппировать данные в БД... Как их хранить

Для твоего случая EAV подходит лучше всего. Но это весьма сложная в эксплуатации структура
данных и сможешь ли ты с ней справиться - неизвестно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669071
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petka999sereginseregin,

Другой пример, по проще слегка. У нас продается...Веревка. минимальный размер от 10 см с шагом 10 см до 100 метров, то есть 10, 20, 30... 100 см .. 1000см

указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно)

Это и есть основная задача.

Веревка продается на метраж. Справочник номенклатуры тут не причем. Логика накручивается для спецификаций цен:
- Номенклатура (вариант поставки)- ссылка;
- Минимальный объем (размер, вес) продажи - число;
- Стоимост минимального объема - число;
- Период действия цены - даты.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669148
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ранжирование результатов поиска в базе, возможно поможет:
https://postgrespro.ru/docs/postgrespro/9.5/textsearch-controls#TEXTSEARCH-RANKING
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669194
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petka999указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно)
В приложении к БД пользователь вводит длину веревки (он не может помнить сколько стоит веревка размером 95 см), после ввода, должна подгрузиться стоимость этой веревки. Приложение должно взять ближайшее число в бОльшую сторону(округлить до метра) и выдать стоимость, то есть эти 97 рублей.
Это и есть основная задача.

Это не задача допхарактеристик.
Это задача расчета цен прайс листа, а точнее - "скидки по количеству".
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39669958
Помидор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недавно я сам мучился этим вопросом. У меня в задаче было конечное число (небольшое) объектов, но сильно отличающихся. Я сделал это через наследование. Вам думаю лучше будет хранить данные в json формате. То есть примерно так:
таблица номенклатура:
1. id - int
2. name - varchar
3. parameters - jsonb

В поле parameters можете загонять уже цвет, толщину, форму, и все что угодно.
{
color: RED,
shape: CIRCLE.
}

Плюсы жсейсона в отличие от выделения каждому параметру поле в таблице:
1. Расширяемость полей (количество);
2. Поиск нативный (я использую постгрес);
3. Все в одном месте в отличие от того же EAV модели.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670084
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам думаю лучше будет хранить данные в json формате. Дальше можно не читать. :)
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670261
Помидор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argoВам думаю лучше будет хранить данные в json формате. Дальше можно не читать. :)
Что вас забавляет не могу понять!?
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670311
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПомидорL_argoпропущено...
Дальше можно не читать. :)
Что вас забавляет не могу понять!?Потому что тему ЖСОНа/ХМЛ как хранилища полей тут сто раз обсосали.
Это в общем случае очень ущербное решение, применимое в узком круге задач.
Особенно для не ПостГре.

зы: просьба дискуссию на эту тему не продолжать. Ради интереса можете попробовать поискать старые топики тут или в соседних форумах.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670334
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЭто в общем случае очень ущербное решение, применимое в узком круге задач.

А монгах, например, других и нет
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670461
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПомидорНедавно я сам мучился этим вопросом. У меня в задаче было конечное число (небольшое) объектов, но сильно отличающихся. Я сделал это через наследование. Вам думаю лучше будет хранить данные в json формате. То есть примерно так:
таблица номенклатура:
1. id - int
2. name - varchar
3. parameters - jsonb

В поле parameters можете загонять уже цвет, толщину, форму, и все что угодно.
{
color: RED,
shape: CIRCLE.
}

Плюсы жсейсона в отличие от выделения каждому параметру поле в таблице:
1. Расширяемость полей (количество);
2. Поиск нативный (я использую постгрес);
3. Все в одном месте в отличие от того же EAV модели.

Поделитесь опытом как это использовать для товаров? Нужно найти товар с определенными характеристиками. (в базе несколько сотен миллионов позиций). Не уверен что по json можно делать на уровне базы запросы.
Т.е. надо будет достать из базы jsonы по всем товарам, в них порыться и найти товар с нужными характеристиками? Правильно понимаю?
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670709
Petka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше). Не важно количество параметров. Параметр по сути один - цена, в зависимости от изменения некоторых величин. На самом деле хорошего решения проблемы пока что не нашел нигде.
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670734
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergueiПомидорНедавно я сам мучился этим вопросом. У меня в задаче было конечное число (небольшое) объектов, но сильно отличающихся. Я сделал это через наследование. Вам думаю лучше будет хранить данные в json формате. То есть примерно так:
таблица номенклатура:
1. id - int
2. name - varchar
3. parameters - jsonb

В поле parameters можете загонять уже цвет, толщину, форму, и все что угодно.
{
color: RED,
shape: CIRCLE.
}

Плюсы жсейсона в отличие от выделения каждому параметру поле в таблице:
1. Расширяемость полей (количество);
2. Поиск нативный (я использую постгрес);
3. Все в одном месте в отличие от того же EAV модели.

Поделитесь опытом как это использовать для товаров? Нужно найти товар с определенными характеристиками. (в базе несколько сотен миллионов позиций). Не уверен что по json можно делать на уровне базы запросы.
Т.е. надо будет достать из базы jsonы по всем товарам, в них порыться и найти товар с нужными характеристиками? Правильно понимаю?
https://hackernoon.com/how-to-query-jsonb-beginner-sheet-cheat-4da3aa5082a3
...
Рейтинг: 0 / 0
Сложность в проектировании
    #39670781
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petka999На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше).
Действительно Ваш пример с веревкой непонятен - что конкретно у Вас не получается? Найти запись с минимальным значением параметра, большим Х?
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сложность в проектировании
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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