powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи со схемой данных.
25 сообщений из 384, страница 7 из 16
Прошу помощи со схемой данных.
    #38092180
t1002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изерлонерэто связано с тем что у меня два акса одновременно стоит?

оставьте один - 2003-й.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38092185
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изерлонер,

так, а вылетает в каком-то одном, конкретном файле ?
если создать в А2003 новую БД, и попробывать в ней ТриВью поставить ? как - получится ?
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38092304
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
А2003, остальные приложения офиса - 2010. Работает нормально.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38092370
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112Изерлонер,

так, а вылетает в каком-то одном, конкретном файле ?
если создать в А2003 новую БД, и попробывать в ней ТриВью поставить ? как - получится ?

Создал новую базу, на этот раз в mdb. Сразу попытался поставить на форму Control Tree View. Акс тут же вылетел.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38092373
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот CTreeView Control нормально встал. Только не уверен что это тоже самое...
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38094405
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратил внимание что Tree View Control вылетает везде при попытке его поставить. В экселе тоже. То есть проблема не в аксе по ходу. А возможно его как-то переустановить?
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100190
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Новым годом!

Итак, появилось время что бы более плотно заняться базами данных. На основе примеров Программиста–любителя доработал мою базу и раскидал имеющиеся данные по таблицам... Это конечно не окончательный вариант, но, по крайней мере с этим можно уже работать.
Программист–любитель, мне кажется в Вашей схеме данных (с шариковой ручкой) есть некоторая избыточность. Поле sAddress в таблице NodeElement весьма удобно для получения структуры изделия, но оно же приводит к появлению множества дублирующихся записей. Если у нас есть некоторая сборочная единица включающая в себя какое то подмножество деталей, и эта единица включается во множество других сборок – это приведет к появлению в таблице кучи записей о деталях (столько, сколько раз появляется эта сборочная единица в других сборках плюс те же детали входящие в состав других сборочных единиц), отличающихся только по полю sAddress (ну и по сочетанию ID, ID_PARENT). При наличии нескольких сот, а то и тысяч однотипных изделий, таблица сильно разрастется, пожалуй до сотен тысяч записей. П–Л, хочу просто уточнить, так и было задумано? Думаете этим можно пренебречь?
Мне кажется от многократного дублирования можно уйти если для адресов создать отдельную таблицу, где и будет хранится структура всех изделий, но это пока только «мысли вслух», возможно в моем случае это не актуально. Мой перечень изделий едва ли превышает две сотни, а там где сборки повторяются ... таких изделий не много больше десятка. ... По крайней мере пока.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100219
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изерлонертаблица сильно разрастется, пожалуй до сотен тысяч записей.

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

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

моя мысль – отделить адреса узлов (структуру изделий) в отдельную таблицу. В таблице NodeElement оставить только ID, ID_PARENT. Тогда и получается каждый уровень без избыточной детализации. Это сократит количество записей, но возможно я нарвусь на какие–то проблемы которых сейчас не вижу.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100272
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот смотрите что я имею ввиду. Вот эта схема.
Возьмем например сборочную единицу - пишущий стержень, пусть ID у него будет 0130
В него входят детали Шарик - 2032, сам стержень - 2009, и элемент куда шарик вставляется 3120.
Для шарика получаем
iElementID = 2032
iElementID_Parent = 0130
nNodeElementCount = 1
sNodeElementAddress =хххх#0130#2032
где хххх - вышестоящие уровни сборок, которых может быть сколько угодно. Один и тот же пишущий стержень может входить в ручки разных моделей, которые в свою очередь могут входить например в разные комплекты и т.д. То есть получаем кучу адресов а с ними и повтор каждый раз всех указанных значений. Как-то так.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100280
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тыц.
Только надо будет как-то отслеживать изменения в таблице NodeElement и вносить изменения в таблицу Structure
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100291
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а это схема моей базы данных на текущий момент (только в части касающейся нормативов расхода). Там еще куча довесков по приходу/расходу (не моя часть, просто импортирую из бухгалтерской базы данных и обрабатываю под свои нужды) и дополнительных проверочных таблиц.
Как видите далеко от схемы предложенной П-Л я не ушел, фактически полностью ее передрал. За что ему очень благодарен.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100319
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изерлонерне ну в принципе да, просто это избыточно получается. И мне кажется это количество записей можно многократно сократить.
примерно так:
описывается структура изделия самого нижнего уровня.
Затем описывается структура следующего уровня сборочных единиц, без детализации по нижнему уровню (это уже описано на первом этапе), затем следующий уровень и т.д.
А в схеме приведенной П–Л получается для каждого изделия и для каждого уровня полная детализация, из–за чего повторы. Ну если я правильно понял. По крайней мере у меня так получается.

