powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Складской учёт материалов - предметная область
18 сообщений из 118, страница 5 из 5
Складской учёт материалов - предметная область
    #36821154
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoxЧто за ссылка?Карточка склада ссылается на карточку контрагента.
У покупателей это может быть точка доставки. Не суть.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821342
Neox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте нормально ли я вибрал действия при удалении, правки в Journal
SQL
Код: plaintext
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.
-- -----------------------------------------------------
-- Table `mydb`.`Measure`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Measure` (
  `id_Measure` INT NOT NULL ,
  `full_name` VARCHAR( 45 ) NOT NULL ,
  `abbr_name` VARCHAR( 10 ) NOT NULL ,
  PRIMARY KEY (`id_Measure`) )
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`GroupProduct`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`GroupProduct` (
  `id_Group_Product` INT NOT NULL ,
  `name` VARCHAR( 45 ) NOT NULL ,
  PRIMARY KEY (`id_Group_Product`) )
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`SubGroup`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`SubGroup` (
  `id_SubGroup` INT NOT NULL ,
  `id_group` INT NULL ,
  `name` VARCHAR( 45 ) NOT NULL ,
  PRIMARY KEY (`id_SubGroup`, `id_group`) ,
  INDEX `fk_SubGroup_1` (`id_group` ASC) ,
  CONSTRAINT `fk_SubGroup_1`
    FOREIGN KEY (`id_group` )
    REFERENCES `mydb`.`GroupProduct` (`id_Group_Product` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Product`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Product` (
  `id_product` INT NOT NULL ,
  `name_product` VARCHAR( 100 ) NOT NULL ,
  `sybgroup_product` INT NULL ,
  `description` VARCHAR( 2000 ) NOT NULL ,
  `measure` INT NOT NULL ,
  PRIMARY KEY (`id_product`, `sybgroup_product`, `measure`) ,
  INDEX `fk_Product_1` (`measure` ASC) ,
  INDEX `fk_Product_2` (`sybgroup_product` ASC) ,
  CONSTRAINT `fk_Product_1`
    FOREIGN KEY (`measure` )
    REFERENCES `mydb`.`Measure` (`id_Measure` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Product_2`
    FOREIGN KEY (`sybgroup_product` )
    REFERENCES `mydb`.`SubGroup` (`id_SubGroup` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Document_head`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Document_head` (
  `id_Document_head` INT NOT NULL ,
  `total_count` DOUBLE NOT NULL ,
  `status` INT NOT NULL ,
  PRIMARY KEY (`id_Document_head`) )
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Warehouse`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Warehouse` (
  `id_Warehouse` INT NOT NULL ,
  `name_warehouse` VARCHAR( 45 ) NOT NULL ,
  `address_warehouse` VARCHAR( 450 ) NOT NULL ,
  `city_warehouse` VARCHAR( 100 ) NOT NULL ,
  `phone_warehouse` VARCHAR( 15 ) NOT NULL ,
  PRIMARY KEY (`id_Warehouse`) )
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Contragent`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Contragent` (
  `id_Contragent` INT NOT NULL ,
  `full_name` VARCHAR( 45 ) NOT NULL ,
  `name` VARCHAR( 45 ) NOT NULL ,
  `address` VARCHAR( 45 ) NOT NULL ,
  `city` VARCHAR( 45 ) NOT NULL ,
  `phone` VARCHAR( 45 ) NOT NULL ,
  PRIMARY KEY (`id_Contragent`) )
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Journal`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Journal` (
  `id_Journal` INT NOT NULL ,
  `id_part` INT NOT NULL ,
  `id_document` INT NOT NULL ,
  `date_document` DATETIME NOT NULL ,
  `type_document` INT NOT NULL ,
  `from_warehouse` INT NOT NULL ,
  `to_warehouse` INT NULL ,
  `from_contragent` INT NULL ,
  `to_contragent` INT NOT NULL ,
  `count` DOUBLE NOT NULL ,
  `summa` DOUBLE NOT NULL ,
  PRIMARY KEY (`from_warehouse`, `to_warehouse`, `from_contragent`, `to_contragent`, `id_Journal`, `id_document`) ,
  INDEX `fk_Journal_1` (`id_document` ASC) ,
  INDEX `fk_Journal_2` (`from_warehouse` ASC, `to_warehouse` ASC) ,
  INDEX `fk_Journal_3` (`from_contragent` ASC, `to_contragent` ASC) ,
  CONSTRAINT `fk_Journal_1`
    FOREIGN KEY (`id_document` )
    REFERENCES `mydb`.`Document_head` (`id_Document_head` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Journal_2`
    FOREIGN KEY (`from_warehouse` , `to_warehouse` )
    REFERENCES `mydb`.`Warehouse` (`id_Warehouse` , `id_Warehouse` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Journal_3`
    FOREIGN KEY (`from_contragent` , `to_contragent` )
    REFERENCES `mydb`.`Contragent` (`id_Contragent` , `id_Contragent` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`BindExpenseInvoice`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`BindExpenseInvoice` (
  `id_BindExpenseInvoice` INT NOT NULL ,
  `id_expense_part` INT NOT NULL ,
  `id_invoice_part` INT NOT NULL ,
  `count` DOUBLE NOT NULL ,
  PRIMARY KEY (`id_BindExpenseInvoice`, `id_expense_part`, `id_invoice_part`) ,
  INDEX `fk_BindExpenseInvoice_1` (`id_expense_part` ASC, `id_invoice_part` ASC) ,
  CONSTRAINT `fk_BindExpenseInvoice_1`
    FOREIGN KEY (`id_expense_part` , `id_invoice_part` )
    REFERENCES `mydb`.`Journal` (`id_part` , `id_part` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Price`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Price` (
  `id_Price` INT NOT NULL ,
  `date_price` DATETIME NOT NULL ,
  `product` INT NOT NULL ,
  `invoice_price_rozn` DOUBLE NOT NULL ,
  `expense_price_rozn` DOUBLE NOT NULL ,
  `invoice_optom` DOUBLE NOT NULL ,
  `expense_optom` DOUBLE NOT NULL ,
  PRIMARY KEY (`id_Price`, `product`) ,
  INDEX `fk_Price_1` (`product` ASC) ,
  CONSTRAINT `fk_Price_1`
    FOREIGN KEY (`product` )
    REFERENCES `mydb`.`Product` (`id_product` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = MyISAM;


-- -----------------------------------------------------
-- Table `mydb`.`Document`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Document` (
  `id_Document_head` INT NOT NULL ,
  `id` INT NOT NULL ,
  `id_product` INT NOT NULL ,
  `id_price` INT NOT NULL ,
  `count` DOUBLE NOT NULL ,
  PRIMARY KEY (`id_Document_head`, `id`, `id_price`, `id_product`) ,
  INDEX `fk_Document_1` (`id_Document_head` ASC) ,
  INDEX `fk_Document_2` (`id_product` ASC) ,
  INDEX `fk_Document_3` (`id_price` ASC) ,
  CONSTRAINT `fk_Document_1`
    FOREIGN KEY (`id_Document_head` )
    REFERENCES `mydb`.`Document_head` (`id_Document_head` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Document_2`
    FOREIGN KEY (`id_product` )
    REFERENCES `mydb`.`Product` (`id_product` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Document_3`
    FOREIGN KEY (`id_price` )
    REFERENCES `mydb`.`Price` (`id_Price` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = MyISAM;
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821381
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э не... сюда такие простыни постить не надо.
Удаление/правка журнала происходит при изменении статуса первичного документа.
Логика правки может быть очень навороченной.

зы: в схеме нет журнала привязок приход/расход.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821438
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neox
Обьясните, LSVВарехаус и Контрагент можно (нужно!) вести в одной таблице с древовидной ссылкой.
Что за ссылка?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Справочник
  |
  - - Контрагенты
       |
        - Контрагент 1
        - Контрагент 2
        .....
  |
  - - Склады
       |
        - Склад 1
        ...
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821481
Neox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV
зы: в схеме нет журнала привязок приход/расход.
А bindExpenseInvoice ?
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821502
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoxLSVзы: в схеме нет журнала привязок приход/расход.
А bindExpenseInvoice ?какое-то кривое у него название и не совсем понятны названия полей.
ссылаться надо на коды партий.
Expense - затраты. Лучше уж Outcome/Income
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821503
Neox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoxLSV
зы: в схеме нет журнала привязок приход/расход.
А bindExpenseInvoice ?
Я в bindExpenseInvoice
написал id_expense_part
Перепутал это не ид партии а ид записи в журнале - id_Journal.
Так-же с id_invoice_part
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821700
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наутилусNeox
Обьясните, LSVВарехаус и Контрагент можно (нужно!) вести в одной таблице с древовидной ссылкой.
Что за ссылка?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Справочник
  |
  - - Контрагенты
       |
        - Контрагент 1
        - Контрагент 2
        .....
  |
  - - Склады
       |
        - Склад 1
        ...

слишком разные по смыслу сущности. Лучше так не делайте, т.е. советы фильтруйте. Или тогда уж сделайте одну всего таблицу и не мучайтесь

Код: plaintext
1.
2.
3.
4.
5.
| Система
---Справочники
     | Контрагенты
     | Склады
     | Документы
 
Структура таблицы простейшая: ID,PARENTID,OBLECT.

p.s. не всерьез, конечно же.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36821717
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В интерфейсе такое решение вполне уместно. Но на уровне таблиц лучше делать разные справочники и суб-справочники.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822050
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слишком разные по смыслу сущности. Спорно. Разные, но не настолько.
Что плохого случится, если поместить в одну таблицу ?

Во многих известных системах Поставщики и Клиенты тоже разные таблицы. Тоже разные по смыслу ?
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822083
Neox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV,
Вообщем выходит Поставщики-Клиенты-Склады
можно в одну таблицу?
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822092
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmнаутилусNeox
Обьясните, LSVВарехаус и Контрагент можно (нужно!) вести в одной таблице с древовидной ссылкой.
Что за ссылка?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Справочник
  |
  - - Контрагенты
       |
        - Контрагент 1
        - Контрагент 2
        .....
  |
  - - Склады
       |
        - Склад 1
        ...

слишком разные по смыслу сущности. Лучше так не делайте, т.е. советы фильтруйте. Или тогда уж сделайте одну всего таблицу и не мучайтесь

Код: plaintext
1.
2.
3.
4.
5.
| Система
---Справочники
     | Контрагенты
     | Склады
     | Документы
 
Структура таблицы простейшая: ID,PARENTID,OBLECT.

p.s. не всерьез, конечно же.

у меня это разные сущности (и таблицы). я ответил просто человеку.
но что-то здравое в этой мысли уважаемого LSV есть. я ж грю, ещё не могу разложить картинку ясно у себя. и хочется "попробовать" и колется.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822099
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительВ интерфейсе такое решение вполне уместно. Но на уровне таблиц лучше делать разные справочники и суб-справочники.
во!... вот это. да. мне вот не даёт покоя мысль, что иногда можно не знать склада, но знать контрагента (скажем филиал своей же фирмы)...
и выбрать вместо склада контрагента. дальше правда, чуть усложняется. товар не будет "оприходован", пока дополнительно не укажут конкретный склад.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822116
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoxLSV,
Вообщем выходит Поставщики-Клиенты-Склады
можно в одну таблицу?
поставщики-клиенты - однозначно. (Вася Пупкин поставляет вам лес, а покупает пилы)
склады я бы всё таки вынес в отдельную сущность. по крайней мере я так делал всегда у себя.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822125
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наутилусПрограммист-ЛюбительВ интерфейсе такое решение вполне уместно. Но на уровне таблиц лучше делать разные справочники и суб-справочники.
во!... вот это. да. мне вот не даёт покоя мысль, что иногда можно не знать склада, но знать контрагента (скажем филиал своей же фирмы)...
и выбрать вместо склада контрагента. дальше правда, чуть усложняется. товар не будет "оприходован", пока дополнительно не укажут конкретный склад.Для случаев, когда склад необязателен, можно предусмотреть в логике ИД=0. Не вижу проблем.
Можно даже как-то пометить контрагента на предмет "указывать склад обязательно".

Плодить таблицы - тупик. В некот. областях нужны сотни мелких справочников. Лепить всем отдельные таблицы ? А к ним новые ГУИ и обвязки кода ?

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

речь же идет не о мелких справочниках, а об оних из основных, в обсуждаемой тематике. По атрибутному составу, совпадение 0.1%. GUI и привязки кода - это настолько ничтожная операция, что потратить 2 на нее минуты не представляется сложным. Для получения адекватной структуры БД, то.
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36822489
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVнаутилусПрограммист-ЛюбительВ интерфейсе такое решение вполне уместно. Но на уровне таблиц лучше делать разные справочники и суб-справочники.
во!... вот это. да. мне вот не даёт покоя мысль, что иногда можно не знать склада, но знать контрагента (скажем филиал своей же фирмы)...
и выбрать вместо склада контрагента. дальше правда, чуть усложняется. товар не будет "оприходован", пока дополнительно не укажут конкретный склад.Для случаев, когда склад необязателен, можно предусмотреть в логике ИД=0. Не вижу проблем.
Можно даже как-то пометить контрагента на предмет "указывать склад обязательно".

Плодить таблицы - тупик. В некот. областях нужны сотни мелких справочников. Лепить всем отдельные таблицы ? А к ним новые ГУИ и обвязки кода ?

Самое страшное для КИС - избыточное усложнение, дублирование похожего ф-ла.
предусмотрел. 0 и заполняю. только мне реально легче будет разобраться самому в структуре, если у меня будет таблица склады и таблица контрагенты.
какие плюсы обьединения? 10 таблиц вместо 20??
...
Рейтинг: 0 / 0
Складской учёт материалов - предметная область
    #36823539
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какие плюсы обьединения? 10 таблиц вместо 20??Это хороший плюс. Учитывая, что и кода будет в 1,5 раза меньше.

ЗЫ: Да по сабжу не суть важно. Оба варианта имеют право на жизнь.
Набор атрибутов разный ? Дык он может быть существенно разный даже у разных контрагентов. Так что не аргумент.
...
Рейтинг: 0 / 0
18 сообщений из 118, страница 5 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Складской учёт материалов - предметная область
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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