powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Архитектура базы данных для хранения информации о разнородных объектах
57 сообщений из 57, показаны все 3 страниц
Архитектура базы данных для хранения информации о разнородных объектах
    #40001734
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу придумать, как правильно организовать БД, в которой должна храниться информация об объектах разных типов, при этом у каждого типа свой набор атрибутов. Если точнее, то это электронные компоненты.
Для каждого из них указывается наименование, производитель, плюс к этому для некоторых типов указываются дополнительные характеристики, например:
для резисторов - сопротивление, единица измерения, допуск, номинальная мощность, температурный коэффициент, корпус
для керамических конденсаторов - ёмкость, единица измерения, допуск, номинальное напряжение, тип диэлектрика, корпус
для микросхем - тип и корпус.

Вопрос в том, как лучше организовать таблицы для хранения этих данных?
Я придумал 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" - и тип диэлектрика конденсатора, и тип микросхемы).

Существуют ли более лучшие способы решения этой задачи? В т.ч. связанные с переходом на другую СУБД.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40001759
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,

Это EAV

Таблица Деталей + Таблица Параметров + Связующая таблица между ними
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40001766
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. сначала определите типы(Резисторы, Конденсаторы), наборы атрибутов (сопротивление, единица измерения, допуск, ёмкость, единица измерения, допуск, номинальное напряжение)-определяем тип этих данных, затем собираем набор шаблонов для резисторов это один набор, для конденсаторов - другой - это таблица наборов- это может быть EAV, может в отдельных таблицах.

2. создаете обычную таблицу из 3-х полей; полей точно должно быть больше-поставщик, дата поставки и пр поля. - но эти вопросы не рассматриваем.
id idнабор field1|field2|field31234555.345|6.4|200
заносите в неё данные, а что это за данные, что за наборы - определяете из таблицы шаблонов (в 3-м поле - массив данных)
Делаете обработку каждого атрибута и после этого вне зависимости от того из каких атрибутов состоит новый набор вы его с обработаете автоматически.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002577
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы!
Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно.
Насколько понял, EAV - хороший подход, когда число типов и свойств практически неограничено, и может изменяться в течение времени. Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них - фиксированный набор свойств. Поэтому, как мне кажется, если использовать здесь модель EAV, то это неоправданно усложнит БД. Здесь даже получить из этих данных таблицу вида "Название резистора"-"Сопротивление"-"Вольтаж"-"Корпус" - уже проблема, у меня получилось это сделать только при помощи перекрестного запроса.

alecko
в 3-м поле - массив данных

Не очень понятно: в Акцессе же нет такого типа данных как массив, или имеется в виду массив, записанный в виде строки?


Может быть, существуют СУБД, поддерживающие метатаблицы как в варианте 2? Т.е. таблица, содержащая имена таблиц или ссылки/указатели на них, чтобы реализовать возможность обращения к нужной таблице без костылей в виде программной генерации кода запроса?

Появилась ещё одна идея: примерно такая сводная таблица компонентов:
idимятипсвойства_резисторысвойства_конденсаторысвойства_микросхемы1RC0402JR-0722RLрезистор92CL31B102KBCNNNCконденсатор53AD9850BRSZмикросхема1
Где значение атрибутов "свойства_..." - id записи в соответствующей таблице характеристик. Соответственно, для каждого типа - отдельная таблица с характеристиками. Недостаток - если всего будет N типов, то в сводной таблице у каждой записи будет N-1 неиспользуемых атрибутов.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002593
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот на этой странице один из многих вариантов. Локальный вариант бесплатен (minimono)
http://www.minimdb.com/download/index.html
Если разберётесь, то степеней свободы структур для хранения получите в избытке,
А клиентом для взаимодействия с пользователем может быть и Access
В дистрибутиве много примеров под разные языки.
Раньше была и русская документация,
и автор местный "ну я"
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002657
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
...Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них фиксированный набор свойств...
Все правильно:имеете таблицу с именем и типом детали\элемента(подвязывая её к справочнику типов) и со всеми возможными свойствами-на форме ввода\просмотра,в зависимости от типа(после обновления типа) отображаете нужные поля-в результате отсутствующие свойства-пустые\не отображаемые поля
Ведь общих свойств не так уж и мало:вес,размер,для большой группы мощность и т.д. Будет у Вас таблица с 50-70 полями-вполне приемлемо.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002675
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
набор параметров у резистора и транзистора настолько разный, что упихивать их в одну широченную таблицу так себе затея...имхо
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002755
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я говорю вообще о решении подобных задач: тип-подтип-подподтип - таблицы по количеству подподтипов и контейнер с подчиненной формой содержимое которого заменяется в соответствии с выбором типа и подтипа в главной форме или древовидная структура в одной части формы с отображением/возможностью добавления соответствующей подчиненной в другой её части(контейнере подчиненной)
Довольно часто применяемый подход.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002936
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Я говорю вообще о решении подобных задач: тип-подтип-подподтип - таблицы по количеству подподтипов и контейнер с подчиненной формой содержимое которого заменяется в соответствии с выбором типа и подтипа в главной форме или древовидная структура в одной части формы с отображением/возможностью добавления соответствующей подчиненной в другой её части(контейнере подчиненной)
Довольно часто применяемый подход.

