Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.11.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.004 c
15-1312526088
Kilkennycat
2011-08-05 10:34
2011.11.27
ФАС против смсной дискриминации


2-1311648304
NBAH1990
2011-07-26 06:45
2011.11.27
Подключение к онлайн базе данных


15-1311897097
brother
2011-07-29 03:51
2011.11.27
С днем системного администратора!


2-1312053793
Pepe
2011-07-30 23:23
2011.11.27
Hmac MD5 Delphi


15-1312199219
Григорьев Антон
2011-08-01 15:46
2011.11.27
Ищу программиста в Москве





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский