|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
Приветствую, уважаемые знатоки! Запутался с построением базы, прошу помощи. 1. На уровне Подкатегории начинается разделение вложенных таблиц по характеристикам. Условно говоря, у деревьев или кустарников, включается характеристика(свойство): морозостойкость. А в комнатных такой нет. В таблице ВидРастения, также, если берем картофель или томат, то также не применяется, а у винограда, каждого сорта свое значение. К тому же, в Подкатегории, могут появиться другие товары, которые к растениям не относятся вовсе, они пойдут по другой линии и для них другие свойства должны быть определены. Вопрос такой: Как построить таблицы, чтобы в виде растений определялись НазваниеХарактеристики(свойств), которые затем заполнялись данными уже для каждого сорта? 2. Еще задумка была, создать таблицу номенклатур с разными свойствами, например растения, стройматериалы, садовый инвентарь и т.п. А далее уже оттуда вытаскивать данные и определять для них цены, т.е. номенклатура просто список, продукции, а таблица с ценами это уже другая. 2.1. Правильно ли так строить базу? 2.2 Одной таблицей всю номенклатуру или разделить по нескольким? 2.3. И таблица с ценами одна или несколько? Как прикрепить файл не понял, залил на диск, тут то что у меня получилось на данный момент. https://yadi.sk/d/F5l286MBj1QhXQ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 10:49 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostiks, С Вашей БД особо не разбирался-предлагаю вариант: для цен добавите соответствующую форму. В которой при смене цены будете делать новую запись (этот процесс можно максимально автоматизировать и свести только к вводу новой цены. В тбл,"заказано",через форму "заказы", записывать цену(Dlookup) для которой поле [цена].[цена ПО] будет пустым,а [цена].[товар]=me.заказано.Form.товар ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 13:21 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku, еще таблицу свойства можно исключить,а описывать их в тбл.товар в которой предусмотреть все возможные поля и оставляя пустые если свойство отсутствует(скрывая пустые или создав для товаров с одинаковыми свойствами формы с отображением нужных полей-короче возможны варианты.Считаю что нет необходимости создавать несколько таблиц для товаров с разными свойствами ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 13:34 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdkukostiks, С Вашей БД особо не разбирался-предлагаю вариант: sdku, благодарю за ответ, посмотрел ваш файл, в целом логика вроде понятна. А в целом практика нормальная, когда куча характеристик устроены столбцами в таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 13:50 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostiks, когда в таблице часть полей пуста-это вполне нормально.А вот разносить на несколько таблиц одну сущность-товар(ведь свойства это атрибут товара)не правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 14:00 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostikssdkukostiks, С Вашей БД особо не разбирался-предлагаю вариант: sdku, благодарю за ответ, посмотрел ваш файл, в целом логика вроде понятна. А в целом практика нормальная, когда куча характеристик устроены столбцами в таблице? даже паттерн такой есть. Вон - clickhouse как итог развития многостолбцовых хранилищ. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 14:00 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostiks, На форуме Проектирование БД ? куда было бы логичнее обратиться с таким вопросом, вам бы скорее всего порекомендовали EAV... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 21:16 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
vmag, Возможно, но теперь, по всей видимости поздно. Вот получается выбор между eav и то что sdku и Озверин, столбцами. Пока что ищу, изучаю примеры хотя бы, как это в реальных условиях выглядит, реальные рабочие базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 10:00 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostiks, "Entity–attribute–value model (EAV) – это модель данных, которая благодаря использованию сущностей, атрибутов и их значений обеспечивает большую гибкость при создании новых данных." Не помню дословно,как-то так: таблица должна максимально полно(в нужном Вам объеме-не надо создавать несколько таблиц описывающих один атрибут -свойства для одной сущности -товар) описывать ОДНУ сущность-а EAV это после создания таблиц. Эта модель не для СОЗДАНИЯ таблиц. А у Вас затык именно в создании ( Любой товар имеет свойства и если поле с названием свойства пустое, то этот товар просто не имеет его. Например надпись и поле имеют\не имеют одинаковые\разные свойства,хотя оба являются элементами управления-не надо создавать кучу таблиц свойств по количеству элементов управления-достаточно одной-"элементы" с описанием сущности элемент с атрибутом свойства и потом EAV) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 13:08 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku... Любой товар имеет свойства и если поле с названием свойства пустое, то этот товар просто не имеет его... Не факт. Может его забыли или не захотели заполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 13:21 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
Predeclared, Самое интересное что это абсолютно никак не отразится на "правильности" функционирования БД-а по большому счету есть ряд способов проверить заполнение полей для каждой категории товаров-об этом пусть "голова болит" у разработчика Ели для поля "номер паспорта" не задать маску из 6 обязательных цифр Маша-оператор с успехом может туда внести 5 (или внести 2 вместо 3 навряд-ли это быстро выявится)-гораздо проще её задать, а не стоять над юзером и проверять правильность заполнения формы. Должность "проверщик" еще не придумали , а вот выявить виновника и пнуть Машу пинком под зад с работы-это запросто. И вообще добросовестное исполнение своих обязанностей(внесение данных в БД) было есть и будет головной болью разработчика-уж слишком велика сложность их выявления и очень много причин этих ошибок-всего не предусмотришь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 14:00 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku...Самое интересное что это абсолютно никак не отразится на "правильности" функционирования БД... Очень даже может отразиться. Например: в выборку поиска по цвету "зеленый" не попадет предмет/товар, в описании которого забыли заполнить поле "цвет". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 14:11 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
Да,отразится. В абсолютно любой БД при "неверных" данных(а для РС они просто данные) Вы получите "неверный"(математически абсолютно верный) результат-я говорю о том что БД не будет "сломана",что при неверной структуре она может и "сломаться" sdku.... И вообще добросовестное исполнение своих обязанностей(внесение данных в БД) было есть и будет головной болью разработчика-уж слишком велика сложность их выявления и очень много причин этих ошибок-всего не предусмотришьМожет Вы хотите предложить универсальный способ борьбы с ошибками оператора который сегодня встал не с той ноги(интересно а почему сталкиваются самолеты-может комп-кусок железа и "камня" виноват) Все очень просто-тщательная проверка вводимых данных и ответственное отношение к своей работе-лучшего еще не придумано (Можете кинуть клич о публикации на лесенке "косяков" операторов-прочтете такое о чем даже смутно не подозревали. Даже сканирование документа,в котором уже может быть ошибка,ничего не даст) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 14:45 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku...-прочтете такое о чем даже смутно не подозревали... Я за последние лет 15 насмотрелся разного, меня этим не удивить. В том числе ошибок, напрямую связанных с ошибками проектирования. Потому и обратил внимание на ваши неоднозначные утверждения. "Жизнь" существенно богаче и разнообразнее, чем возможности реляционной модели. Любые решения - по сути компромиссы, более или менее удачные. Иногда неудачные реализации "живут" дольше и счастливее, чем "вылизанные и выстраданные" решения. Перефразируя поэта:Побольше баз данных, хороших и разных! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 15:06 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku...Не помню дословно,как-то так: таблица должна максимально полно(в нужном Вам объеме-не надо создавать несколько таблиц описывающих один атрибут -свойства для одной сущности -товар) описывать ОДНУ сущность.... Итог:мой опыт работы с ACCESS позволяет утверждать что нарушая это правило создать нормальную БД невозможно- хоть "неудачные реализации",хоть "вылизанные и выстраданные" (с оговоркой если связь между таблицами не 1:1-хотя такую связь лично я не применяю) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 15:24 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku...: таблица должна максимально полно(в нужном Вам объеме-...) описывать ОДНУ сущность.... Вот я тут "не отходя далеко от кассы" попытался впихнуть в одну "щирокую" таблицу описание товара близкой нам всем темы "компьютерные комплектующие и периферия. Походил по сайтам производителей комплектующих моей домашней сборки в поисках спецификаций. Результат: Материнская плата - 20 свойств Видеокарта - 14 свойств Процессор - 22 свойства SSD - 29 свойств БП - 30 свойств Корпус - 18 свойств Кулер процессора - 26 свойств Мышь - 12 свойств Клавиатура - 13 свойств Монитор - 54 свойства Оперативная память - 8 свойств Роутер - 22 свойства Уже набралось 268 полей. А я еще даже до внешних накопителей/принтеров/сканеров/наушников/геймпадов не добрался. Резюмируя: не шмогла моя одна "широкая" табличка вместить в себя все уникальные свойства описания сущности - товар. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 16:41 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdku, А разве не будет EAV, называться такой вариант, если я завожу отдельную таблицу id | НазваниеСвойства | ЗначениеСвойства | idТовара И строками эти свойства заполняю. Затем уже эта таблица каким-то образом связывается с таблицей товары или номенклатуры. Возможно я не совсем понимаю логику построения баз данных и задаю глупые вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 17:02 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
Predeclared, стесняюсь спросить:а разве геометрические размеры,потребляемая мощность,интерфейс и ряд других параметров не будут общими для многих устройств и в таблице представлять одно поле для всех (число полей при этом резко сократится. И что же Вы такое создаете что для монитора хотите хранить аж 54 свойства-разве что-то связанное с разработкой нового монитора,а это уже самостоятельная БД или использование инструмента отличного от ACCESS) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 17:07 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
PredeclaredРезюмируя: не шмогла моя одна "широкая" табличка вместить в себя все уникальные свойства описания сущности - товар. А если разбить это на более мелкие таблицы. Например, за сущность взять не товар, а тот же принтер, жесткий диск, материнка и т.д. И это все потом сослаться со всех к одной таблице - товар. где будет id | idnamePrinters | idPrinters , где idnamePrinters - id товара в таблице Printers, а idPrinters - id таблицы принтеров, в таблице где перечислены все названия таблиц типа tabCategories? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 17:09 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdkuтаблица должна максимально полно(в нужном Вам объеме) описывать ОДНУ сущностьДля тех кто в БТРе: Выделенное красным надо дополнить словами "и разумном" (ведь описывая яблоко в торговой сети Вы не будете хранить свойство "содержание витамина С". Чтоб точно определить вес, того же яблока, нужно знать массу,ускорение свободного падения, географическую широту,скорость с которой теряется влага и т.д и т.п. что в конце концов делает задачу крайне сложной-практически неразрешимой,хотя на практике нас вполне удовлетворяют тривиальные весы. Если интересно посмотрите в сети что есть сегодня эталон метра и как он изменялся во времени-а каким он будет через 100 лет никто не знает) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 17:46 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
sdkuPredeclared, стесняюсь спросить:а разве геометрические размеры,потребляемая мощность,интерфейс и ряд других параметров не будут общими для многих устройств и в таблице представлять одно поле для всех ... Я старался считать только уникальные свойства, хотя не исключаю, что где-нибудь и прихватил дубля. sdku... что для монитора хотите хранить аж 54 свойства... Я просто пересчитал количество описываемых в спецификации свойств моего монитора на сайте производителя. Рекламщики же любят придумать "новые уникальные технологии" и прочая..., ну совершенно необходимые и "выгодно" отличающие товар их производителя от товара другого производителя. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 17:57 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
PredeclaredУже набралось 268 полей. А я еще даже до внешних накопителей/принтеров/сканеров/наушников/геймпадов не добрался. Лично на мой взгляд , приведен не очень удачный пример . Мамка , видяшка , процессор , SSD , cooler , а тем более принтеры , сканеры и т.д. Являются мотдельными сущностями , и лепить их все в одну таблицу мне кажется не совсем правильно. Это составляющие компьютера . Или я не прав ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 18:43 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
Создание БД процесс очень творческий и решения могут быть различными,но один из основных принципов это структурирование данных:вид>группа>подгруппа>подподгруппа и т.д. а дальше варианты:родственные подгруппы могут иметь общую таблицу свойств,если вносятся данные кардинально отличающиеся от уже имеющихся можно запросом на создание таблицы создать новую с какими угодно полями-решать разработчику.Навряд ли существует универсальный способ для всех возможных вариантов-главное не нарушать принципы "базостроения". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 19:22 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
DarkMan... Это составляющие компьютера . Или я не прав ? В контексте топика - товар/продукция. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 19:55 |
|
Построение базы данных продукции с разными свойствами(характеристиками)
|
|||
---|---|---|---|
#18+
kostiks, все намешано в одну (в 2 здесь, но в боевой базе все будет в одной) таблицу - кони, люди... посмотрите может понравится https://cloud.mail.ru/public/3Xeb/3oRgNuVbY с примером отношения 1 к 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 20:53 |
|
|
start [/forum/topic.php?fid=45&fpage=30&tid=1610604]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 157ms |
0 / 0 |