powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как связывать предприятия,филиалы,склады,мол в иерархической структуре?
16 сообщений из 16, страница 1 из 1
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862195
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Пищу программу складского учета(не лаб). Поставщики, покупатели и "мой фирмы" в таблице "контрагенты" вместе("мой фирмы" от поставщиков и покупателей различаю по реквизиту "MyFirm"). К таблице "контрагенты" по contragents_id хочу связывать таблицу MyFirms, в котором буду хранить древовидную структуру.
В посте 14782586 Old Nick даёт такой совет: "Организации, филиалы, склады, отв. мат. лица - это все одна и та же сущность и должна находиться в одной таблице. Для различающихся признаков можешь сделать доп. таблицы по связи 1-к-1. То есть должна быть возможность в поле FromStockID запихнуть и склад и мат. отв. лицо и организацию. Соответственно поле OrganizationID в таблице Products будет означать только юрлицо. Фактически это будет ведение учета в разрезе юрлиц".
Если идти по этой пути и создам иерархическую структуру со ссылкой на предка(с помощью ParentID) тогда получается такая таблица:
Код: sql
1.
2.
3.
4.
5.
MyFirms:
ID
ParentID
Descr
 


и такой резултат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 .Фирма №1
      .филиал(магазин)№1
          .склад №1(основной, для товара)
              .стеллаж №1 
              .стеллаж №2
                 .ящик №1(часто используется,напр, в аптеках)
                 .ящик №2 
          .склад №2(для материалов) 
          .склад №3(для списанного товара,пока налоговая не разрешить уничтожить)       
      .филиал(магазин)№2
          .склад №1
 .Фирма №2  
 и т.д. 
 



то есть сначала, когда клиент создаст свою фирму, в таблице MyFirms его фирма не вставляется, она будет в контрагентах и MyFirms таблица связывается с таблицей "контрагенты" через ID.

Мой вопросы:
1) при таком построений древовидной структуры как узнать какой ID записи в таблице принадлежит складу, сколько их, где филиалы, какой из записей есть МОЛ и т.д.? В этой таблице же будут обыкновенные строковые значения и больше ничего! А правильная иерархия полностью зависит от умения работать с программой и интеллекта клиента-он может вообще пропустит в иерархии склад или наименование магазина и закрепить товар не на склад, а например, прямо на стеллажи! Или я что-то недопонимаю?
2) Где место МОЛ-а?
3) Если иерархию построю по другому( т.н. "структура с потабличным хранением уровней"), то есть как тут: 7789614 , тогда какую иерархию построить- у одних фирм не будет стеллажи, у других ящики,а третьи хотят добавить что-то другое, как запихнуть для них в этой цепи справочников новый справочник, то есть новую таблицу?
Что-то сильно запутался. прошу помочь/поправить/дать предложения. Заранее спасибо.
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862198
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159,
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862265
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRosDelphi159,
ViPRos , и что...?!
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862479
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159,

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

рано тебе такой фигней страдать
суперинтеллект ,если рано, зачем тогда предлагать такой "умный рисунок"?
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862505
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Delphi159][quot ViPRos]Delphi159,

не х..я не в чём не разбираешься кроме оскорбления!
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862515
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159,
иерархию вынеси в отдельную сущность. никого не слушай. можно сделать все и без нее.
контрагенты - есть контрагенты, одна таблица (юрики, физики)
собств.фирмы вынеси в отдельную таблицу.
Склады тоже отд.таблица. МОЛ сделай реквизитом склада.
Ячейки сделай подчиненным справочником к складам.

не усложняй своей схемой учет, а то рискуешь на иерархии так и зависнуть!
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862517
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wamacoDelphi159,
иерархию вынеси в отдельную сущность. никого не слушай. можно сделать все и без нее.
контрагенты - есть контрагенты, одна таблица (юрики, физики)
собств.фирмы вынеси в отдельную таблицу.
Склады тоже отд.таблица. МОЛ сделай реквизитом склада.
Ячейки сделай подчиненным справочником к складам.

не усложняй своей схемой учет, а то рискуешь на иерархии так и зависнуть!

wamaco, спасибо за ответ и поощрение, форумчане извиняюсь за грубое высказывание! Просто ненавижу людей, которые думают, что они самые умные на свете!
Завтра, то есть уже сегодня, предложу диаграмму БД, просто хотел её доработать в контексте таблицы MyFirms !
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862678
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Delphi159
Если добавлю ParentId поле в warehouses, смогу получить иерархию типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 .склад №1(основной, для товара)
       .стеллаж №1 
       .стеллаж №2
                 .ящик №1(часто используется,напр, в аптеках)
                 .ящик №2 
 .склад №2(для материалов) 
 .склад №3(для списанного товара,пока налоговая не разрешить уничтожить)       
 



