powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
13 сообщений из 13, страница 1 из 1
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813593
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! Помогите пожалуйста найти оптимальное решение.
у меня есть рабочая программа(Сервер - Intebase 2009, Среда-Delphi), которая работает уже 7 лет. Сначала база была проектирована для аптеки и сейчас около 30 аптек и несколько магазинов работают на этом программе. Но постепенно возникло потребление:
1) усовершенстовать Бизнес-процесс-Обобшать программу, сделать программой для учета не только лекарств,но и других тмц и, кроме этого, оказания услуг(например, для салонов красоти).
2) Переходить на Firebird 2.5, посколько из за отсутствия в Intebase 2009 derived tables и CTE мне было трудно, а иногда невозможно сделать какие-то запросы.

Новая база содержит около 60 таблиц, но основная часть, на который хочу обратить ваше внимание ,это таблицы накладных(master) и несколько datails, в которых по отдельности содержится записи приходов, расходов, списания, перемешения и услуг.
приведу эту часть диаграммы:
Диаграмма


Главные вопросы и сложности у меня такие:
1) Насколько оправдано то, что я собирал вместе накладные("шапки") приходов,расходов, перемещении и списания (на диаграмме не видно) в одну таблицу? Какие от этого могут "отрицательные последствия" в будущем? У всех этих накладных будут свой, специфические поля, а эта значит избыточость данных и денормализация! Тем более, что постепенно появится "типичные" документы и других типов, например "обслуживание клиента своим материалом" или ""обслуживание материалом предприятия", или "документы инвентаризации", "кассовые операции прихода", "кассовые операции расхода " и т.д.? И у всех будут свои, дополнительные свойства и постепенно избыточность увеличится!
По вашему, даст собрание в одном таблице экономию времени во время запросов об остатках и оборотов? или есть еще другая причина за. Прощу ответьте аргументами.
2) По той же причине насколько оправдано то, что я загнал накладные товародвижения и услуг вместе ,в одну таблицу? В услуге же будут свой, специфические поля, которые останутся пустыми для тмц? Не лучше ли ТМЦ и услуги(master tables) в отдельных таблицах?
3) Как лучше посчитать остатки?
а) создать таблицу проводок(операции), как написано здесь: http://www.sql.ru/forum/998443-6/osnovy-proektirovaniya-skladskoy-bd-v-2. Но при несколькиы складах отдельно для них хранить остатки конца каждого месяца значит, что около при 5000 наименовании в этом таблице через год будет 5000*12*количество складов записей! А через 5-10лет?!!!
б) В старом базе я решил эту проблему так: при каждом прыходе, в записях прыхода кроме qty сохранял и rest(динамические остатки):
Код: plaintext
1.
2.
3.
    rec_in_id  goods_id    income_qty    rest
      1             1           20       20
      2             1           50       50   
      3             1           30       30 
а при продаже 25 шт в записях прихода программно менял остатки(при методе FIFO):
Код: plaintext
1.
2.
3.
    rec_in_id  goods_id    income_qty    rest
      1             1           20        0
      2             1           50        45   
      3             1           30        30  

суммируя sum(rest) получал динамические остатки(=75шт)! Таким путем и партионный учет получился! (Конечно, rest менял в рамках одной транзакции.)
Но проблема в том, что так я получал только текущие остатки , а старые остатки и обороты всё равно считал с помощью не так уж быстрых запросов. Запросы начинали особо тормозить при работе в сети. Интересно ваше мнение, есть у кого-нибудь другое решение для более быстрого получения остатков и оборотов?

4) И последний вопрос-Эта диаграмма не сопротивляеться ли с возможностью в будущем создать в базе таблицу бухгалтерских счетов и расширять простим бухгалтерским учетом? Или снова придется перепроектировать базу данных?
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813626
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Davidkokoмне было трудно, а иногда невозможно сделать какие-то запросы.
Это явное свидетельство, что БД была спроектирована несоответствующим образом.

DavidkokoЗапросы начинали особо тормозить при работе в сети.
Запросы выполняются на сервере, сеть им совершенно безразлична. Если ты видишь обратное,
значит сделал что-то неправильно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813664
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Davidkokoмне было трудно, а иногда невозможно сделать какие-то запросы.
Dimitry SibiryakovЭто явное свидетельство, что БД была спроектирована несоответствующим образом.

