Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.27;
Скачать: CL | DM;

Вниз

Помогите спроектировать маленькую базу для учета медикаментов.   Найти похожие ветки 

 
Ulugbek   (2010-02-28 20:44) [0]

Привет всем!
Заранее извеняюсь за ошибки и грамматики. Я не совсем четко знаю русский язык и грамматику.
Помогите спроектировать маленькую базу для учета медикаментов.. СУБД выбрал Firebird 2.1.3..
Спроектировал так. есть таблица справочник медикаментов..

Таблица справочник медикаментов
tbl_ss_med
 ИД,
 Наименование,
 ЕдИзмер,
 Сумма,

Таблица приход медикаментов
tbl_comin_med
 ИД,
 ИД_Медикаментов
 количество
 дата срок годности
 дата поступление

Таблица расход медикаментов
tbl_out_med
 ИД,
 ИД_Медикаментов
 количество  
 дата расхода

Как правильно хранить остатки и как правильно показать пользователю. Дело в том что когда пользователь делает приход допустим на дату 01,03,2010 с одинаковым ИД_Медикаментов и с разной датой срок годности..

 Пример    
     id  id_med   name                      kolichestvo       date_exp            date_comin
     1  1           вакцина пб1               10                20.03.2010          01.03.2010
     2  1           вакцина пб1               20                15.03.2010          01.03.2010

Вопрос
При расходе я должен показать все поступление? или справочник медикаментов? Чтобы пользователю было видно когда делает расход. В складе имеется

id  id_med   name         kolichestvo  испол-но  ОСТ-к  date_exp     date_comin     срокгодзаконерез
1    1         вакцина пб1    10                0         0      20.03.2010   01.03.2010         19 дней
2    1         вакцина пб1    20                0        10     15.03.2010    01.03.2010         14 дней


Пользователь смотрит с начало который из них должен использовать конечно он выберит вторую запись
и ставить в таблицу Расход

id id_med name kolichestvo date_exp date_comin срок год закон через
1 1 вакцина пб1 10 15.03.2010 01.03.2010 14 дней


После этого в складе имеется

 id  id_med   name            kolichestvo  испол-но  ОСТ-к  date_exp   date_comin     срокгодзакон через
  1  1          вакцина пб1    10                0            0       20.03.2010     01.03.2010             19 дней
  2  1          вакцина пб1    20                10          10      15.03.2010      01.03.2010            14 дней

Все это как правильно реализовать помогите заранее благодарен.


 
Sergey13 ©   (2010-03-01 10:57) [1]

> [0] Ulugbek   (28.02.10 20:44)

> Таблица приход медикаментов
> Таблица расход медикаментов
Нужна 1 таблица - движение товара
Соответственно нужен справочник операций движения (приход, расход, списание и т.д.)
Нужна таблица документов на движение товара - типа приходно-расходные накладные.

Нужны наверное поставщики. Надо учитывать цены, сроки годности. Да дофига еще чего.

> Как правильно хранить остатки
Количественно можно хранить и в вправочнике материалов - актуальность поддерживать тригерами. Но по стоимости так наверное нормально не получится

> Спроектировал так

Пока ты еще ничего практически не спроектировал.


 
Mike Kouzmine   (2010-03-01 11:00) [2]

а учет партионный? или как?


 
Ulugbek   (2010-03-01 11:47) [3]

Спасибо за отклик
Накладные не надо. Это программа для клиники там только внутренний учет.
Тоест пришел медикамент-- из них использовали то есть расход но не надо накладной типа расход


 
Sergey13 ©   (2010-03-01 11:59) [4]

> [3] Ulugbek   (01.03.10 11:47)
> Накладные не надо. Это программа для клиники там только внутренний учет.

Их необязательно печатать и расписываться в них.
Это стандартное проектирование документооборота. Есть документ (шапочная его часть собственно) и его табличная часть.
Делать изначально левую поделку не советую - потом сам замаешься переделывать. Аппетит приходит во время еды - потом твоя клиника захочет иметь цены в разрезе поставщиков и т.д. и т.п.


 
Anatoly Podgoretsky ©   (2010-03-01 12:09) [5]

> Ulugbek  (01.03.2010 11:47:03)  [3]

Потом потребуется выписать накладную, вот и пригодится.


 
Ulugbek   (2010-03-01 12:51) [6]

> Как правильно хранить остатки
Количественно можно хранить и в вправочнике материалов - актуальность поддерживать тригерами. Но по стоимости так наверное нормально не получится

Подробности можно стоимость не надо учитивать просто остаток..
Остатки храниться в таблице справочник медикаментов? Добавить поля остаток
А как срок годом?


 
Sergey13 ©   (2010-03-01 13:28) [7]

> [6] Ulugbek   (01.03.10 12:51)
> А как срок годом?