Главное, что я сделал в структуре БД по ТЗ Алекса было единая таблица для всех изделий, сборок, деталей и отдельная таблица о вхождении деталей более нижнего уровня в более крупные единицы. Как ни крути, две таблицы на это надобны. Если бы одна и та же деталь НИКОГДА не включалась бы в РАЗНЫЕ более крупные единицы ОДНОВРЕМЕННО (а только в одну и только одну единицу), то достаточно одной таблицы. А так ID - ParentID надо выносить в отдельную.

Далее, поскольку у вас нормальный t-sql дальше все считается запросами. В том числе начав с любого корня - у которого ParentID нулл - вся его полная структура с адресами, расчетом полного количества всех деталюшек, получается мухой рекурсивными запросами. Примеры в топиках я приводил - они абсолютно тривиальны, то же самое есть в bol.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100446
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень рад продолжению темы, видимо это нужно не только мне, однако структура ручки, как впрочем и тема и структура (изначальная) была предложена мной лишь как наглядный пример имеющийся перед каждым из нас, ну чтоб не впадать в более подробное обсуждение чего-то неведомого или непонятного, на сегодняшний день продолжаю обдумывать изменения структуры, правда большие проблемы с рекурсивностью данных, в смысле выборки данных из нее известными мне способами.

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

постараюсь следить за темой и принимать участие в ней..
С наступившим НОВЫМ ГОДОМ удачи всех благ и главное ЗДОРОВЬЯ!!!!!
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100449
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex999konочень рад продолжению темы, видимо это нужно не только мне, однако структура ручки, как впрочем и тема и структура (изначальная) была предложена мной лишь как наглядный пример имеющийся перед каждым из нас, ну чтоб не впадать в более подробное обсуждение чего-то неведомого или непонятного, на сегодняшний день продолжаю обдумывать изменения структуры, правда большие проблемы с рекурсивностью данных, в смысле выборки данных из нее известными мне способами.

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

постараюсь следить за темой и принимать участие в ней..
С наступившим НОВЫМ ГОДОМ удачи всех благ и главное ЗДОРОВЬЯ!!!!!
Состав изделий и сборок отдельно - в смысле в разных таблицах - грубая ошибка проектирования, вызванная желанием строить физическую модель БД по эскизам входных-выходных форм, отчетов.

В t-sql проблем с получением рекурсивных наборов данных нет. В bol'е навалом исчерпывающих примеров. На их основе легко можно рассчитать общее кол-во элементарных деталюшек во всем изделии, одинаковых подсборок и т.п. Тако же количество ресурсов-материалов, время изготовления.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100454
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель,

приветствую!!!! С наступившим

Насчет раздельных составов я просто упомянул как о начальной варианте решения, мы это уже обсуждали, да, структура в одной таблице это удобно, да и с рекурсивностью вопрос снимается, просто Излонер задает вопросы как бы в тему, я предлагал просмотреть начальный уровень обсуждения, вдруг да что-нить еще созреет, в смысле решений, ведь чем больше вариантов решения тем более правильный ответ... на связи
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100456
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, прикупил себе 4G роутер Hyawei bm632w пока все работает на ура, во всяком случае лучше чем модем мегафон, да и действительно безлимитный, качай сколько хочешь, правда после скачки 500Гб поставили мне ограничение в 2МБит, а так было стабильно 10 и рывками аж до 15-17 МБит.

