|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Не могу придумать, как правильно организовать БД, в которой должна храниться информация об объектах разных типов, при этом у каждого типа свой набор атрибутов. Если точнее, то это электронные компоненты. Для каждого из них указывается наименование, производитель, плюс к этому для некоторых типов указываются дополнительные характеристики, например: для резисторов - сопротивление, единица измерения, допуск, номинальная мощность, температурный коэффициент, корпус для керамических конденсаторов - ёмкость, единица измерения, допуск, номинальное напряжение, тип диэлектрика, корпус для микросхем - тип и корпус. Вопрос в том, как лучше организовать таблицы для хранения этих данных? Я придумал 3 варианта, но ни один из них меня не устраивает. 1) Отдельная таблица для каждого типа Резисторы (id, наименование, производитель, сопротивление, допуск, номинальная мощность, температурный коэффициент, корпус) Конденсаторы (...) Недостатки: - Дублирование всех связанных таблиц - Дублирование всех форм (или же придумывание сложных костылей) 2) Отдельные таблицы для типов + сводная таблица Таблицы для типов такие же, как в п. 1, сводная таблица содержит имя таблицы типов и номер записи: idИмя_таблицыНомер_записи1Резисторы12Конденсаторы1 Этот вариант мне кажется наиболее оптимальным, но: - Не будет обеспечения целостности данных - Невозможно в запросе задать имя таблицы, считав его из сводной таблицы. Единственный выход - формировать запросы в VBA. 3) Сводная таблица с неопределёнными атрибутами idнаименованиепроизводительтипзначение1величина1значение2величина2атрибут1атрибут21RC0402JR-0722RLYageoрезистор22Ом62.5Вт04022CL31B102KBCNNNCSamsungконденсатор1000пФ50ВX7R12063AD9850BRSZAnalog DevicesмикросхемаDDSSSOP-28 Недостатки: - Избыточные атрибуты - Работа с данными сложнее, чем в случае таблиц со строго определёнными атрибутами; так же могут возникнуть затруднения, если потребуется модифицировать структуру таблицы - Таблицы, связанные с атрибутами, будут содержать беспорядочный набор данных (в данном примере - таблица - источник значений атрибута "величина1" содержит единицы измерения и сопротивления, и ёмкости, а источник значений атрибута "атрибут1" - и тип диэлектрика конденсатора, и тип микросхемы). Существуют ли более лучшие способы решения этой задачи? В т.ч. связанные с переходом на другую СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 16:06 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Это EAV Таблица Деталей + Таблица Параметров + Связующая таблица между ними ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 16:59 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
1. сначала определите типы(Резисторы, Конденсаторы), наборы атрибутов (сопротивление, единица измерения, допуск, ёмкость, единица измерения, допуск, номинальное напряжение)-определяем тип этих данных, затем собираем набор шаблонов для резисторов это один набор, для конденсаторов - другой - это таблица наборов- это может быть EAV, может в отдельных таблицах. 2. создаете обычную таблицу из 3-х полей; полей точно должно быть больше-поставщик, дата поставки и пр поля. - но эти вопросы не рассматриваем. id idнабор field1|field2|field31234555.345|6.4|200 заносите в неё данные, а что это за данные, что за наборы - определяете из таблицы шаблонов (в 3-м поле - массив данных) Делаете обработку каждого атрибута и после этого вне зависимости от того из каких атрибутов состоит новый набор вы его с обработаете автоматически. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 17:26 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Спасибо за ответы! Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно. Насколько понял, EAV - хороший подход, когда число типов и свойств практически неограничено, и может изменяться в течение времени. Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них - фиксированный набор свойств. Поэтому, как мне кажется, если использовать здесь модель EAV, то это неоправданно усложнит БД. Здесь даже получить из этих данных таблицу вида "Название резистора"-"Сопротивление"-"Вольтаж"-"Корпус" - уже проблема, у меня получилось это сделать только при помощи перекрестного запроса. alecko в 3-м поле - массив данных Не очень понятно: в Акцессе же нет такого типа данных как массив, или имеется в виду массив, записанный в виде строки? Может быть, существуют СУБД, поддерживающие метатаблицы как в варианте 2? Т.е. таблица, содержащая имена таблиц или ссылки/указатели на них, чтобы реализовать возможность обращения к нужной таблице без костылей в виде программной генерации кода запроса? Появилась ещё одна идея: примерно такая сводная таблица компонентов: idимятипсвойства_резисторысвойства_конденсаторысвойства_микросхемы1RC0402JR-0722RLрезистор92CL31B102KBCNNNCконденсатор53AD9850BRSZмикросхема1 Где значение атрибутов "свойства_..." - id записи в соответствующей таблице характеристик. Соответственно, для каждого типа - отдельная таблица с характеристиками. Недостаток - если всего будет N типов, то в сводной таблице у каждой записи будет N-1 неиспользуемых атрибутов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:34 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
вот на этой странице один из многих вариантов. Локальный вариант бесплатен (minimono) http://www.minimdb.com/download/index.html Если разберётесь, то степеней свободы структур для хранения получите в избытке, А клиентом для взаимодействия с пользователем может быть и Access В дистрибутиве много примеров под разные языки. Раньше была и русская документация, и автор местный "ну я" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:59 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint ...Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них фиксированный набор свойств... Ведь общих свойств не так уж и мало:вес,размер,для большой группы мощность и т.д. Будет у Вас таблица с 50-70 полями-вполне приемлемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 19:13 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
набор параметров у резистора и транзистора настолько разный, что упихивать их в одну широченную таблицу так себе затея...имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 20:29 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Я говорю вообще о решении подобных задач: тип-подтип-подподтип - таблицы по количеству подподтипов и контейнер с подчиненной формой содержимое которого заменяется в соответствии с выбором типа и подтипа в главной форме или древовидная структура в одной части формы с отображением/возможностью добавления соответствующей подчиненной в другой её части(контейнере подчиненной) Довольно часто применяемый подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 02:49 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
sdku Я говорю вообще о решении подобных задач: тип-подтип-подподтип - таблицы по количеству подподтипов и контейнер с подчиненной формой содержимое которого заменяется в соответствии с выбором типа и подтипа в главной форме или древовидная структура в одной части формы с отображением/возможностью добавления соответствующей подчиненной в другой её части(контейнере подчиненной) Довольно часто применяемый подход. Не...я не про коней в вакууме , я про резистор-транзистор. Если форма не генерится динамически на основании неких метаданных, то попытки унифицировать форму под резистор-транзистор, так себе затея ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 19:43 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft вот на этой странице один из многих вариантов. Локальный вариант бесплатен (minimono) http://www.minimdb.com/download/index.html Насколько понял, там все типы данных реализованы через строки, а это не есть здорово с точки зрения размера базы и быстродействия. sdku Все правильно:имеете таблицу с именем и типом детали\элемента(подвязывая её к справочнику типов) и со всеми возможными свойствами-на форме ввода\просмотра,в зависимости от типа(после обновления типа) отображаете нужные поля-в результате отсутствующие свойства-пустые\не отображаемые поля Ведь общих свойств не так уж и мало:вес,размер,для большой группы мощность и т.д. Будет у Вас таблица с 50-70 полями-вполне приемлемо. Тоже вариант, но здесь не очень хорошо то, что для всех записей в этой таблице будет множество "лишних" пустых полей. И ещё некоторые поля, по-видимому, необходимо будет продублировать. Например, у резисторов и у микросхем совершенно разные типы корпусов, поэтому потребуются столбцы Корпус_резистор и Корпус_микросхема (или же сделать один столбец Корпус, но перечислить все возможные корпуса для всех типов в одной связанной таблице, что тоже не очень хорошо). Или количество: у электронных компонентов количество целое, у проводов - действительное (длина). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 20:07 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
2 тс Сколько реально типов элементов в тз? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 20:20 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Кстати вы нигде не упоминали про объёмы информации или я пропустил. А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается. По поводу MiniMono строк и цифр, за пол века в М системах настолько отработана работа с форматами хранения чисел и которые как бы строки но как бы нет, что могут и по соревноваться в арифметике. Там проблема в перестройке мозга в абстракции хранения деревьев, но если удастся будете при каждом иерархическом проекте возвращаться. Есть и другие, в смысле не М, но мы в форуме access там есть Dll или ActiveX и примеры для vbs. В моём представлении MiniMono это такой SqLite для деревьев, только не открытый, но бесплатный и автор доступен для диалога. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 20:39 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bubucha Сколько реально типов элементов в тз? Точно это количество не обговорено (оно должно определиться в процессе), но примерно около 30. pureproft Кстати вы нигде не упоминали про объёмы информации или я пропустил. А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается. Кстати, да - объёмы сравнительно небольшие, порядка нескольких десятков тысяч записей. pureproft Есть и другие, в смысле не М А какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 23:24 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них - фиксированный набор свойств. и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 00:58 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Может как всегда не в тему, ибо как обычно прочитал наискосок Но наивно предположу, что чем то и поможет сей примерчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 03:34 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Блин белинский, уже и забыл, что сей форум на столько несовершеннен , что больше 1-го вложения нельзя за раз приложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 03:36 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint bubucha Сколько реально типов элементов в тз? Точно это количество не обговорено (оно должно определиться в процессе), но примерно около 30. pureproft Кстати вы нигде не упоминали про объёмы информации или я пропустил. А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается. Кстати, да - объёмы сравнительно небольшие, порядка нескольких десятков тысяч записей. pureproft Есть и другие, в смысле не М А какие? Это как раз тот случай (" ...порядка нескольких десятков тысяч записей... "), когда абсолютно не важно какой инструмент брать в руки. Но на вопрос - как хранить, можно ответить после вопроса - что потом планируется с накопленными данными делать. Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться. p.s. Давно я не брал в руки "шашек", это я к тому, что если вам не сложно публично по обсуждать дальнейший процесс, мне интересно по участвовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 07:04 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) за данными будут обращаться. И обращаться будет один человек локально или больше одного и не локально? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 08:38 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
vmag и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны... Совершенно в точку. 90% полей заполнять не будут (дураков нет) Проходил это по молодости неоднократно(хотелось как лучше - получилось как всегда) Ну а если сильно хочется, то EAV или его модификации. Тут на SQL.RU это всплывает часто (холивар на эту тему, ну и дым столбом) ищите Тенцер EAV древовидные структуры сборки и тд.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 08:40 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
ROI, vmag это советы не тебе ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 08:41 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно. сложить в json и пихнуть в одно длинное текстовое поле ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 09:50 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
17-77 bratint Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно. сложить в json и пихнуть в одно длинное текстовое поле + Или в Ексель на разные листы ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 11:53 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Лапух Может как всегда не в тему, ибо как обычно прочитал наискосок Но наивно предположу, что чем то и поможет сей примерчик. Спасибо за пример! Я уже, по советам участников, попробовал реализовать что-то типа-этого, но здесь 2 проблемы: сравнительно сложно получить таблицу вида "Название резистора"-"Сопротивление"-"Вольтаж"-"Корпус" (и её нельзя редактировать), а также все значения в текстовом виде, что затрудняет их сравнение между собой / операции с ними. vmag и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... Ну, здесь есть одна особенность: у большинства пассивных компонентов все эти свойства зашифрованы в названии, так что их не прийдётся вручную забивать. pureproft Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться. В первую очередь - найти все подходящие компоненты, например, все конденсаторы с определённым типом корпуса, ёмкостью от 200 до 300 пФ и напряжением не меньше 50 В, посмотреть их наличие. pureproft И обращаться будет один человек локально или больше одного и не локально? В первом приближении - один, локально. В перспективе потребуется возможность доступа к БД всех пользователей локальной сети. Но это, конечно, будет уже не в Акцессе, просто сейчас хотелось бы с архитектурой базы разобраться, чтобы потом на грабли не наступать. ROI ищите Тенцер EAV древовидные структуры сборки и тд.) 17-77 сложить в json и пихнуть в одно длинное текстовое поле Спасибо за советы, буду смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 11:55 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться. Кстати, и ещё: там используют САПР, которая должна брать информацию из этой БД. А для этого нужно, чтобы таблицы компонентов в БД имели определённую структуру, именно вида "наименование"-"номинал"-"корпус"-..., и чтобы атрибуты имели соответствующий тип данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 12:07 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
vmag и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны... Иначе примерно так:(если найдете "идиота, который согласится все это заполнять" . О быстродействии и т.п. при "мощности" современных компьютеров,даже бюджетных,беспокоится,думаю,не стоит) Да и по большому счету "Все уже сделано до нас" и необходимости в очередном "изобретении велосипеда" нет никакой-есть интернет-лучше подумайте как открыть нужный сайт\страницу.(самый простой вариант свойство гиперссылка) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 12:58 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
вдогонку:Основные параметры для поиска ввести в главные таблицы по типу элемента -а все подробности из интернета как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 13:06 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint pureproft Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться. Кстати, и ещё: там используют САПР, которая должна брать информацию из этой БД. А для этого нужно, чтобы таблицы компонентов в БД имели определённую структуру, именно вида "наименование"-"номинал"-"корпус"-..., и чтобы атрибуты имели соответствующий тип данных. Так это ключевой момент. Тогда что бы что то обсуждать нужно понимать механизмы обращения из вашей внешней подсистемы, нужен ли ей полный доступ или достаточно только результаты запросов оформить в понятном ей формализованном виде. Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 13:10 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint .... у большинства пассивных компонентов все эти свойства зашифрованы в названии, так что их не прийдётся вручную забивать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 13:24 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
И еще:прошу пардон-запамятовал гиперссылка ж вообще по полю,а не по полю в записи ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:06 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft ...Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске. Я так думаю! (Мимино) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:12 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Так это ключевой момент. Тогда что бы что то обсуждать нужно понимать механизмы обращения из вашей внешней подсистемы, нужен ли ей полный доступ или достаточно только результаты запросов оформить в понятном ей формализованном виде. Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске. Вот здесь я сходу не смогу ответить: это задача из разряда "в перспективе", а не "в первую очередь", поэтому пока не вникал глубоко в вопрос. Посмотрю в понедельник, можно ли там "подцепить" запрос, или только таблицу. Но в общем виде принцип такой: указывается целевая база данных, в ней - выбираются таблицы резисторов, конденсаторов и т.п., и для каждой таблицы указывается соответствие между столбцами таблицы и параметрами компонентов в САПРе. Доступ к базе через ODBC. sdku Это ж какие такие свойства зашифрованы в названии С1-4 или С2-10? У импортных, как правило, нормальный part number - RC0805FR-07300KL, CL05A225KP5NSNC, CC0201JRNPO9BN220 и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:13 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
[quot sdku#22205033] pureproft ...Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске. Я так думаю! (Мимино) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:16 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint ...У импортных, как правило, нормальный part number - RC0805FR-07300KL, CL05A225KP5NSNC, CC0201JRNPO9BN220 и т.п. КТ-668(А-В)-его аналог ВС-556\557\558\559\560 очень информативно-а если еще вести учет и по поставщику (part numder)...... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:31 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
sdku Для нормальной САПР должно хватить названия\типа(С1-4, номинала,мощности и типа корпуса,если это активный элемент) Я так думаю! (Мимино) В принципе, там действительно достаточно названия и основных характеристик, плюс ещё PCB Footprint и Schematic Symbol, и информация о наличии. sdku Живя в России Вы будете использовать только импортные элементы КТ-668(А-В)-его аналог ВС-556\557\558\559\560 очень информативно-а если еще вести учет и по поставщику (part numder)...... Ну, это уже не мой вопрос: на практике там большинство используемых компонентов - импортные. С активными компонентами - да, несколько сложнее, но применительно к ним и не стоит задачи перечислить все возможные характеристики. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:34 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint это задача из разряда "в перспективе", а не "в первую очередь" Если зарплату заплатят за "в первую очередь" а потом ещё раз за "в перспективе", что там в вашей САПР по барабану. А если серьёзно, то через ODBC наверняка можно будет подсунуть результаты (опускаем сейчас чьи, речь же шла о том, что сервер предполагается какой то другой ) в нужном формате и это не накладывает на хранение особых требований. У вас есть какой то массив для тестов по нескольким типам в csv,xls, ... что бы не придумывать? Проще показать, чем рассказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:37 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
И у вас же точно нет задачи делать интерфейс для ручного наполнения, вся инфа ведь должна приходить из чужих прайсов, справочников, ... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:48 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft У вас есть какой то массив для тестов по нескольким типам в csv,xls, ... что бы не придумывать? Проще показать, чем рассказать. В смысле, таблицы с перечнем компонентов? Есть, в Акцессе, правда, типизация там пока реализована в "зачаточной" форме. Смогу в понедельник выложить. pureproft И у вас же точно нет задачи делать интерфейс для ручного наполнения, вся инфа ведь должна приходить из чужих прайсов, справочников, ... ? Есть, но это - не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 14:52 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Не важно как она сейчас реализована, мне просто, что бы не придумывать и не искать, я на основе ваших данных смоделирую массив в объёмах о которых шла речь, т.е. несколько десятков тысяч и посмотрим, есть ли хоть какие то основания задумываться о том, что у вас выше прозвучало по поводу текстового хранения и производительности. p.s. я почту в профиле открыл, можно на неё. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 15:05 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Я похожую задачу решил так: Есть таблица код переменной - наименование переменной - ( доп информация о переменной) А значения храню в дугой Код детали - код переменной - значение переменной работать с такой структурой посложней, да... Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится. И мне очень не хотелось создавать несколько десятков столбцов( которые как выше писали скорее всего будут пустыми) для всего набора переменных.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 06:50 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Serg197311 Я похожую задачу решил так: Есть таблица код переменной - наименование переменной - ( доп информация о переменной) А значения храню в дугой Код детали - код переменной - значение переменной работать с такой структурой посложней, да... Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится. И мне очень не хотелось создавать несколько десятков столбцов( которые как выше писали скорее всего будут пустыми) для всего набора переменных.... vmag Это EAV Это как суслик, которого не видно, но он точно есть. Т.е. ваша реализация вами может и не названа EAV (суликом), но это он и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 06:58 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint Появилась ещё одна идея: примерно такая сводная таблица компонентов: idимятипсвойства_резисторысвойства_конденсаторысвойства_микросхемы1RC0402JR-0722RLрезистор92CL31B102KBCNNNCконденсатор53AD9850BRSZмикросхема1 Где значение атрибутов "свойства_..." - id записи в соответствующей таблице характеристик. Соответственно, для каждого типа - отдельная таблица с характеристиками. Недостаток - если всего будет N типов, то в сводной таблице у каждой записи будет N-1 неиспользуемых атрибутов.По-моему это самая правильная идея. Единственное, столбцы "свойства_..." не нужны. В качестве первичного ключа во всех таблицах можно использовать id из сводной таблицы. А столбец "тип" можно использовать для определения типа объекта и на его основе рисовать соответствующую форму и джойнить основную таблицу с правильной таблицей свойств. В принципе, у этого варианта могут быть такие вариации: 1) Вполне возможно, что у разных типов компонентов будут схожие наборы параметров. И можно делать не по одной таблице на каждый тип компонентов, а по одной таблице на каждую группу связанных по смыслу параметров. Например, база магазина бытовой техники: смартфоны, системные блоки, ноутбуки. Наборы параметров могут быть: 1) параметры CPU 2) параметры встроенного GPU 3) параметры дискретного GPU 4) параметры жесткого диска 5) параметры экрана и т.д. У каждого вида объектов может быть свой набор параметров, сгруппированных по смыслу. 2) Можно пойти ещё дальше и нормализовать базу до 6НФ, вынеся каждый атрибут в отдельную таблицу. При этом все атрибуты становятся NOT NULL. Также они все могут стать множественными или историчными при необходимости (например, цена). Упрощается внесение изменений в схему данных: данные в старой структуре лежат как есть, для них не нужно делать никакие миграции, а для новых данных в новой структуре просто добавляем новые таблицы. Такой подход наверное обязателен для хранилищ данных. Для OLTP баз хз, но вроде (я точно не знаю) в том же Avito его используют. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 08:09 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Это как суслик, которого не видно, но он точно есть. Т.е. ваша реализация вами может и не названа EAV (суликом), но это он и есть. Упс.... Ей-Богу, буквы EAV увидел в этом топике впервые.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 09:28 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Serg197311 Упс.... Ей-Богу, буквы EAV увидел в этом топике впервые.... Все зависит от того как смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 10:30 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Не важно как она сейчас реализована, мне просто, что бы не придумывать и не искать, я на основе ваших данных смоделирую массив в объёмах о которых шла речь, т.е. несколько десятков тысяч и посмотрим, есть ли хоть какие то основания задумываться о том, что у вас выше прозвучало по поводу текстового хранения и производительности. Прилагаю таблицы резисторов и конденсаторов. Другие типы не стал включать, т.к. они сейчас просто в отдельной таблице перечислены без характеристик, так что смысла их приводить нет. Проверил - та СУБД поддерживает получение информации из запросов (по крайней мере в Акцессе); и текстовый формат атрибутов, кстати, тоже. Serg197311 Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится. Там их, скорее всего, не понадобится добавлять. Ares_ekb В качестве первичного ключа во всех таблицах можно использовать id из сводной таблицы. А столбец "тип" можно использовать для определения типа объекта и на его основе рисовать соответствующую форму и джойнить основную таблицу с правильной таблицей свойств. Кстати да, точно. Спасибо! При связи 1 к 1 - самое то. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 10:57 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint Проверил - та СУБД поддерживает получение информации из запросов (по крайней мере в Акцессе) В смысле САПР, а не СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:18 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
sdku Все зависит от того как смотреть И? я ничо не понял...... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:32 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Вообще-то у вас получается банальный номенклатурный справочник. Вот и исходите из этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:39 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
1. Описать интерфейс взаимодействия с сапром (набор полей, которые ему надо скармливать) 2. Описать требования к "складскому учету" 3. Описать требования к интерфейсу пользователя (что ему надо получать из базы) По всем пунктам определить минимальный набор полей, позволяющий реализовать все пункты. Рисовать схему по "минимальному" набору полей. Не делать себе мозги по поводу глобальной универсальной схемы, а реализовать пробный вариант на простых рабочекрестьянских справочниках - под каждый тип, своя таблица. По моему скромному мнению... Тут осуществляется попытка простое сделать сложным. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:47 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Например RC1206FR-072ML Кол-во в упаковке: 5000, Корпус: SMD120632X16MM Номинальное сопротивление: 2 МОм, Нормированный допуск: 1%, Рассеиваемая мощность: 250 мВт, Корпус: SMD 1206, Способ монтажа: smd А вы уверены, что дальше не потребуется EU RoHS Compliant with Exemption ECCN (US) EAR99 Part Status Active Resistance Value (Ohm) 2M Tolerance 1% Maximum Voltage Rating (V) 200 Current Sensing No Power Rating (W) 0.25 (1/4) Technology Thick Film Minimum Operating Temperature (°C) -55 Maximum Operating Temperature (°C) 155 Temperature Coefficient (ppm/°C) ±100 Temperature Range @ Derated Power (°C) 70 to 155 Fail Safe Fusible Resistor No Anti-Surge No Anti-Sulfurated No Case Style Epoxy Case Size 1206 Termination Style Pad Number of Terminals 2 Packaging Tape and Reel Package Type SMD Package Shape Rectangular Package/Case 1206 Product Length (mm) 3.1 Product Depth (mm) 1.6 Product Height (mm) 0.55 Length Tolerance (mm) ±0.1 Depth Tolerance (mm) ±0.1 Height Tolerance (mm) ±0.1 Mounting Surface Mount Вес, г 0.031 Оно конечно сути не меняет, но .... bratint это задача из разряда "в перспективе", а не "в первую очередь" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:57 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Это я к тому, что складской учёт это одно, а для САПР это может оказаться совсем другого масштаба задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:00 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
Serg197311, А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем-в результате по одному и тому же элементу может оказаться несколько записей-а если учесть еще и это + очередность использования в зависимости от даты поставки БД значительно усложнится. Насчет "как смотреть"-это к тому что про EAV упоминалось 23.09 а Вы 28.09 говорите что слышите об этом впервые Если же совсем кратко-полностью солидарен: ROI bratint, Вообще-то у вас получается банальный номенклатурный справочник. Вот и исходите из этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:08 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
sdku Serg197311, А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем-в результате по одному и тому же элементу может оказаться несколько записей-а если учесть еще и это + очередность использования в зависимости от даты поставки БД значительно усложнится. Если не предусматривать механизмов защиты БД от дублирования - однозначно все усложнится. Если заполнять БД доверить тому кто ничего не понимает в предмете - тоже усложнится sdku Насчет "как смотреть"-это к тому что про EAV упоминалось 23.09 а Вы 28.09 говорите что слышите об этом впервые ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:37 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
ROI Вообще-то у вас получается банальный номенклатурный справочник. Вот и исходите из этого. А где об этом можно почитать? Поиск даёт только материалы по 1С. pureproft А вы уверены, что дальше не потребуется Максимум, может быть сведения по температуре понадобятся. Остальное - точно нет (упаковка не важна, габариты определяются корпусом, и т.п.). sdku А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем Здесь это одно и то же. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:17 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint А где об этом можно почитать? Поиск даёт только материалы по 1С. https://www.sql.ru/forum/db-design ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:42 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint pureproft А вы уверены, что дальше не потребуется Максимум, может быть сведения по температуре понадобятся. Остальное - точно нет (упаковка не важна, габариты определяются корпусом, и т.п.). Я не про конкретику, а про то, что вы закладываетесь допустим на десяток +/- атрибутов, а их завтра раз и сотня и может не одна. Т.е. если вы уверны с погрешностью в единицах в количестве минимальном и максимальном атрибутов и их мало мальской стабильности, это один взгляд на ситуацию, а если нет, то то что принято называть EAV ваш единственный выход и независимо удобно или нет вам с этой структурой, придётся под неё подстраиваться и делать свои инструменты разворачивания в строку из столбца и наоборот. Я чуть позже покажу свой эксперимент под вами обозначенные изначальные исходные данные: Что например атрибутов у каждой позиции не больше 10 +/- единицы и общее количество не превышает допустим 100 тыс. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:47 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
pureproft Т.е. если вы уверны с погрешностью в единицах в количестве минимальном и максимальном атрибутов и их мало мальской стабильности, это один взгляд на ситуацию Да, количество / состав атрибутов здесь не будет меняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 14:26 |
|
Архитектура базы данных для хранения информации о разнородных объектах
|
|||
---|---|---|---|
#18+
bratint, Хочу обратить ваше внимание на подводные камни которые вас ждут в EAV. 1 Полное отсутствие ссылочной целостности данных (от слова совсем). придется городить, что то своё. 2 типы данных атрибутов не так легко проверить "На лету" 3 Забудьте про простые запросы (огород, тот есчё, будете городить join на каждый чих) ну и запросы в основном будут не обновляемыми. 4 механизм обслуживания/представления справочников придется городить свой, с нуля. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 15:03 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1609921]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
126ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 262ms |
0 / 0 |