powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Конкретная схема - конкретный вопрос
18 сообщений из 18, страница 1 из 1
Конкретная схема - конкретный вопрос
    #33446099
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил что лучше новый топик организовать: а то Тенцер както не активно обсуждают
Пытаюсь создать схему данных для хранения данных по материалам и оборудованию. Параметры заранее неизвесны и описанию не поддаются
начал с модели Тенцера, но после двух дневных размышлений пришел к такой схеме данных (см. приложение)
Небольшое пояснение:
На основании изменений в таблицах OB_MAT и PARAMS тригеры модифицируют таблицы ZP_***. Т.е. при добавление новой записи в OB_MAT создаем записи в таблицах ZP_*** в зависимости от того в каком разделе вводиться такие и записи. При добавлении изменении удалении параметров в PARAMS производим соответствующие манипуляции в таблицах ZP_*** и т.д.

Вопросов вобщем то два:
1. Кто видит какие минусы в такой схеме
2. Как построить вьюшку чтобы объединить все параметры по объекту
собрать все NAME_P и VALUES из всех таблиц ZP_***
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446236
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например, если собрать все 3 (в данном случае) типа параметров в одну
таблицу - можно сэкономить на накладных расходах.
Аналогично, если оперировать не названием параметра (name_p) а кодом
параметра.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446310
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
например, если собрать все 3 (в данном случае) типа параметров в одну
таблицу - можно сэкономить на накладных расходах.
Такой вариант у меня был, но мне кажется в нем минусов еще больше
во первых в таблице будет много полей VALUE_STR, VALUE_NUM, VALUE_DAT и т.д. 3 это только пример - заполненым из которых будет всегда одно.
Сейчас я думаю над организзацией хранения типа BLOB в котором хранить описание в произвольном виде например сканированную страницу из журнала. А BLOB таблицу желательно хранить в другом табличном пространстве с большим размером блока. И кроме того проблема всеравно остается как представить такую таблицу с множеством полей в виде
КОД_ОБЪЕКТА ИМЯ_ПАРАМЕТРА ЗНАЧЕНИЕ_ПАРАМЕТРА
чтобы дать пользователю все параметры вместе в удобном виде.

locky
Аналогично, если оперировать не названием параметра (name_p) а кодом
параметра.

С этим согласен, но имя я думаю имя поля все равно оставить надо.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446321
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnov wrote:
> locky
>
> например, если собрать все 3 (в данном случае) типа параметров в одну
> таблицу - можно сэкономить на накладных расходах.
>
>
> Такой вариант у меня был, но мне кажется в нем минусов еще больше
> во первых в таблице будет много полей VALUE_STR, VALUE_NUM, VALUE_DAT и
> т.д. 3 это только пример - заполненым из которых будет всегда одно.
я использую всего 4 типа - varchar(512),datetime,int,numeric(19,9)
пока хватает.

> Сейчас я думаю над организзацией хранения типа BLOB в котором хранить
> описание в произвольном виде например сканированную страницу из журнала.
> А BLOB таблицу желательно хранить в другом табличном пространстве с
> большим размером блока. И кроме того проблема всеравно остается как
Да, BLOB имеет смысл выносить.

> представить такую таблицу с множеством полей в виде
> КОД_ОБЪЕКТА ИМЯ_ПАРАМЕТРА ЗНАЧЕНИЕ_ПАРАМЕТРА
> чтобы дать пользователю все параметры вместе в удобном виде.
А что за проблема - написать join? У Тенцера вроде как описано было?

> locky
>
> Аналогично, если оперировать не названием параметра (name_p) а кодом
> параметра.
>
> С этим согласен, но имя я думаю имя поля все равно оставить надо.
надо, но не в таблице значений.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446659
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
А что за проблема - написать join? У Тенцера вроде как описано было?


Просьба с этого места поподробней, как из структуры см. вложение
получить
ID_OM VAL.NAME VALUE