так к слову пришлось....
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100457
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну еще скрин про связь 4Г
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100458
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100462
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому что данные о изделиях, деталях и сборках надо хранить в единой таблице я был подготовлен специалистом по базам данных, который устраивался к нам на работу и которого пнули через полтора месяца. Я упоминал о нем уже. К сожалению сколько либо продолжительно с ним общаться не получилось. Взглянув на то что я сделал на тот момент, похвалил так сказать за старание, сказал что видно что пытаюсь сделать более менее грамотно базу. И главное его замечание было именно о хранении данных в одной таблице. На тот момент для каждого изделия плюс для каждой группы материалов у меня велась отдельная таблица. Он сразу сказал – надо избавляться от этого. Сразу я этого не понял, но далее на собственном опыте создав единую таблицу нормативов в эксель убедился в преимуществах такого подхода. Здесь же на форуме пошли ещё дальше.
... Так, и всё таки мне всё больше не нравится наличие поля адресов в таблице NodeElement. Боюсь из–за дублирования возникнет ситуация когда для изменения количества деталей/подсборок в сборке придется изменять их по каждому изделию куда входит сборка.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100472
Изерлонер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас компа нет под рукой. Так что на словах – выше, где я привел схему с выделением поля адресов в таблицу Structure вместо поля Name надо сделать FK на поле iElementID и всё. Получаем отдельную таблицу для структуры (адресов) и отдельную таблицу для состава изделий, сборок, подсборок на одном уровне. И никакого лишнего дублирования.
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100479
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изерлонер... Так, и всё таки мне всё больше не нравится наличие поля адресов в таблице NodeElement. Боюсь из–за дублирования возникнет ситуация когда для изменения количества деталей/подсборок в сборке придется изменять их по каждому изделию куда входит сборка.
У вас t-sql. Хранить адрес не нужно. Он всегда вычислится на лету, как только будет вам нужен.

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

Следующий слой - запросы. Вот тут данные из разных таблицы соединяются друг с другом, происходит вычисление всего того, что надо.

И, наконец - формы! На них информация должна быть представлена именно в таком виде, который привычен и удобен пользователю. Она разительно отличается от физической модели БД (таблиц). Вот тут Алекс может получить свои изделия и сборки отдельно - раз так по ГОСТУ надо юзеру.

Дальше - длинный код на sql.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrTypeElement') DROP VIEW dbo.qrTypeElement
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
-- Справочник типов элементов
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrTypeElement AS

SELECT 

   tp.iTypeElementID,         -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   tp.sTypeElementCode,       -- Код типа элемента (DET, SBR, IZD)
   tp.sTypeElementName        -- Название типа элемента

FROM 

   dbo.TypeElement tp
--------------------------------------------------------------------------------
GO

GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrElement') DROP VIEW dbo.qrElement
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
-- Единый перечень элементов любых типов - все и детали, и сборки, и изделия
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrElement AS

SELECT 

   el.iTypeElementID,         -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   tp.sTypeElementCode,       -- Код типа элемента (DET, SBR, IZD)
   tp.sTypeElementName,       -- Название типа элемента

   el.iElementID,             -- PK автосчетчик
   el.sElementCode,           -- Код элемента
   el.sElementName,           -- Название элемента
   el.dbElementWeight,        -- Вес
   el.sElementElectricLight,  -- ???
   el.dbElementCoverage,      -- Покрытие
   el.sElementNote,           -- Примечание
   sElementAlias = el.sElementCode + ' ' + el.sElementName + ' (' + tp.sTypeElementName + ')' 

FROM 

   dbo.Element el
   LEFT OUTER JOIN dbo.TypeElement tp ON tp.iTypeElementID = el.iTypeElementID
--------------------------------------------------------------------------------
GO

-- select iElementID, sElementAlias FROM dbo.qrElement ORDER BY iTypeElementID, sElementCode

GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrNodeElement') DROP VIEW dbo.qrNodeElement
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
-- Структура (состав) Изделий и Сборок
-- Каждый узел типа Изделия или Сборки включает любое количество подсборок и деталей
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrNodeElement AS