Не...я не про коней в вакууме , я про резистор-транзистор.
Если форма не генерится динамически на основании неких метаданных, то попытки унифицировать форму под резистор-транзистор, так себе затея
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002940
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
вот на этой странице один из многих вариантов. Локальный вариант бесплатен (minimono)
http://www.minimdb.com/download/index.html

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

sdku
Все правильно:имеете таблицу с именем и типом детали\элемента(подвязывая её к справочнику типов) и со всеми возможными свойствами-на форме ввода\просмотра,в зависимости от типа(после обновления типа) отображаете нужные поля-в результате отсутствующие свойства-пустые\не отображаемые поля
Ведь общих свойств не так уж и мало:вес,размер,для большой группы мощность и т.д. Будет у Вас таблица с 50-70 полями-вполне приемлемо.

Тоже вариант, но здесь не очень хорошо то, что для всех записей в этой таблице будет множество "лишних" пустых полей. И ещё некоторые поля, по-видимому, необходимо будет продублировать. Например, у резисторов и у микросхем совершенно разные типы корпусов, поэтому потребуются столбцы Корпус_резистор и Корпус_микросхема (или же сделать один столбец Корпус, но перечислить все возможные корпуса для всех типов в одной связанной таблице, что тоже не очень хорошо). Или количество: у электронных компонентов количество целое, у проводов - действительное (длина).
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002943
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 тс
Сколько реально типов элементов в тз?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002947
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,

Кстати вы нигде не упоминали про объёмы информации или я пропустил.
А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается.

По поводу MiniMono строк и цифр, за пол века в М системах настолько отработана работа с форматами хранения чисел и которые как бы строки но как бы нет, что могут и по соревноваться в арифметике. Там проблема в перестройке мозга в абстракции хранения деревьев, но если удастся будете при каждом иерархическом проекте возвращаться.

Есть и другие, в смысле не М, но мы в форуме access там есть Dll или ActiveX и примеры для vbs.

В моём представлении MiniMono это такой SqLite для деревьев, только не открытый, но бесплатный и автор доступен для диалога.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002969
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bubucha
Сколько реально типов элементов в тз?

Точно это количество не обговорено (оно должно определиться в процессе), но примерно около 30.

pureproft
Кстати вы нигде не упоминали про объёмы информации или я пропустил.
А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается.

Кстати, да - объёмы сравнительно небольшие, порядка нескольких десятков тысяч записей.

pureproft
Есть и другие, в смысле не М

А какие?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002978
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
Но в данной задаче всё же довольно ограниченный набор типов, и у каждого из них - фиксированный набор свойств.


и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны...
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002987
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,

Может как всегда не в тему, ибо как обычно прочитал наискосок
Но наивно предположу, что чем то и поможет сей примерчик.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002988
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин белинский, уже и забыл, что сей форум на столько несовершеннен , что больше 1-го вложения нельзя за раз приложить.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40002996
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
bubucha
Сколько реально типов элементов в тз?