В статье Тенцера такого примера не видел, и что-то не представляю как это реализовать.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446661
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цель не вполне понятна, но коли развлекаться..:).
авторПараметры заранее неизвесны и описанию не поддаются
Рассмотрите следующие опции.

1. Если Материал принадлежит не более одной Категории, то КатегорияМатериала тоже может рассматриваться как параметр.
2. Некоторые параметры могут иметь в качестве значения ссылку на справочник (например стандарты) или на Материал.
3. ZP_*** для параметра-ссылки на самом деле задает бинарную связь. Некотоые связи могут быть типа N:N, т.е. вполне симметричны.
4.Категории не обязательно образуют дерево (лес), возможно множественное наследование.


Еще: непонятно, почему ZP_*** имеют внешний ключ на Материалы, но не имеют на Параметры.

В каждой шутке есть доля шутки.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446785
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и поподробней:
Итак фирма занимается проектированием и строительством судов
при постройке судна как вы понимаете используются сотни тысяч видов материалов и оборудования. Начиная с болтов и листовой стали и кончая системами развлечений.
Все это оборудование и материалы проходит некоторые этапы утверждения, доставки установки, для этого его для начала необходимо описать, а так как описания параметров у болта, кабеля, телевизора, доски и т.д и т.п. разные то хочу организовать универсальный справочник где сам пользователь может описать набор параметров для определенной категории оборудования и ввести эти данные.
ModelR
1. Если Материал принадлежит не более одной Категории, то КатегорияМатериала тоже может рассматриваться как параметр.
Можно и так. категория может быть только одна, но я строю так потому что таблица категорий это расширенный справочник Быстрей всего ЕСКД или его иностранный аналог, пользователи уже привыкли им пользоваться и идти от раздела...

ModelR
2. Некоторые параметры могут иметь в качестве значения ссылку на справочник (например стандарты) или на Материал.
Точно, но я предпологаю что это просто числовой параметр, а откуда из какого справочника брать или просто значение вводить это не так важно.
ModelR
3. ZP_*** для параметра-ссылки на самом деле задает бинарную связь. Некотоые связи могут быть типа N:N, т.е. вполне симметричны.
Теоретически да но, я думаю это будет ненужно, хватит связи один ко многим
один материал-оборудование --> много параметров

ModelR
4.Категории не обязательно образуют дерево (лес), возможно множественное наследование.
Нет множественного наследования нет обычный "деревянный" классификатор

ModelR
Еще: непонятно, почему ZP_*** имеют внешний ключ на Материалы, но не имеют на Параметры.
Я пока предпологаю таблицу параметры использовать как хранилище шаблонов
параметров, при добавлении нового материала тригер берет необходимые параметры этого материала и добавляет в соответствующие таблицы ZP_***
Если нужно обработать какойто вид параметра то я и в запросе свяжу, а так пока невижу смысла.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446904
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnov ModelR
3. ZP_*** для параметра-ссылки на самом деле задает бинарную связь. Некотоые связи могут быть типа N:N, т.е. вполне симметричны.
Теоретически да но, я думаю это будет ненужно, хватит связи один ко многим
один материал-оборудование --> много параметровРечь о другом. Если в факте

Материал ="Двигатель 1", параметр ="Тип топлива", значение = "АИ 92"

признать "АИ 92" ссылкой на материал, то этот факт можно рассматривать как экземпляр связи со схемой

РазрешенноеТопливо (
ГдеПрименяется: Материал категория Двигатель
ЧтоПрименяется: Материал категория Топливо)
UNIQUE (ГдеПрименяется, ЧтоПрименяется)


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

Еще вспомнил:
5.Исполнения. Каждое исполнение - это самостоятельный материал?
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446932
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRРечь о другом. Если в факте

Материал ="Двигатель 1", параметр ="Тип топлива", значение = "АИ 92"