SELECT 

   nd.iNodeElementID,               -- PK авт осчетчик
   nd.nNodeElementCount,            -- Число шт. включаемых элементов
   nd.sNodeElementAddress,          -- Адрес узла

   el.iTypeElementID,               -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   tp.sTypeElementCode,             -- Код типа элемента (DET, SBR, IZD)
   tp.sTypeElementName,             -- Название типа элемента

   nd.iElementID,                   -- ID включаемого элемента
   el.sElementCode,                 -- Код элемента
   el.sElementName,                 -- Название элемента
   el.dbElementWeight,              -- Вес
   el.sElementElectricLight,        -- ???
   el.dbElementCoverage,            -- Покрытие
   el.sElementNote,                 -- Примечание

   iTypeElementID_Parent = el_par.iTypeElementID,              -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   sTypeElementCode_Parent = tp_par.sTypeElementCode,          -- Код типа элемента (DET, SBR, IZD)
   sTypeElementName_Parent = tp_par.sTypeElementName,          -- Название типа элемента

   nd.iElementID_Parent,                                       -- ID более крупного, куда включаем
   sElementCode_Parent = el_par.sElementCode,                  -- Код элемента
   sElementName_Parent = el_par.sElementName,                  -- Название элемента
   dbElementWeight_Parent = el_par.dbElementWeight,            -- Вес
   sElementElectricLight_Parent = el_par.sElementElectricLight,-- ???
   dbElementCoverage_Parent = el_par.dbElementCoverage,        -- Покрытие
   sElementNote_Parent = el_par.sElementNote                   -- Примечание

FROM 

   -- Основаная таблица с узлами
   dbo.NodeElement nd
   -- Включаемый элемент (потомок, child)
   LEFT OUTER JOIN dbo.Element el ON el.iElementID = nd.iElementID
   LEFT OUTER JOIN dbo.TypeElement tp ON tp.iTypeElementID = el.iTypeElementID
   -- Более крупый элемент, в который включают (родитель, parent)
   LEFT OUTER JOIN dbo.Element el_par ON el_par.iElementID = nd.iElementID_Parent
   LEFT OUTER JOIN dbo.TypeElement tp_par ON tp_par.iTypeElementID = el_par.iTypeElementID
--------------------------------------------------------------------------------
GO

-- SELECT * FROM qrNodeElement WHERE iElementID=13
-- SELECT * FROM qrNodeElement WHERE iElementID_Parent=12

GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrElementTree') DROP VIEW dbo.qrElementTree
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
-- Полный состав всего изделия
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrElementTree AS

WITH NodeLevel
(
   iNodeElementID, iElementID_Root, iElementID_Parent, iElementID, 
   sElementCode, sElementName, sNodeElementAddress, nNodeElementCount
) 
AS 
(

   -- Первый корневой уровень
   SELECT 
      nd.iNodeElementID,               -- ID узла
      iElementID_Root = nd.iElementID, -- ID изделия, самого верхнего элемента
      nd.iElementID_Parent,            -- ID элемента
      nd.iElementID,                   -- ID элемента
      nd.sElementCode,                 -- Код элемента
      nd.sElementName,                 -- Название элемента
      sNodeElementAddress = '#' + CAST(nd.iElementID AS VARCHAR(MAX)) + '#', 
      ISNULL(nd.nNodeElementCount, 0)
   FROM dbo.qrNodeElement nd 
   WHERE NOT EXISTS(SELECT * FROM dbo.NodeElement nd2 WHERE nd2.iElementID = nd.iElementID_Parent)
   
   -- Все последующие уровни
   UNION ALL SELECT 
      nd.iNodeElementID,               -- ID узла
      NodeLevel.iElementID_Root,       -- ID изделия, самого верхнего элемента
      nd.iElementID_Parent,            -- ID элемента
      nd.iElementID,                   -- ID элемента
      nd.sElementCode,                 -- Код элемента
      nd.sElementName,                 -- Название элемента
      NodeLevel.sNodeElementAddress + CAST(nd.iElementID AS VARCHAR(MAX)) + '#', 
      nNodeElementCount = ISNULL(NodeLevel.nNodeElementCount, 0) * ISNULL(nd.nNodeElementCount, 0)
   FROM 
      dbo.qrNodeElement nd 
      JOIN NodeLevel ON nd.iElementID_Parent = NodeLevel.iElementID
)
SELECT 
   iNodeElementID,
   iElementID_Root,
   iElementID_Parent, 
   iElementID, 
   sElementCode, 
   sElementName, 
   sNodeElementAddress, 
   nNodeElementCount 
FROM NodeLevel
--------------------------------------------------------------------------------
GO

GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrNodeElement2') DROP VIEW dbo.qrNodeElement2
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
-- Структура (состав) Изделий и Сборок
-- Каждый узел типа Изделия или Сборки включает любое количество подсборок и деталей
-- Плюс добавлены вычисленные из полного дерева поля
--    ID изделия
--    адрес
--    количество элементов данного узла во всем дереве
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrNodeElement2 AS

