|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Вопрос, есть товары А, Б и С, ну их целый список, у них есть общие поля такие как наименование, артикул и так далее, все по стандарту. Далее возникает сложность, например под товаром А я подразумевают лист железа, у которого 2 параметра это длина и ширина, под товаром Б я подразумеваю объемное железо, параметры длина, ширина и высота. Предположим что мы продаем несколько видов прямоугольного железа 1 на 1, 2 на 3 и 3 на 4, у каждого есть своя цена, то же самое и с объемным железом, есть цена. Первая мысль это сделать отдельные справочные таблицы с параметрами и ценами для каждого товара, тогда возникает проблема как эти справочные таблицы связать с основной таблицей товаров. Вторая мысль это сделать отдельную таблицу для каждого товара, где можно с небольшим избытком связать её со справочной таблицей, но опять возникнет сложность объединения товаров в единую таблицу. Вопрос что делать? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 13:37 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999Вопрос, есть товары А, Б и С, ну их целый список, у них есть общие поля такие как наименование, артикул и так далее, все по стандарту. Далее возникает сложность, например под товаром А я подразумевают лист железа, у которого 2 параметра это длина и ширина, под товаром Б я подразумеваю объемное железо, параметры длина, ширина и высота. Предположим что мы продаем несколько видов прямоугольного железа 1 на 1, 2 на 3 и 3 на 4, у каждого есть своя цена, то же самое и с объемным железом, есть цена. Вопрос что делать? Заранее благодарен. 1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка) 2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес) 3. Справочник цен по вариантам поставки ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:04 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
STFW Entity-Attribute-Value model Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:04 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:11 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка) 2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес) 3. Справочник цен по вариантам поставки Не совсем понял, можно немного на пальцах объяснить? Alex_496Dimitry Sibiryakov, прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику. А у вас есть вариант решения проблемы? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:19 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Alex_496Dimitry Sibiryakov, прежде чем упоминать про EAV, необходимо хорошо подумать про недостатки модели, в частности, обеспечение функциональной зависимости между атрибутами и обеспечения правил проверки на фазе ввода/изменения данных. При EAV зачастую накапливаются противоречия согласованности, аномалии данных, что в последствии сводит на нет аналитику. +1 Добавлю, что при всей своей универсальности, набор из множества характеристик никем не используется, кроме (иногда) узких специалистов. Всех устраивает перечисление ключевых характеристик через запятую (или по ГОСТУ) для контекстного поиска. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:23 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
[quot Petka999] 1. Справочник материалов (Например: Сталь-марка, Медь-марка, Резина-марка) 2. Справочник вариантов поставки и размеров со ссылкой на материал (Сталь-марка-лист-размер, Медь-марка-круг-длина, Резина-марка-упаковка-вес) 3. Справочник цен по вариантам поставки Не совсем понял, можно немного на пальцах объяснить? [quot Alex_496]Dimitry Sibiryakov, Можно так: 1. Справочник материалов: Вид материала - строка Отличительная характеристика (марка, сорт, гост...) - строка Натуральная ед.измерения (вес, объем...) - справочник 2. Справочник вариантов поставки : Материал - ссылка на материал, Вариант поставки (Лист, Круг, Упаковка,..) - строка; Характеристика поставки (размер упаковки, гост,...) - строка Условная единица измерения (штуки, упаковки, бухты) - справочник Коэф-нт пересчета условных в натуральные ед. - число Справочник цен: Вариант поставки - ссылка , Цена - число, ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:34 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Предметы лучше идентифицировать по основным атрибутам в наименовании. Например: А1000 Лист стальной (Сталь 10), толщина 1.0мм, холоднокатанный, стандарт... А1001 Лист стальной (Сталь 10), толщина 1.2мм, холоднокатанный, стандарт... ...... N20134 Проволока волоченная (Алюминий АЛ20), диаметр 3.3мм, стандарт... И т.д. Дополнительными атрибутами могут быть цвет, вес 1 погонного (квадратного) метра, упаковка, минимальная партия и т.д. и т.п. Дополнительные атрибуты размещаются в отдельных таблицах. Плюс таблица связности (предметов и атрибутов). Самое главное при таком подходе - правильно разделить все возможные атрибуты на основные и дополнительные. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 14:42 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
sereginseregin, Сейчас я понял ход мыслей, но поясню в чем конкретно загвоздка, опять же, на примере. Другой пример, по проще слегка. У нас продается...Веревка. минимальный размер от 10 см с шагом 10 см до 100 метров, то есть 10, 20, 30... 100 см .. 1000см указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно) В приложении к БД пользователь вводит длину веревки (он не может помнить сколько стоит веревка размером 95 см), после ввода, должна подгрузиться стоимость этой веревки. Приложение должно взять ближайшее число в бОльшую сторону(округлить до метра) и выдать стоимость, то есть эти 97 рублей. Это и есть основная задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:02 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999Это и есть основная задача. Эта задача нечёткого поиска в приложении не имеет прямого отношения к проектированию БД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:05 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Каждый месяц какой то фунтик задает ВОПРОС - Издали все вещи похожи друг на друга! Как же их различить? ОТВЕТ - Подойди поближе или купи телескоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:15 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Я задаю вопрос о том как лучше сгруппировать данные в БД... Как их хранить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:54 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999Я задаю вопрос о том как лучше сгруппировать данные в БД... Как их хранить Для твоего случая EAV подходит лучше всего. Но это весьма сложная в эксплуатации структура данных и сможешь ли ты с ней справиться - неизвестно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:59 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999sereginseregin, Другой пример, по проще слегка. У нас продается...Веревка. минимальный размер от 10 см с шагом 10 см до 100 метров, то есть 10, 20, 30... 100 см .. 1000см указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно) Это и есть основная задача. Веревка продается на метраж. Справочник номенклатуры тут не причем. Логика накручивается для спецификаций цен: - Номенклатура (вариант поставки)- ссылка; - Минимальный объем (размер, вес) продажи - число; - Стоимост минимального объема - число; - Период действия цены - даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 18:44 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Ранжирование результатов поиска в базе, возможно поможет: https://postgrespro.ru/docs/postgrespro/9.5/textsearch-controls#TEXTSEARCH-RANKING ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 23:16 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999указаны стоимости веревки от длины, например 10 см стоят 10 рублей, 20 см - 20 рублей, 100см 97 рублей(типа оптом дешевле, это не важно) В приложении к БД пользователь вводит длину веревки (он не может помнить сколько стоит веревка размером 95 см), после ввода, должна подгрузиться стоимость этой веревки. Приложение должно взять ближайшее число в бОльшую сторону(округлить до метра) и выдать стоимость, то есть эти 97 рублей. Это и есть основная задача. Это не задача допхарактеристик. Это задача расчета цен прайс листа, а точнее - "скидки по количеству". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 02:47 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Недавно я сам мучился этим вопросом. У меня в задаче было конечное число (небольшое) объектов, но сильно отличающихся. Я сделал это через наследование. Вам думаю лучше будет хранить данные в json формате. То есть примерно так: таблица номенклатура: 1. id - int 2. name - varchar 3. parameters - jsonb В поле parameters можете загонять уже цвет, толщину, форму, и все что угодно. { color: RED, shape: CIRCLE. } Плюсы жсейсона в отличие от выделения каждому параметру поле в таблице: 1. Расширяемость полей (количество); 2. Поиск нативный (я использую постгрес); 3. Все в одном месте в отличие от того же EAV модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 12:10 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Вам думаю лучше будет хранить данные в json формате. Дальше можно не читать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 14:56 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
L_argoВам думаю лучше будет хранить данные в json формате. Дальше можно не читать. :) Что вас забавляет не могу понять!? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:26 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
ПомидорL_argoпропущено... Дальше можно не читать. :) Что вас забавляет не могу понять!?Потому что тему ЖСОНа/ХМЛ как хранилища полей тут сто раз обсосали. Это в общем случае очень ущербное решение, применимое в узком круге задач. Особенно для не ПостГре. зы: просьба дискуссию на эту тему не продолжать. Ради интереса можете попробовать поискать старые топики тут или в соседних форумах. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 22:00 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
L_argoЭто в общем случае очень ущербное решение, применимое в узком круге задач. А монгах, например, других и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 22:43 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
ПомидорНедавно я сам мучился этим вопросом. У меня в задаче было конечное число (небольшое) объектов, но сильно отличающихся. Я сделал это через наследование. Вам думаю лучше будет хранить данные в json формате. То есть примерно так: таблица номенклатура: 1. id - int 2. name - varchar 3. parameters - jsonb В поле parameters можете загонять уже цвет, толщину, форму, и все что угодно. { color: RED, shape: CIRCLE. } Плюсы жсейсона в отличие от выделения каждому параметру поле в таблице: 1. Расширяемость полей (количество); 2. Поиск нативный (я использую постгрес); 3. Все в одном месте в отличие от того же EAV модели. Поделитесь опытом как это использовать для товаров? Нужно найти товар с определенными характеристиками. (в базе несколько сотен миллионов позиций). Не уверен что по json можно делать на уровне базы запросы. Т.е. надо будет достать из базы jsonы по всем товарам, в них порыться и найти товар с нужными характеристиками? Правильно понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:37 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше). Не важно количество параметров. Параметр по сути один - цена, в зависимости от изменения некоторых величин. На самом деле хорошего решения проблемы пока что не нашел нигде. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 14:28 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 14:50 |
|
Сложность в проектировании
|
|||
---|---|---|---|
#18+
Petka999На самом деле большинсво не правильно поняли проблему - основная проблема не в том как сделать параметры, а пример с веревкой (см выше). Действительно Ваш пример с веревкой непонятен - что конкретно у Вас не получается? Найти запись с минимальным значением параметра, большим Х? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 15:36 |
|
|
start [/forum/topic.php?fid=32&msg=39670311&tid=1540021]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 164ms |
0 / 0 |