В твоем случае видимо надо убедить заказчика, что срок годности, как и цена, не нужен. 8-)


 
Mike Kouzmine   (2010-03-01 13:35) [8]

В экселе самое то


 
Ulugbek   (2010-03-01 13:52) [9]

Сейчас учет ведется на Excel..
То есть в первом листе приход
втором листе расход
третем листе Заказы
в экселе вводить много ошибок не правильно написано медикаментов и дата срок и т д
По этому делаются это мини програма
Чтобы пользователю было удобно вести учет ...
раз запустил программу
в первом вкладке спр Медикаментов
в втором вкладке Приход
в втором вкладке Расход
в третем вкладке Заказы на медикаментов
Проблема с остатками млин срок годом


 
Sergey13 ©   (2010-03-01 13:57) [10]

> [9] Ulugbek   (01.03.10 13:52)
> Проблема с остатками млин срок годом

Проблема не с остатками, а в твоем желании с кондачка написать МИНИ прогу. Так чтоб сделать мало, а получить что хочется.
Учетные программы не смотря на кажущуюся простоту тоже требуют правильного подхода и знания методологии.
А ты пытаешься просто скопировать эксель. Но ты не круче майкрософта.


 
Ulugbek   (2010-03-01 14:23) [11]

Как вести в таком случае?


 
Sergey13 ©   (2010-03-01 14:33) [12]

> [11] Ulugbek   (01.03.10 14:23)
> Как вести в таком случае?

Желательно правильно. 8-)

Погугли на тему учет алгоритмы, партионный учет, остатки, проектирование складского учета и т.д. и т.п.
Кроме того про нормальные формы в БД, мастер-детальные отношения и связанные темы.
Нарисуй на бумажке струкруру.
При этом ежлательно думать и соображать на каждом этапе.
При появлении КОНКРЕТНЫХ вопросов по реализации - спрашивай.
Готовую программу тут тебе не напишут.
Кстати в сети можно найти и готовые бесплатные программы.


 
12 ©   (2010-03-01 16:56) [13]

ИМХО

ТМедикамент
id
название
денормальное поле текущий остаток

ТОперация
id
название

Тдокумент
id
idОперация

Тжурнал
id
idдокумент
idмедикамент

и можно
Тизмерений (id наименование (таблетки/ампулы/ тп ), тогда в товаре еще idотсюда
Тпоставщиков (тогда в документе еще id отсюда)

ну и всякие
Тпрайсы
Таттрибут документа

много, вообщем, еще сего можно


 
Ulugbek   (2010-03-02 08:22) [14]

Спасибо
Остатки буду хранить в ТМедикамент? И контролировать с помощью триггера?
Я правильно понял.. Тогда как остатками срок годом..
Пример вашего струкуры..

ТМедикамент
id       название       денормальное поле текущий остаток
1        вакцина1                                     0

ТОперация
id      название
-1      Приход
0        Расход    

Тдокумент
id  Операция     ДатаОперация
1   Приход         01,01,2010

Тжурнал
id   idдокумент   idмедикамент   срок год
1     1                  1                 10,07,2010
2     1                  1                 20,12,2010

Здесь при инсерте или апдейте обновлю таблицу
ТМедикамент поле остаток то есть если приход то плюсую если расход то минисую так ?

Теперь как с этим срок годом..
Тдокумент
id  Операция     ДатаОперация
2   Расход         10,06,2010

При расходе на текущий дату мне надо проверит и показать юзеру допустим на дату 10,06,2010 когда он делает выбор с таблицы ТМедикамент
Я должен показать
что медикамент  в складе   из них истечение срок ближе через 30 дн ч-з 190
     вакцина1          2                           1                                         1
Он должен выбрать который первый выходит на просрочку.
Вот здесь торможуу        
Допустим выбрал медикамент и сразу вышло окошка или список
все приходы с этим медикаментом в этом случае
Тжурнал
id   idдокумент   idмедикамент   срок год
1     2                  1                 10,07,2010
2     1                  1                 20,12,2010

Он выбрал первую
И вставил на
Тжурнал
id   idдокумент   idмедикамент   срок год
3     2                  1                 10,07,2010

Когда он еще раз выберить эту справочник
Получается так
что медикамент  в складе   из них истечение срок ближе через 30 дн ч-з 190
     вакцина1          1                           1                                         1

Но он первую использовал же как мне быть в таком случае?

 



 
Sergey13 ©   (2010-03-02 09:02) [15]

> [14] Ulugbek   (02.03.10 08:22)
> ТОперация
> id      название
> -1      Приход
> 0        Расход    

Логичнее сделать так
ТОперация
id   oper   название
1    1      Приход
2    -1     Расход    
3    -1     Списание


операций может быть больше чем две, а умножая количество на OPER легко подсчитывать суммы.

Если нужно все таки учитывать срок годности, то ты по любому должен вести партионный учет. Т.е. списывать не просто с общего количества, а с конкретной партии прихода. Это прилично усложняет программу. В расходе могут фигурировать несколько записей с одинаковым товаром, но с разных партий.
Списание устаревших товаров можно осуществлять джобом. Не знаю появились ли они в ФБ2, но несложно и маленькую программку написать и запускать ее по расписанию.


 
12 ©   (2010-03-02 10:21) [16]


> Ulugbek   (02.03.10 08:22) [14]

тут предлагается подумать.

у документа может быть поле id reffer doc
так у меня привязываются возвраты к поставкам. У тебя могут быть продажи по поставкам. Стоит некая процедура/триггер, которая может анализировать факт продажи и количества продажи от этой поставки.
И не давать продать больше чем поставили
И разрешать продавать от этой поставки, если всего продаж было меньше. т.е., если от этой поставки еще не все потрачено


 
Ulugbek   (2010-03-02 13:03) [17]

Есть идея но правильно ли это незнаю.. Добавлю полю state если 1 то использован если 2 просрочен
Тжурнал
id
idдокумент
idмедикамент
state

Когда юзер делает расход
Тдокумент
id  Операция     ДатаОперация
2   Расход         10,06,2010

Показываю медикаменты
что медикамент  в складе   из них истечение срок ближе через 30 дн ч-з 190
    вакцина1          2                           1                                               1

Он выбирает
   вакцина1 и выходит список
id   idдокумент   idмедикамент   срок год
1     2                  1                 10,07,2010
2     1                  1                 20,12,2010

Выбрал первую и вставил
в расход
после инсерта обновлю эту строку поля state значением 1

когда еще раз хочет расход сделать то теперь показываю
что медикамент  в складе   из них истечение срок ближе через 30 дн ч-з 190
    вакцина1          1                           0                                               1

id   idдокумент   idмедикамент   срок год
2     1                  1                 20,12,2010


 
Sergey13 ©   (2010-03-02 15:15) [18]

> [17] Ulugbek   (02.03.10 13:03)
> Добавлю полю state если 1 то использован если 2 просрочен

Это типа ты просроченный выдал? 8-)

