|
|
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите пожалуйста найти оптимальное решение. у меня есть рабочая программа(Сервер - 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. Код: plaintext 1. 2. 3. суммируя sum(rest) получал динамические остатки(=75шт)! Таким путем и партионный учет получился! (Конечно, rest менял в рамках одной транзакции.) Но проблема в том, что так я получал только текущие остатки , а старые остатки и обороты всё равно считал с помощью не так уж быстрых запросов. Запросы начинали особо тормозить при работе в сети. Интересно ваше мнение, есть у кого-нибудь другое решение для более быстрого получения остатков и оборотов? 4) И последний вопрос-Эта диаграмма не сопротивляеться ли с возможностью в будущем создать в базе таблицу бухгалтерских счетов и расширять простим бухгалтерским учетом? Или снова придется перепроектировать базу данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 18:03 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Davidkokoмне было трудно, а иногда невозможно сделать какие-то запросы. Это явное свидетельство, что БД была спроектирована несоответствующим образом. DavidkokoЗапросы начинали особо тормозить при работе в сети. Запросы выполняются на сервере, сеть им совершенно безразлична. Если ты видишь обратное, значит сделал что-то неправильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 18:33 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
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. Сейчас у меня вопроси совсем другого направления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 19:17 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, можете смотреть и здесь: http://stackoverflow.com/questions/25710347/2-sum-functions-from-2-different-tables-in-1-select-statement-whats-wrong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 19:24 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Davidkokoсмотрите здесь На что смотреть? На то, что я тебе там пальцем ткнул в ошибку проектирования БД, а ты теперь приходишь сюда и спрашиваешь "правильно ли я сделал, что эту ошибку исправил"?.. Да, милое дитя, правильно. А ещё я там тебе дал ссылку на статью о методах доступа к данным. Ты её изучил или хотя бы прочитал?.. А ещё я могу дать ссылку на себя, любимого: http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl= Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 19:35 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНа что смотреть? На то, что я тебе там пальцем ткнул в ошибку проектирования БД Я не понял, где вы нашли ошибку проектирования БД? Dimitry SibiryakovА ещё я там тебе дал ссылку на статью о методах доступа к данным. Извините но нету там ссылки о методах доступа к данным Dimitry SibiryakovА ещё я могу дать ссылку на себя, любимого: http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl= а за эту ссылку, конечно,спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 19:59 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
DavidkokoЯ не понял, где вы нашли ошибку проектирования БД? Здеся: 16547167 DavidkokoИзвините но нету там ссылки о методах доступа к данным Да ну? А это 16670647 что?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 20:17 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
DavidkokoИзвините но нету там ссылки о методах доступа к данным Dimitry SibiryakovДа ну? А это 16670647 что?.. Dimitry Sibiryakov, я не прочитал эту ссылку потому, что в quot-е написано des1roer и думал , что принадлежал ему. Спасибо! Сейчас прочту. А на счет моих других вопросов? В том теме вы мне писали: "проще будет объединить эти две таблицы в одну". вы подразумевали объединить master tables (накладные приходов-расходов или datails(записи) тоже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 20:55 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
DavidkokoВ том теме вы мне писали: "проще будет объединить эти две таблицы в одну". вы подразумевали объединить master tables (накладные приходов-расходов или datails(записи) тоже? Я подразумевал таблицы, которые ты пытался сопрячь противоестественным образом. Конкретные их названия не имеют значения. Ты всегда должен проектировать таблицы, держа в уме все наиболее частые запросы к ним. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 22:49 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, интересно ваше мнение на счет 1) того, что я загнал накладные товародвижения и услуг вместе ,в одну таблицу? 2) что вы думаете о моем методе посчитания текущих остатков [B]суммированием остатков каждой партии прихода?[/] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 00:12 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Davidkokoинтересно ваше мнение на счет Моё мнение таково, что структура БД должна соответствовать запросам, которые будут в ней выполняться, обеспечивая их простоту и быстродействие. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 11:31 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Если можете объясните,пожалуйста, в теме Dimitry Sibiryakov-а "Хранимые агрегаты без конфликтов и блокировок - рецепт" http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept, мы получаем текущие остатки, правильно? На этом форуме иногда спрашивают, что у них для быстрой выборки остатков/оборотов есть дополнительные таблицы(Rests), где в конце месяца, например, добавляют текущие остатки и потом с этих остатков считают новые остатки на каждый момент времени(+ приход/-расход),и что у них запроси для получения остатков/оборотов по возрастанию размеров БД постепенно замедляются, им предлагают использовать хранимые агрегаты. Может быть я не понял,но если я не сохраню остатки каждого товара на каждый момент времени , как получу из хранимых агрегатов остатки которые были в базе,например,2 месяца назад? Ведь хранимые агрегаты дают текущие остатки. или я что-то путаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 22:07 |
|
||
|
проектирование БД- таблицы прихода-расхода вместе или отдельно, остатки и обороти
|
|||
|---|---|---|---|
|
#18+
DavidkokoЗдравствуйте! Если можете объясните,пожалуйста, в теме Dimitry Sibiryakov-а "Хранимые агрегаты без конфликтов и блокировок - рецепт" http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept, мы получаем текущие остатки, правильно? На этом форуме иногда спрашивают, что у них для быстрой выборки остатков/оборотов есть дополнительные таблицы(Rests), где в конце месяца, например, добавляют текущие остатки и потом с этих остатков считают новые остатки на каждый момент времени(+ приход/-расход),и что у них запроси для получения остатков/оборотов по возрастанию размеров БД постепенно замедляются, им предлагают использовать хранимые агрегаты. Может быть я не понял,но если я не сохраню остатки каждого товара на каждый момент времени , как получу из хранимых агрегатов остатки которые были в базе,например,2 месяца назад? Ведь хранимые агрегаты дают текущие остатки. или я что-то путаю? назад можно посчитать.... от текущих... смотря какое кол-во данных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 02:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38818944&tid=1540726]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 502ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...