SELECT 

   nd.iNodeElementID,               -- PK авт осчетчик
   nd.nNodeElementCount,            -- Число шт. включаемых элементов
   tr.iElementID_Root,              -- ID изделия - самого верхнего, корневого элемента
   tr.sNodeElementAddress,          -- Адрес узла
   nNodeElementCount_Tree = tr.nNodeElementCount, -- Общее количество элементов вверх по дереву
                                    -- если по пути наверх в количество вложений в очередной узел > 1 
                                    -- то все корректно умножается
                                    -- Потом для общего количества элементов по всему изделию, 
                                    -- не взирая на то как именно они вложены, останется просто сложить
                                    -- Аналогичным образом можно считать вес изделия

   el.iTypeElementID,               -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   tp.sTypeElementCode,             -- Код типа элемента (DET, SBR, IZD)
   tp.sTypeElementName,             -- Название типа элемента

   nd.iElementID,                   -- ID включаемого элемента
   el.sElementCode,                 -- Код элемента
   el.sElementName,                 -- Название элемента
   el.dbElementWeight,              -- Вес
   el.sElementElectricLight,        -- ???
   el.dbElementCoverage,            -- Покрытие
   el.sElementNote,                 -- Примечание

   iTypeElementID_Parent = el_par.iTypeElementID,              -- FK ссылка на тип элемента: Деталь, Сборка, Изделие
   sTypeElementCode_Parent = tp_par.sTypeElementCode,          -- Код типа элемента (DET, SBR, IZD)
   sTypeElementName_Parent = tp_par.sTypeElementName,          -- Название типа элемента

   nd.iElementID_Parent,                                       -- ID более крупного, куда включаем
   sElementCode_Parent = el_par.sElementCode,                  -- Код элемента
   sElementName_Parent = el_par.sElementName,                  -- Название элемента
   dbElementWeight_Parent = el_par.dbElementWeight,            -- Вес
   sElementElectricLight_Parent = el_par.sElementElectricLight,-- ???
   dbElementCoverage_Parent = el_par.dbElementCoverage,        -- Покрытие
   sElementNote_Parent = el_par.sElementNote                   -- Примечание
   
FROM 

   -- Основаная таблица с узлами
   dbo.NodeElement nd
   -- Включаемый элемент (потомок, child)
   LEFT OUTER JOIN dbo.Element el ON el.iElementID = nd.iElementID
   LEFT OUTER JOIN dbo.TypeElement tp ON tp.iTypeElementID = el.iTypeElementID
   -- Более крупый элемент, в который включают (родитель, parent)
   LEFT OUTER JOIN dbo.Element el_par ON el_par.iElementID = nd.iElementID_Parent
   LEFT OUTER JOIN dbo.TypeElement tp_par ON tp_par.iTypeElementID = el_par.iTypeElementID
   -- Добавления запроса полного дерева с вычисленным адресом и общим количеством элементов в дереве
   LEFT OUTER JOIN dbo.qrElementTree tr ON tr.iNodeElementID = nd.iNodeElementID
--------------------------------------------------------------------------------
GO

...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100500
Фотография alex999kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как всегда ОГРОМНОЕ СПАСИБО!!! за пищу для ума...

все равно, у меня пока не получается построить хоть мало-мальски работающее вычисления исходя из струтуры и данных по рекурсивности состава изделия, хотя бы в сторону увеличения входимости, проще говоря пока вообще ничего не получается, вразумительного и приемлемого, даже так скажу- понятного....
...
Рейтинг: 0 / 0
Прошу помощи со схемой данных.
    #38100514
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex999konвсе равно, у меня пока не получается построить хоть мало-мальски работающее вычисления исходя из струтуры и данных по рекурсивности состава изделия, хотя бы в сторону увеличения входимости, проще говоря пока вообще ничего не получается, вразумительного и приемлемого, даже так скажу- понятного....
Прочитать в bol про рекурсивные запросы.
Начать с простейшего примера.
Получить список всех корней (изделий), включить только минимальный минимум полей ID, ParentID, Name.
Сделать рекурсивный запрос, соединеный со списком всех корней через связку ID - ParentID.
Получить дерево изделия целиком.
Начать добавлять поля и расчеты количества, адреса, и т.п.

На все про все от нуля должно уйти полчаса.
...
Рейтинг: 0 / 0
25 сообщений из 384, страница 7 из 16
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи со схемой данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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