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

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

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

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

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

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

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

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

Alex_496Dimitry Sibiryakov,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А монгах, например, других и нет
...
Рейтинг: 0 / 0
06.07.2018, 09:37
    #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
06.07.2018, 14:28
    #39670709
Petka999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложность в проектировании
На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше). Не важно количество параметров. Параметр по сути один - цена, в зависимости от изменения некоторых величин. На самом деле хорошего решения проблемы пока что не нашел нигде.
...
Рейтинг: 0 / 0
06.07.2018, 14:50
    #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
06.07.2018, 15:36
    #39670781
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложность в проектировании
Petka999На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше).
Действительно Ваш пример с веревкой непонятен - что конкретно у Вас не получается? Найти запись с минимальным значением параметра, большим Х?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сложность в проектировании / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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