Точно это количество не обговорено (оно должно определиться в процессе), но примерно около 30.

pureproft
Кстати вы нигде не упоминали про объёмы информации или я пропустил.
А то иногда можно часами что то про базы и оптимизацию писать а выясняется что она вся в память нетбука помещается.

Кстати, да - объёмы сравнительно небольшие, порядка нескольких десятков тысяч записей.

pureproft
Есть и другие, в смысле не М

А какие?


Это как раз тот случай (" ...порядка нескольких десятков тысяч записей... "), когда абсолютно не важно какой инструмент брать в руки. Но на вопрос - как хранить, можно ответить после вопроса - что потом планируется с накопленными данными делать.
Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться.

p.s. Давно я не брал в руки "шашек", это я к тому, что если вам не сложно публично по обсуждать дальнейший процесс, мне интересно по участвовать.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003001
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pureproft

Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) за данными будут обращаться.


И обращаться будет один человек локально или больше одного и не локально?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003002
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны...

Совершенно в точку.
90% полей заполнять не будут (дураков нет)
Проходил это по молодости неоднократно(хотелось как лучше - получилось как всегда)
Ну а если сильно хочется, то EAV или его модификации.
Тут на SQL.RU это всплывает часто (холивар на эту тему, ну и дым столбом)
ищите Тенцер EAV древовидные структуры сборки и тд.)
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003003
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

vmag это советы не тебе
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003007
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно.

сложить в json и пихнуть в одно длинное текстовое поле
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003023
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77
bratint
Посмотрел EAV - там, вроде бы, все значения хранятся в виде текста, или же создаются несколько "параллельных" полей для разных типов данных. Это не очень удобно.

сложить в json и пихнуть в одно длинное текстовое поле

+
Или в Ексель на разные листы
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003024
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лапух
Может как всегда не в тему, ибо как обычно прочитал наискосок
Но наивно предположу, что чем то и поможет сей примерчик.

Спасибо за пример! Я уже, по советам участников, попробовал реализовать что-то типа-этого, но здесь 2 проблемы: сравнительно сложно получить таблицу вида "Название резистора"-"Сопротивление"-"Вольтаж"-"Корпус" (и её нельзя редактировать), а также все значения в текстовом виде, что затрудняет их сравнение между собой / операции с ними.

vmag
и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления...

Ну, здесь есть одна особенность: у большинства пассивных компонентов все эти свойства зашифрованы в названии, так что их не прийдётся вручную забивать.

pureproft
Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться.

В первую очередь - найти все подходящие компоненты, например, все конденсаторы с определённым типом корпуса, ёмкостью от 200 до 300 пФ и напряжением не меньше 50 В, посмотреть их наличие.

pureproft
И обращаться будет один человек локально или больше одного и не локально?

В первом приближении - один, локально. В перспективе потребуется возможность доступа к БД всех пользователей локальной сети. Но это, конечно, будет уже не в Акцессе, просто сейчас хотелось бы с архитектурой базы разобраться, чтобы потом на грабли не наступать.

ROI
ищите Тенцер EAV древовидные структуры сборки и тд.)
17-77
сложить в json и пихнуть в одно длинное текстовое поле

Спасибо за советы, буду смотреть.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003031
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться.

Кстати, и ещё: там используют САПР, которая должна брать информацию из этой БД. А для этого нужно, чтобы таблицы компонентов в БД имели определённую структуру, именно вида "наименование"-"номинал"-"корпус"-..., и чтобы атрибуты имели соответствующий тип данных.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003039
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag

и практика показывает что большинство из этих свойств будут не востребованы по причине того, что не найдут ни одного идиота, который согласится все это заполнять, все это закончится заведением двух-трех параметров типа вольтаж, емкость, сопротивление, ток, индуктивность и материал изготовления... когда-то делал аналогичную бд по учету компов, мониторов, принтеров и т.д. - были грандиозные масштабы учета (от процессора на мамке, до количества страниц печати за минуту) все закончилось банально: тип устройства, производитель, инв. номер и ответственный, остальные пол сотни планируемых параметров по сей день никому не нужны...
+100500
Иначе примерно так:(если найдете "идиота, который согласится все это заполнять" . О быстродействии и т.п. при "мощности" современных компьютеров,даже бюджетных,беспокоится,думаю,не стоит)
Да и по большому счету "Все уже сделано до нас" и необходимости в очередном "изобретении велосипеда" нет никакой-есть интернет-лучше подумайте как открыть нужный сайт\страницу.(самый простой вариант свойство гиперссылка)
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003042
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:Основные параметры для поиска ввести в главные таблицы по типу элемента -а все подробности из интернета как-то так
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003043
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
pureproft
Т.е. с какими запросами (и я сейчас не про SQL, а про простой житейский) к за данными будут обращаться.

Кстати, и ещё: там используют САПР, которая должна брать информацию из этой БД. А для этого нужно, чтобы таблицы компонентов в БД имели определённую структуру, именно вида "наименование"-"номинал"-"корпус"-..., и чтобы атрибуты имели соответствующий тип данных.


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

Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003045
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
.... у большинства пассивных компонентов все эти свойства зашифрованы в названии, так что их не прийдётся вручную забивать....
Это ж какие такие свойства зашифрованы в названии С1-4 или С2-10?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003059
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще:прошу пардон-запамятовал гиперссылка ж вообще по полю,а не по полю в записи
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003060
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pureproft

...Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске.
Для нормальной САПР должно хватить названия(С1-4, номинала и мощности)
Я так думаю! (Мимино)
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003061
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
Так это ключевой момент. Тогда что бы что то обсуждать нужно понимать механизмы обращения из вашей внешней подсистемы, нужен ли ей полный доступ или достаточно только результаты запросов оформить в понятном ей формализованном виде.

Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске.

Вот здесь я сходу не смогу ответить: это задача из разряда "в перспективе", а не "в первую очередь", поэтому пока не вникал глубоко в вопрос. Посмотрю в понедельник, можно ли там "подцепить" запрос, или только таблицу. Но в общем виде принцип такой: указывается целевая база данных, в ней - выбираются таблицы резисторов, конденсаторов и т.п., и для каждой таблицы указывается соответствие между столбцами таблицы и параметрами компонентов в САПРе. Доступ к базе через ODBC.

sdku
Это ж какие такие свойства зашифрованы в названии С1-4 или С2-10?

У импортных, как правило, нормальный part number - RC0805FR-07300KL, CL05A225KP5NSNC, CC0201JRNPO9BN220 и т.п.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003062
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot sdku#22205033]
pureproft

...Это часто ключевой момент. Информация на экране ли или информация в ответе на запрос из внешней подсистемы не обязана соответствовать тому как она условно лежит на диске.
Для нормальной САПР должно хватить названия\типа(С1-4, номинала,мощности и типа корпуса,если это активный элемент)
Я так думаю! (Мимино)
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003068
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint

...У импортных, как правило, нормальный part number - RC0805FR-07300KL, CL05A225KP5NSNC, CC0201JRNPO9BN220 и т.п.
Живя в России Вы будете использовать только импортные элементы
КТ-668(А-В)-его аналог ВС-556\557\558\559\560 очень информативно-а если еще вести учет и по поставщику (part numder)......
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003069
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Для нормальной САПР должно хватить названия\типа(С1-4, номинала,мощности и типа корпуса,если это активный элемент)
Я так думаю! (Мимино)

В принципе, там действительно достаточно названия и основных характеристик, плюс ещё PCB Footprint и Schematic Symbol, и информация о наличии.

sdku
Живя в России Вы будете использовать только импортные элементы
КТ-668(А-В)-его аналог ВС-556\557\558\559\560 очень информативно-а если еще вести учет и по поставщику (part numder)......

Ну, это уже не мой вопрос: на практике там большинство используемых компонентов - импортные. С активными компонентами - да, несколько сложнее, но применительно к ним и не стоит задачи перечислить все возможные характеристики.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003074
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
это задача из разряда "в перспективе", а не "в первую очередь"