Какой то странный у тебя Тжурнал. Ты количественно как будешь учитывать? Про количество я что-то нигде не найду.


 
Ulugbek   (2010-03-02 16:35) [19]

Количество храниться то есть остаток
TМедикаментов


 
12 ©   (2010-03-02 16:49) [20]

если честно, не понимаю немного :)
вообщем, тут самая интересная работа сейчас, имхо
потом просто кодинг
оставь самое вкусное себе :)


 
Sergey13 ©   (2010-03-02 16:52) [21]

> [19] Ulugbek   (02.03.10 16:35)

Хранится 100500. Сколько из них просрочено? Сколько поставлено в прошлом году? Сколько списала вчера тетя Маша?
Количество должно быть в каждой операции движения.
А в справочнике оно только СПРАВОЧНОЕ, что бы не считать каждый раз. В принципе можно его и не хранить. Теоретически это даже правильнее, т.к. избыточность появляется.


 
Ulugbek   (2010-03-02 17:21) [22]

Да правильно говоришь
Еще полю должен добавит
Тжурнал
Количество

Отчеты наверно селектну на эту таблицу


 
sniknik ©   (2010-03-02 21:42) [23]

база маленькая, работа большая...

а учет у тебя будет какой? в закупочной, розничной, средневзвешенной? (это вроде еще не упоминали)


 
Sergey13 ©   (2010-03-03 10:05) [24]

> [23] sniknik ©   (02.03.10 21:42)
> это вроде еще не упоминали

Просто боялись всякими FIFO/LIFO пугать. Тут до этого еще далеко. 8-)


 
Ulugbek   (2010-03-03 11:56) [25]

Хмм
Эти медикаменты дают государство цены тут не важен сколько стоит
Важен сколько из них использовано и сколько из них просрочен


 
Sergey13 ©   (2010-03-03 12:17) [26]

> [25] Ulugbek   (03.03.10 11:56)
> Эти медикаменты дают государство цены тут не важен сколько стоит

Глубокая мысль! 8-)



Страницы: 1 вся ветка

Текущий архив: 2011.11.27;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.007 c
15-1311963926
Petr V. Abramov
2011-07-29 22:25
2011.11.27
Oracle 11 R1


1-1274617008
ogure4eg
2010-05-23 16:16
2011.11.27
Не могу сгенерировать .hpp из .pas


1-1274184511
Леонид Федьков
2010-05-18 16:08
2011.11.27
Работа с собственными службами


15-1312263927
oldman
2011-08-02 09:45
2011.11.27
С Днем ВДВ!!!


2-1312129640
From4pda
2011-07-31 20:27
2011.11.27
выбор диска для копирования