признать "АИ 92" ссылкой на материал, то этот факт можно рассматривать как экземпляр связи со схемой

РазрешенноеТопливо (
ГдеПрименяется: Материал категория Двигатель
ЧтоПрименяется: Материал категория Топливо)
UNIQUE (ГдеПрименяется, ЧтоПрименяется)


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

ModelR
Еще вспомнил:
5.Исполнения. Каждое исполнение - это самостоятельный материал?
А вот тут непонял, исполнения - это технология обработки - если да то я хочу разносить в отдельные таблицы так легче разграничивать права между конструкторами и технологами, если нет то поподробней.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33446953
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и еще а по второму вопросу

2. Как построить вьюшку чтобы объединить все параметры по объекту
собрать все NAME_P и VALUES из всех таблиц ZP_***

Никто незнает или так нельзя...
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33447037
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исполнения - это группа сильно похожих материалов, отличающихся значениями немногих параметров.
Скажем дверь - одна конструкция, варьируемые независимо параметры:
цвет (4 варианта), размер (5 вариантов).
Сколько материалов - один плюс двадцать исполнений или 20 отдельных материалов? Добавили еще один цвет - плюс пять материалов нужно сгегенрировать автоматом?

Я к тому, что таких вопросов всплывет много. Прежде чем преобразовывать строки в столбцы или наборот неплохо бы все это продумать.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33447194
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRИсполнения - это группа сильно похожих материалов, отличающихся значениями немногих параметров.
Скажем дверь - одна конструкция, варьируемые независимо параметры:
цвет (4 варианта), размер (5 вариантов).
Сколько материалов - один плюс двадцать исполнений или 20 отдельных материалов? Добавили еще один цвет - плюс пять материалов нужно сгегенрировать автоматом?
Нет таких проблем не будет, конструктор сам прорабатывает варианты и дает конкретное решение, дверь такая указывая ее параметры. А любое изделие имеет граничное количество параметров и описывается именно ими эти параметры вводятся один раз для всех дверей, кабелей, лестниц и т.д. в проекте. А цвет это значение параметра, его значение задается для каждой двери.
ModelR
Я к тому, что таких вопросов всплывет много. Прежде чем преобразовывать строки в столбцы или наборот неплохо бы все это продумать.
Это понятно, чем и занимаюсь. Просто я привык так: продумываю схему данных. Вроде подходит, в нее укладываются все данные которые необходимо хранить и обрабатывать. Затем продумываю как предоставить эти данные пользователю, примерные формы, запросы, процедуры обработки.
Если все склеилось то начинаем ваять.
В данном случае схема данных вроде подходит, но работать с ней неудобно, надо или менять схему или придумать способ обработки. Вот и думаю и спрашиваю советы.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33447655
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnov wrote:
> Да и еще а по второму вопросу
>
> 2. Как построить вьюшку чтобы объединить все параметры по объекту
> собрать все NAME_P и VALUES из всех таблиц ZP_***
>
> Никто незнает или так нельзя...
насчет Вашей схемы - не сильно и разбирался :-) но если предположить,
что у нас есть полный список экземпляров....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select E.ID As Код, P1.Строка as Наименование
	, P2.Число as Водоизмещение
	, P3.Дата as ДатаПостройки
from	Объект E join Параметр P1 on E.ID = P1.Объект
	join Параметр P2 on E.ID = P2.Объект
	join Параметр P2 on E.ID = P2.Объект
where	E.Тип = "Судно" and p1.Тип="Наименование" and P2.тип="Водоизмещенние"
	and P3.тип="ДатаПостройки"