Если зарплату заплатят за "в первую очередь" а потом ещё раз за "в перспективе", что там в вашей САПР по барабану.
А если серьёзно, то через ODBC наверняка можно будет подсунуть результаты (опускаем сейчас чьи, речь же шла о том, что сервер предполагается какой то другой ) в нужном формате и это не накладывает на хранение особых требований.

У вас есть какой то массив для тестов по нескольким типам в csv,xls, ... что бы не придумывать? Проще показать, чем рассказать.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003079
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И у вас же точно нет задачи делать интерфейс для ручного наполнения, вся инфа ведь должна приходить из чужих прайсов, справочников, ... ?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003081
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
У вас есть какой то массив для тестов по нескольким типам в csv,xls, ... что бы не придумывать? Проще показать, чем рассказать.

В смысле, таблицы с перечнем компонентов? Есть, в Акцессе, правда, типизация там пока реализована в "зачаточной" форме. Смогу в понедельник выложить.

pureproft
И у вас же точно нет задачи делать интерфейс для ручного наполнения, вся инфа ведь должна приходить из чужих прайсов, справочников, ... ?

Есть, но это - не проблема.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003086
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не важно как она сейчас реализована, мне просто, что бы не придумывать и не искать, я на основе ваших данных смоделирую массив в объёмах о которых шла речь, т.е. несколько десятков тысяч и посмотрим, есть ли хоть какие то основания задумываться о том, что у вас выше прозвучало по поводу текстового хранения и производительности.

p.s. я почту в профиле открыл, можно на неё.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003183
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я похожую задачу решил так:
Есть таблица
код переменной - наименование переменной - ( доп информация о переменной)

А значения храню в дугой
Код детали - код переменной - значение переменной
работать с такой структурой посложней, да... Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится.
И мне очень не хотелось создавать несколько десятков столбцов( которые как выше писали скорее всего будут пустыми) для всего набора переменных....
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003186
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Я похожую задачу решил так:
Есть таблица
код переменной - наименование переменной - ( доп информация о переменной)

А значения храню в дугой
Код детали - код переменной - значение переменной
работать с такой структурой посложней, да... Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится.
И мне очень не хотелось создавать несколько десятков столбцов( которые как выше писали скорее всего будут пустыми) для всего набора переменных....


vmag

Это EAV


Это как суслик, которого не видно, но он точно есть.
Т.е. ваша реализация вами может и не названа EAV (суликом), но это он и есть.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003199
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 его используют.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003213
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pureproft

Это как суслик, которого не видно, но он точно есть.
Т.е. ваша реализация вами может и не названа EAV (суликом), но это он и есть.

Упс.... Ей-Богу, буквы EAV увидел в этом топике впервые....
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003232
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311

Упс.... Ей-Богу, буквы EAV увидел в этом топике впервые....

Все зависит от того как смотреть
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003245
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
Не важно как она сейчас реализована, мне просто, что бы не придумывать и не искать, я на основе ваших данных смоделирую массив в объёмах о которых шла речь, т.е. несколько десятков тысяч и посмотрим, есть ли хоть какие то основания задумываться о том, что у вас выше прозвучало по поводу текстового хранения и производительности.

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

Проверил - та СУБД поддерживает получение информации из запросов (по крайней мере в Акцессе); и текстовый формат атрибутов, кстати, тоже.

Serg197311
Но зато при добавлении новой переменной основные процедуры-запросы переписывать не приходится.

Там их, скорее всего, не понадобится добавлять.

Ares_ekb
В качестве первичного ключа во всех таблицах можно использовать id из сводной таблицы. А столбец "тип" можно использовать для определения типа объекта и на его основе рисовать соответствующую форму и джойнить основную таблицу с правильной таблицей свойств.

Кстати да, точно. Спасибо! При связи 1 к 1 - самое то.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003254
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bratint
Проверил - та СУБД поддерживает получение информации из запросов (по крайней мере в Акцессе)

В смысле САПР, а не СУБД.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003263
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Все зависит от того как смотреть

И? я ничо не понял......
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003271
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,