а мне нужна такое дерево:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 .Фирма №1
      .филиал(магазин)№1
          .склад №1(основной, для товара)
              .стеллаж №1 
              .стеллаж №2
                 .ящик №1(часто используется,напр, в аптеках)
                 .ящик №2 
          .склад №2(для материалов) 
          .склад №3(для списанного товара,пока налоговая не разрешить уничтожить)       
      .филиал(магазин)№2
          .склад №1
 .Фирма №2  
 и т.д. 



см. диаграмму

...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38862884
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В прдобных задачах очень тонкий момент где иметь жестко зашитую структуру на фиксированных таблицах Фирма-Склад а где гибкую на произвольном числе уровней иерархии. Иногда прихордится совмещать - до какого-то уровня фиксированная, дальше - гибкая. Иногда хранить описание фиксированной/гибкой иерерхии в дополнительных мета-таблицах и строить процедуры и интрефейс на основании мета-данных. Выбор конкретной реализации зависит от специфики ваших требований. Сделать можно по-разному, как именно будет наиболее выгодно ? С точки зрения админа - тока фиксированная структура, никаких динамически генерируемых финтифлюшек. С точки зрения программера - накодить унивесальную иерархию и поддержитвать ее в одном месте а не в 10 разных. С точки зрения пользователя - ему реализация по барабабану, надо чтобы интерфейс был удобный - симбиоз тривью и таблицы, каждая ячйека - количество чего-то там в данном узле.
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38863715
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л как именно будет наиболее выгодно ? С точки зрения админа - тока фиксированная структура, никаких динамически генерируемых финтифлюшек. С точки зрения программера - накодить унивесальную иерархию и поддержитвать ее в одном месте а не в 10 разных. С точки зрения пользователя - ему реализация по барабабану, надо чтобы интерфейс был удобный - симбиоз тривью и таблицы, каждая ячйека - количество чего-то там в данном узле.

Если в таблице Контрагенты добавлю поле ParentID, тогда смогу вставить в таблице записи филиалов и подразделении и построить иерархию типа:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 .Фирма №1
      .филиал(магазин)№1
           .подразделение №1   
           .подразделение №2   
      .филиал(магазин)№2
           .подразделение №3
           .подразделение №4 
 .Фирма №2 
      .филиал(магазин)№3
           .подразделение №5   
           .подразделение №6
и т.д. 


Если в таблице склады добавлю поле ParentID, тогда смогу создать записи стеллажей и ящиков и построить иерархию типа:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 .Склад №1
      .стеллаж №1
           .ящик №1   
           .ящик №2   
      .стеллаж №2
           .ящик №3
           .ящик №4 
 .Склад №2 
      .стеллаж №3
           .ящик №5
           .ящик №6 
и т.д. 


Но это не та иерархия- здесь нет связи между этими двумя иерархиями. А мне нужен такая иерархия

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 .Фирма №1
      .филиал(магазин)№1
           .подразделение №1
              .склад №1(основной, для товара)
                  .стеллаж №1 
                  .стеллаж №2
                     .ящик №1(ящики часто используется,напр, в аптеках)
                     .ящик №2 
              .склад №2(для материалов) 
              .склад №3(для списанного товара,пока налоговая не разрешить уничтожить)       
      .филиал(магазин)№2
              .склад №1
 .Фирма №2  
 и т.д. 



Как?
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38863870
forgothepass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял задачу, то мне видится, что танцевать надо от склада, так как он четко зависит от фирмы, филиала, подразделения:
WAREHOUSES
ware_id
ware_title - название склада
counteragent_id - ссылка на таблицу контрагентов
branch_id - ссылка на таблицу филиалов
subdivision_id - ссылка на таблицу подразделений
responsible_person_id - ссылка на таблицу МОЛ


Далее ввести справочник видов хранения (коробки, стеллажи, ящики) и т.д. Виды можно добавлять сколько угодно:
STORAGE_TYPE
stor_id
stor_title - ящики, стеллажи, коробки...



Связь склада с видом хранения впихнуть в дополнительную соединительную таблицу. В этой таблице увидим какой склад с каким видом хранения работает. Таблица эта нужна, потому что каждый склад может работать с несколькими видами хранения - иметь стеллажи, просто ящики складировать или ящики на стеллажи ставить )) ):
STORAGE_RELATION
rel_id
stor_id - ссылка на таблицу STORAGE_TYPE
ware_id - ссылка на таблицу WAREHOUSES