хотя, как показывает практика... у меня еще ни разу не встретилась
необходимость заджойнить ВСЕ параметры... джойнятся самы ходовые (чаще
всего наименование, цена, единица измерения и т.д.).
Или в каждом конкретном случае свой небольшой набор параметров.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33447657
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky wrote:
забыл в третьем джойне заменить 2 на 3 - бывает :-(

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33448240
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
хотя, как показывает практика... у меня еще ни разу не встретилась
необходимость заджойнить ВСЕ параметры... джойнятся самы ходовые (чаще
всего наименование, цена, единица измерения и т.д.).
Или в каждом конкретном случае свой небольшой набор параметров.

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

КОД РАЗМЕР ЦВЕТ ВЕС
________________________
1111 123х123 черн 1000
2222 234х234 белы 2000

а вот так

код поле значение
___________________
1111 размер 123Х123
1111 цвет черн
1111 вес 1000
2222 размер 234х234
2222 цвет белы
2222 вес 2000

Тогда этот запрос получится универсальным будет всегда выдавать все параметры, а если надо в табличном виде можно сделать перекрестный запрос
и развернуть. И показать все материалы со всеми параметрами в группе.
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33448241
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnov2. Как построить вьюшку чтобы объединить все параметры по объекту собрать все NAME_P и VALUES из всех таблиц ZP_***Реализация зависит от сервера. Ищите по соответвсвующему форуму. По Оракл базовый вариант есть в http://www.sql.ru/faq/faq_topic.aspx?fid=210 а также ищите "строки в столбцы".
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33448733
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnov wrote:
> locky
>
> хотя, как показывает практика... у меня еще ни разу не встретилась
> необходимость заджойнить ВСЕ параметры... джойнятся самы ходовые (чаще
> всего наименование, цена, единица измерения и т.д.).
> Или в каждом конкретном случае свой небольшой набор параметров.
Понял, но и в этом случае проблем нет. Вы ораклист? Вам в оракловский
форум :-).
Код: plaintext
1.
2.
3.
select E.ид,P.Имя,Строка,Число,Дата
from	Объект E join параметр P on E.Ид=p.Объект
order by E.ид,Параметр.Имя
тут конечно кака- в завимости от типа параметра надо брать либо
"Строка", либо "Число", либо "дата".
Но кака небольшая.
--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Конкретная схема - конкретный вопрос
    #33449558
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Понял, но и в этом случае проблем нет. Вы ораклист? Вам в оракловский
форум :-).
Я занимался Oracle теперь, сменил работу сижу на Firebird, но дело не в субд
SQL он хоть и различается немного в разных СУБД но принципиально возможности одинаковые.
locky
Код: plaintext
1.
2.
3.
select E.ид,P.Имя,Строка,Число,Дата
from	Объект E join параметр P on E.Ид=p.Объект
order by E.ид,Параметр.Имя
тут конечно кака- в завимости от типа параметра надо брать либо
"Строка", либо "Число", либо "дата".
Но кака небольшая.

Нет это все не то, я уже сделал и выглядит это так - кому интересно
Код: plaintext
1.
2.
SELECT ZP_INT.ID_OM, ZP_INT.NAME_P, cast(ZP_NUM.VALUES as varchar( 30 )) FROM ZP_INT
UNION
SELECT ZP_STR_30.ID_OM, ZP_STR_30.NAME_P, ZP_STR.VALUES FROM ZP_STR

И даже развернул предварительно сделав вьюшку

Код: plaintext
1.
2.
3.
4.
5.
6.
select ID_OM as ID,
        MAX(case when NP = 'POST' then MVAL end) as POST,
        MAX(case when NP = 'OPIS' then MVAL end) as OPIS,
        MAX(case when NP = 'SHIR' then MVAL end) as SHIR,
        MAX(case when NP = 'VIS' then MVAL end) as VIS
from test_view
group by  1 ;

теперь думаю как сделать универсальную разворачивалку чтобы было как
в Access

Код: plaintext
1.
2.
3.
4.
5.
TRANSFORM First(MVAL.VALUE) AS [First-VALUE)]
SELECT test_view.NP
FROM test_view
GROUP BY test_view.ID_OM
PIVOT test_view.NP;
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Конкретная схема - конкретный вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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