Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Остаток товара / 25 сообщений из 64, страница 1 из 3
24.04.2012, 07:02
    #37767365
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Допустим, есть справочник товаров (tovar) с двумя полями
x(Serial) и name(text)
т.е. код товара и его наименование.
А также справочник складов (sklad) с аналогичными полями:
x(Serial) и name(text)
Третий справочник: справочник операций прихода/расхода (oper):
x(Serial), dat(data), xtovar(int), xsklad(int) и kol(int)
где поле kol - это кол-во прихода или расхода (штук) товара
dat - дата операции.
а xtovar и xsklad - ссылки на коды товара и склада.
Задача такова. При добавлении строки oper система должна автоматически в каком-нибудь третьем справочнике хранить актуальные остатки товара: справочник остатков (ost)
x(Serial), xtovar(int), xsklad(int) и kol(int).

Проблема, с которой я к Вам обращаюсь: Как я понимаю - это работа с триггерами. Алгоритм такой:
- Триггер должен сначала понять, есть ли вообще строка в справочнике ost (xtovar-xsklad) и если её нету - создать новую с нулевой суммой.
- Ну и в существующую или в созданную новую строку добавить/отнять необходимую сумму товара.

Вопросов несколько:
1) Если это делают несколько пользователей - не случится ли так что два пользователя одновременно не найдут пару (xtovar-xsklad) и создадут каждый свою такую пару. И получится дубляж строк. Как этого избежать.
2) Как понять триггеру, что нужной строки с уникальной парой (xtovar-xsklad) нет, чтобы он создал.
3) Может кто то какой то другой вариант решения проблемы.

Заранее спасибо.
...
Рейтинг: 0 / 0
24.04.2012, 10:02
    #37767551
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
vlads2,

1. PK(xtovar, xsklad) гарантирует уникальность
2. ничто не запрещает сделать проверочный select в триггере
...
Рейтинг: 0 / 0
24.04.2012, 10:09
    #37767562
Остаток товара
vlads2Вопросов несколько:
...
3) Может кто то какой то другой вариант решения проблемы.
...


ДА! Есть другие варианты решения проблемы
Предложенный Вами - не самый лучший.

vlads21) Если это делают несколько пользователей - не случится ли так что два пользователя одновременно не найдут пару (xtovar-
xsklad) и создадут каждый свою такую пару. И получится дубляж строк. Как этого избежать.

Для этого существуют ограничения. В данном случае ограничение уникальности на строку. (Если кто-то создаст новую строку с указанными парами полей, то возникнет нарушение ссылочной целостности.)

vlads22) Как понять триггеру, что нужной строки с уникальной парой (xtovar-xsklad) нет, чтобы он создал.

Так же как и любому другому запросу.

Настоятельно рекомендую Вам подтянуть теорию по базам данных.

Вы уверены, что система ДОЛЖНА ХРАНИТЬ остатки в каком-то третьем справочнике?
Может быть, их стоит рассчитывать при необходимости?
Тогда триггер не нужен, достаточно только view. А значит не возникает класс проблем, связанных с триггерами.

Кстати, с этой проблемой Вам нужно в топик "Проектирование БД"

Модератор: Тема перенесена из форума "PostgreSQL".
...
Рейтинг: 0 / 0
24.04.2012, 10:38
    #37767638
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
нужен соответствующий уровень блокировки транзакций
...
Рейтинг: 0 / 0
24.04.2012, 10:41
    #37767649
Остаток товара
Naf,
Интересно, как это приблизит автора топика к решению его проблемы?
...
Рейтинг: 0 / 0
24.04.2012, 11:39
    #37767796
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
vlads2,

Ответ найдешь тут , мне просто лень повторяться. Что непонятного - спросишь, но думаю там все разжевано.
...
Рейтинг: 0 / 0
24.04.2012, 11:40
    #37767799
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
\/\/\/\/\/\/\/\/\/\/\/\/как это приблизит автора топика к решению его проблемы?

Заставит одного пользователя подождать, пока другой работает с таблицей остатков.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2012, 12:20
    #37767905
Остаток товара
Dimitry Sibiryakov,

Имелось ввиду: повлияет ли это решение на текст триггеров или view. Какая поворотная точка произойдет после принятия данного решения.
(Да и вообще, отбросит ли пользователя с ошибкой сразу или чуть позже - в чем разница? Может и не отбросить вовсе -- но это уже расчет вероятностей)
...
Рейтинг: 0 / 0
24.04.2012, 12:48
    #37767996
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Нет, сделать уникальность КодТовара-КодСклада. И тогда второй попадёт в ошибку. Так как такие проблемы будут очень редки - проблема как таковая решится сама.
...
Рейтинг: 0 / 0
24.04.2012, 12:50
    #37768004
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
А по поводу
\/\/\/\/\/\/\/\/\/\/\/\/ ДА! Есть другие варианты решения проблемы
Предложенный Вами - не самый лучший.
Подскажите вариант получше?

Для Злой Бобр спасибо, почитаю ссылочку
...
Рейтинг: 0 / 0
24.04.2012, 12:54
    #37768019
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
vlads2Подскажите вариант получше?

Можно использовать только вставки, а время от времени их сворачивать. Тогда не будет ни
конфликтов, ни ожиданий, ни ошибок уникальности. Но работоспособность такой схемы зависит
от наличия в сервере TIL Snapshot. Без него работать не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2012, 12:57
    #37768026
Остаток товара
vlads2,

Я уже предложил: попробуйте не делать таблицу остатков и обслуживающие ее триггеры.

Сделайте примитивное view, которое выдает расчетное количество остатков на складе исходя из движения товаров.
Хотя Вы не рассказали всей задачи, поэтому однозначных ответов не будет.