Ну а дальше дело техники - распихнуть товар по складам, типам хранения и т.д.
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38865504
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
forgothepassЕсли я правильно понял задачу,...
Вы неправильно поняли задачу! Дело не в том как 2 таблицы связывать, а в том как связывать 2 таблицы- иерархии. У обойх свой, разные ParentID, как их связывать!
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38866135
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
forgothepassЕсли я правильно понял задачу, то мне видится, что танцевать надо от склада, так как он четко зависит от фирмы, филиала, подразделения:
WAREHOUSES
ware_id
ware_title - название склада
counteragent_id - ссылка на таблицу контрагентов
branch_id - ссылка на таблицу филиалов
subdivision_id - ссылка на таблицу подразделений
responsible_person_id - ссылка на таблицу МОЛ


Далее ввести справочник видов хранения (коробки, стеллажи, ящики) и т.д. Виды можно добавлять сколько угодно:
STORAGE_TYPE
stor_id
stor_title - ящики, стеллажи, коробки...



Связь склада с видом хранения впихнуть в дополнительную соединительную таблицу. В этой таблице увидим какой склад с каким видом хранения работает. Таблица эта нужна, потому что каждый склад может работать с несколькими видами хранения - иметь стеллажи, просто ящики складировать или ящики на стеллажи ставить )) ):
STORAGE_RELATION
rel_id
stor_id - ссылка на таблицу STORAGE_TYPE
ware_id - ссылка на таблицу WAREHOUSES


Ну а дальше дело техники - распихнуть товар по складам, типам хранения и т.д.

устраивает и по-другому:создать цепь таблиц Фирма-филиал-пподразделение-склад-стеллаж и(или)ящик то есть как тут:
[msg= 7789614]. для этого создал 3 таблицы: Level1,Level2,Level3 как описано тут: http://www.opennet.ru/base/dev/hierarchy_sql.txt.html .Начинается так"Одним из вариантов хранения таких иерархий является поуровневое
хранение в различных таблицах"...
Код: 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.
CREATE TABLE "LEVEL1" 
(
  "ID"	INTEGER NOT NULL,
  "LEV"	INTEGER,
  "NAME"	VARCHAR(200),
 PRIMARY KEY ("ID")


CREATE TABLE "LEVEL2" 
(
  "ID"	INTEGER NOT NULL,
  "PARENT_ID"	INTEGER NOT NULL,
  "LEV"	INTEGER,
  "NAME"	VARCHAR(200) NOT NULL,
 PRIMARY KEY ("ID")
);
ALTER TABLE "LEVEL2" ADD FOREIGN KEY ("PARENT_ID") REFERENCES "LEVEL1" ("ID");

CREATE TABLE "LEVEL3" 
(
  "ID"	INTEGER NOT NULL,
  "PARENT_ID"	INTEGER NOT NULL,
  "PARENT_ID2"	INTEGER NOT NULL,
  "LEV"	INTEGER,
  "NAME"	VARCHAR(200),
 PRIMARY KEY ("ID")
);
ALTER TABLE "LEVEL3" ADD FOREIGN KEY ("PARENT_ID") REFERENCES "LEVEL1" ("ID");
ALTER TABLE "LEVEL3" ADD FOREIGN KEY ("PARENT_ID2") REFERENCES "LEVEL2" ("ID");



и запрос
Код: sql
1.
2.
3.
4.
5.
select id, 0 as parent_id, lev, name from level1
union
select id, parent_id,lev, name from level2
union
select id, parent_id,  lev, name from level3



но результат не тот:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
ID      PARENT_ID     LEVEL        NAME
1           0           1         BBB Ltd
1           1           2         Branch #1 of "AAA"
1           1           3         Departament  №1 of AAA
2           0           1         AAA Ltd
2           1           3         Departament  №2 of AAA
2           2           2         Branch #1 of "AAA"
3           2           2         Branch #2 of "BBB"  
3           2           3         Departament  №1 of BBB



как выдите Parent_ID собраны из всех 3 таблиц и с помощью их невозможно построить TreeView?!
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38866158
forgothepass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может это поможет? http://habrahabr.ru/post/193166/
...
Рейтинг: 0 / 0
как связывать предприятия,филиалы,склады,мол в иерархической структуре?
    #38867189
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
forgothepassМожет это поможет? http://habrahabr.ru/post/193166/
forgothepass , спасибо вам,вопрос уже решен:
Код: sql
1.
2.
3.
4.
5.
select 0*100000 +id, name, 0*0 as parent_id from t1
union
select 1*100000 +id, name, 0*100000+parent_id from t2
union
select 2*100000 +id, name, 1*100000+parent_id from t3



уникальность id и parent_id гарантирован и свободно можно уже построить дерево. А на счёт построения и связывания 2 древовидных структур("Организации-филиалы-подразделения и склады-стеллажи-ящики-...-...) пока не представляю как это можно реализовать!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как связывать предприятия,филиалы,склады,мол в иерархической структуре?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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