Вообще-то у вас получается банальный номенклатурный справочник.
Вот и исходите из этого.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003276
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Описать интерфейс взаимодействия с сапром (набор полей, которые ему надо скармливать)
2. Описать требования к "складскому учету"
3. Описать требования к интерфейсу пользователя (что ему надо получать из базы)
По всем пунктам определить минимальный набор полей, позволяющий реализовать все пункты.
Рисовать схему по "минимальному" набору полей.
Не делать себе мозги по поводу глобальной универсальной схемы, а реализовать пробный вариант на простых рабочекрестьянских справочниках - под каждый тип, своя таблица.

По моему скромному мнению...
Тут осуществляется попытка простое сделать сложным.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003283
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
это задача из разряда "в перспективе", а не "в первую очередь"
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003287
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,
Это я к тому, что складской учёт это одно, а для САПР это может оказаться совсем другого масштаба задача.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003291
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем-в результате по одному и тому же элементу может оказаться несколько записей-а если учесть еще и это + очередность использования в зависимости от даты поставки БД значительно усложнится.
Насчет "как смотреть"-это к тому что про EAV упоминалось 23.09 а Вы 28.09 говорите что слышите об этом впервые
Если же совсем кратко-полностью солидарен:
ROI
bratint,
Вообще-то у вас получается банальный номенклатурный справочник.
Вот и исходите из этого.
Естессно многоуровневый + главная таблица(в зависимости от того что Вы хотите иметь на выходе), но в принципе все верно-детали за Вами(разработчиком),в зависимости от задач
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003316
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Serg197311,
А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем-в результате по одному и тому же элементу может оказаться несколько записей-а если учесть еще и это + очередность использования в зависимости от даты поставки БД значительно усложнится.

Если не предусматривать механизмов защиты БД от дублирования - однозначно все усложнится. Если заполнять БД доверить тому кто ничего не понимает в предмете - тоже усложнится
sdku

Насчет "как смотреть"-это к тому что про EAV упоминалось 23.09 а Вы 28.09 говорите что слышите об этом впервые
Вы внимательно читали то что я писал в этом ответе?
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003366
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
Вообще-то у вас получается банальный номенклатурный справочник.
Вот и исходите из этого.

А где об этом можно почитать? Поиск даёт только материалы по 1С.

pureproft
А вы уверены, что дальше не потребуется

Максимум, может быть сведения по температуре понадобятся. Остальное - точно нет (упаковка не важна, габариты определяются корпусом, и т.п.).

sdku
А Вы уверены что содержимое столбца "наименование" есть наименование элемента,а не "part number" присваиваемый произвольно каждым производителем

Здесь это одно и то же.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003388
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint
А где об этом можно почитать? Поиск даёт только материалы по 1С.

https://www.sql.ru/forum/db-design
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003392
Фотография pureproft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint

pureproft
А вы уверены, что дальше не потребуется

Максимум, может быть сведения по температуре понадобятся. Остальное - точно нет (упаковка не важна, габариты определяются корпусом, и т.п.).

Я не про конкретику, а про то, что вы закладываетесь допустим на десяток +/- атрибутов, а их завтра раз и сотня и может не одна.

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

Я чуть позже покажу свой эксперимент под вами обозначенные изначальные исходные данные:
Что например атрибутов у каждой позиции не больше 10 +/- единицы и общее количество не превышает допустим 100 тыс.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003417
bratint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pureproft
Т.е. если вы уверны с погрешностью в единицах в количестве минимальном и максимальном атрибутов и их мало мальской стабильности, это один взгляд на ситуацию

Да, количество / состав атрибутов здесь не будет меняться.
...
Рейтинг: 0 / 0
Архитектура базы данных для хранения информации о разнородных объектах
    #40003447
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bratint,

Хочу обратить ваше внимание на подводные камни которые вас ждут в EAV.
1 Полное отсутствие ссылочной целостности данных (от слова совсем).
придется городить, что то своё.
2 типы данных атрибутов не так легко проверить "На лету"

3 Забудьте про простые запросы (огород, тот есчё, будете городить join на каждый чих)
ну и запросы в основном будут не обновляемыми.
4 механизм обслуживания/представления справочников придется городить свой, с нуля.
Удачи.
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Архитектура базы данных для хранения информации о разнородных объектах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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