А вообще все уже сделано до нас. И ссылка с обсуждением, указанная пользователем с ником Злой Бобр, не первая и не последняя.
...
Рейтинг: 0 / 0
24.04.2012, 15:10
    #37768345
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
\/\/\/\/\/\/\/\/\/\/\/\/,

Программа проста. Есть товар - приход/расход.
Кол-во товаров ~1000. Операций много.
Просто есть 1С7 сетевая бухгалтерия. Ввиду того, что бухгалтерии не хватает уже мощей, да и база превышает 2 гига, а денеХ начальство жопит экономит на новое ПО, да и желание изучать что-то новое, когда знаешь толично 1С7 и PostgreSQL, как то не хочется.
Вот и решили - Adob Connection нам в руки для обмена с PostgreSQL (если не найдём что нить получше) и данные хранить в оной СУБД. И то, только нечто регистров, как съедающие большую часть базы
...
Рейтинг: 0 / 0
24.04.2012, 15:12
    #37768354
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок.
...
Рейтинг: 0 / 0
24.04.2012, 15:42
    #37768451
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
vlads2около 300 тыс проводок

Э-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете
такие цифры "большим объёмом"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2012, 15:44
    #37768455
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Dimitry Sibiryakov,

Сервер тоже "экономный"
...
Рейтинг: 0 / 0
24.04.2012, 15:53
    #37768491
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
кстати, контроль отрицательных остатков требуется?
...
Рейтинг: 0 / 0
24.04.2012, 16:02
    #37768526
Остаток товара
vlads2Можно, конечно и view использовать, да только постоянно расситывать при большом объёме информации будет как минимум дороговато по времени обработки. Операций около 100 в день * данные с 2004 года = около 300 тыс проводок.

(красным выделил я)

Позвольте, а что такое "Инвентаризация", как часто она проводится и что дальше делается с результатами инвентаризации? Насколько подробно она описана в правилах бухучета?

Скорее всего, "данные с 2004 года" - это некоторое заблуждение.
Что мешает провести натурное испытание времени создания отображения на 300 тыс проводок?

Так как Вы упомянули 1С (прости-господи), то тут даже не в этот форум, а прямиком в профильный. Там Вам популярно объяснят, что 1С и экономия денег -- это взаимоисключающие параграфы. (Предлагаю вашему руководству пойти дальше: вовсе изъять компьютеры из бухгалтерии. Пусть считают руками на бумаге. ненуаче?)
...
Рейтинг: 0 / 0
24.04.2012, 16:04
    #37768536
Остаток товара
Dimitry SibiryakovЭ-э-э... Простите, в разделе, посвящённом PG, над вами не смеются за то, что называете
такие цифры "большим объёмом"?..


Подозреваю, что 100 операций в день не будут большими даже для форума 1с. То есть там тоже будут смеяться.
...
Рейтинг: 0 / 0
24.04.2012, 16:58
    #37768770
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Согласен что будут смеяться, но всё-таки, хотя 1С оставить, а за 1C SQL не платить
...
Рейтинг: 0 / 0
24.04.2012, 17:07
    #37768802
Остаток товара
vlads2...
когда знаешь толично 1С7 и PostgreSQL
...

У меня есть сильные сомнения.

Еще раз повторяю: опишите проблему на профильном форуме. Наверняка эта проблема не нова (в том числе и явление экономных извращенцев).

В одной конторе сходную проблему решили выделенным файл-сервером на Linux, который очень быстро жонглировал файлами. Путем натрных экспериментов (буквально с часами в руке) это работало быстрее SQL версии. Подробностей не знаю, не моя сфера.
...
Рейтинг: 0 / 0
24.04.2012, 17:13
    #37768825
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Знать бы ещё правильный сервер... :)

А так. Linux не дружит с 1C7.7 есть такие проблемы.
...
Рейтинг: 0 / 0
24.04.2012, 17:15
    #37768828
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Да, ещё замечу... 1С ДБФ версия, что стоит у нас физически более 2 гигабайт не тянет, вернее тянет, но возникает риск ошибок
...
Рейтинг: 0 / 0
24.04.2012, 19:24
    #37769208
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
vlads2,

Вы судя по всему незнаете ни постгреса ни темболее 1С. Поэтому предлагаю позвать даже не очень умного 1С-ника и все у вас будет работать. И даже на сервере начального уровня.
Можете как вариант купить 1С 8.х - там те же грабли только в профиль. Но лично я невижу никаких проблем что б у вас эта 1С-ка неработала. Хотя, вру - причина в никаком программисте (видимо ввиду нежелания руководства платить программисту).

ЗЫ. Сделаю за ящик хеннеси и мешок вяленой рыбы. И это вовсе не шутка или издевка.
...
Рейтинг: 0 / 0
24.04.2012, 19:34
    #37769230
vlads2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток товара
Злой Бобр,

"Спасибо" злой Бобр за предположение, на то ты и злой бобр :), однако 1С я знаю, особенно семёрку. Хотя что я оправдываюсь. Я сюда пришёл за идеями а не за чем то-либо иным.
Пока оных я даже не услышалпрочёл.
То что начальство ограничивает в финансах, да, это проблема. Однако в планах перевести программу вообще на яву, так что от 1С вообще отойду, но на это надо время. Так как проблема с переходом заострилась остро сейчас (появляется новый удалённый отдел, на который ключик есть только бухгалтерский сетевой) ,что послужило заданному мной вопросу (просьбы совета).

Мне бы просто идейки как это делают другие, а там я дальше допетрю.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Остаток товара / 25 сообщений из 64, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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