Dimitry Sibiryakov. смотрите здесь: http://www.sql.ru/forum/1114585/vyborka-dannyh-iz-2-svyazannyh-tablic-s-neskolkimi-sum-funkciyami?hl=
1. Как видите,на счет того, что причиной может бить derived tables я от вас узнал 2. там видно запрос и что Interbase 2009 возвращает. а тот же запрос в Firebird 2.5.3 отбирает правильные записи из БД. 3. На других форумах тоже никто не смог помочь и посоветовали Firebird. Но главное не это, я окончательно перепроектирую базу на Firebid. Сейчас у меня вопроси совсем другого направления.
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813669
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813678
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Davidkokoсмотрите здесь
На что смотреть? На то, что я тебе там пальцем ткнул в ошибку проектирования БД, а ты
теперь приходишь сюда и спрашиваешь "правильно ли я сделал, что эту ошибку исправил"?..
Да, милое дитя, правильно.

А ещё я там тебе дал ссылку на статью о методах доступа к данным. Ты её изучил или хотя бы
прочитал?..

А ещё я могу дать ссылку на себя, любимого:
http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl=

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813691
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНа что смотреть? На то, что я тебе там пальцем ткнул в ошибку проектирования БД
Я не понял, где вы нашли ошибку проектирования БД?

Dimitry SibiryakovА ещё я там тебе дал ссылку на статью о методах доступа к данным.

Извините но нету там ссылки о методах доступа к данным

Dimitry SibiryakovА ещё я могу дать ссылку на себя, любимого:
http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl=

а за эту ссылку, конечно,спасибо!
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813705
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DavidkokoЯ не понял, где вы нашли ошибку проектирования БД?
Здеся: 16547167

DavidkokoИзвините но нету там ссылки о методах доступа к данным
Да ну? А это 16670647 что?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813719
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DavidkokoИзвините но нету там ссылки о методах доступа к данным
Dimitry SibiryakovДа ну? А это 16670647 что?..
Dimitry Sibiryakov, я не прочитал эту ссылку потому, что в quot-е написано des1roer и думал , что принадлежал ему. Спасибо! Сейчас прочту. А на счет моих других вопросов?
В том теме вы мне писали: "проще будет объединить эти две таблицы в одну". вы подразумевали объединить master tables (накладные приходов-расходов или datails(записи) тоже ?
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813769
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DavidkokoВ том теме вы мне писали: "проще будет объединить эти две таблицы в одну".
вы подразумевали объединить master tables (накладные приходов-расходов или datails(записи)
тоже?
Я подразумевал таблицы, которые ты пытался сопрячь противоестественным образом. Конкретные
их названия не имеют значения. Ты всегда должен проектировать таблицы, держа в уме все
наиболее частые запросы к ним.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813811
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, интересно ваше мнение на счет
1) того, что я загнал накладные товародвижения и услуг вместе ,в одну таблицу?
2) что вы думаете о моем методе посчитания текущих остатков [B]суммированием остатков каждой партии прихода?[/]
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38813947
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Davidkokoинтересно ваше мнение на счет
Моё мнение таково, что структура БД должна соответствовать запросам, которые будут в ней
выполняться, обеспечивая их простоту и быстродействие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38817837
Davidkoko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! Если можете объясните,пожалуйста, в теме Dimitry Sibiryakov-а "Хранимые агрегаты без конфликтов и блокировок - рецепт" http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept, мы получаем текущие остатки, правильно?
На этом форуме иногда спрашивают, что у них для быстрой выборки остатков/оборотов есть дополнительные таблицы(Rests), где в конце месяца, например, добавляют текущие остатки и потом с этих остатков считают новые остатки на каждый момент времени(+ приход/-расход),и что у них запроси для получения остатков/оборотов по возрастанию размеров БД постепенно замедляются, им предлагают использовать хранимые агрегаты. Может быть я не понял,но если я не сохраню остатки каждого товара на каждый момент времени , как получу из хранимых агрегатов остатки которые были в базе,например,2 месяца назад? Ведь хранимые агрегаты дают текущие остатки. или я что-то путаю?
...
Рейтинг: 0 / 0
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
    #38818944
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DavidkokoЗдравствуйте! Если можете объясните,пожалуйста, в теме Dimitry Sibiryakov-а "Хранимые агрегаты без конфликтов и блокировок - рецепт" http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept, мы получаем текущие остатки, правильно?
На этом форуме иногда спрашивают, что у них для быстрой выборки остатков/оборотов есть дополнительные таблицы(Rests), где в конце месяца, например, добавляют текущие остатки и потом с этих остатков считают новые остатки на каждый момент времени(+ приход/-расход),и что у них запроси для получения остатков/оборотов по возрастанию размеров БД постепенно замедляются, им предлагают использовать хранимые агрегаты. Может быть я не понял,но если я не сохраню остатки каждого товара на каждый момент времени , как получу из хранимых агрегатов остатки которые были в базе,например,2 месяца назад? Ведь хранимые агрегаты дают текущие остатки. или я что-то путаю?

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


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