Re: Как бы это лучше спроектировать
- From
- Vladimir Pavlikov (2:5020/400)
- To
- Viacheslav Besedin (2:5054/37.63)
- Date
- 2005-02-01T04:38:16Z
- Area
- SU.DBMS
From: "Vladimir Pavlikov" <vvp@soil.msu.ru>
Hello, Viacheslav!
You wrote to All on Mon, 31 Jan 2005 17:12:04 +0300:
VB> Как бы правильней спроектировать структуру б.д. в такой во постановке
VB> задачи: лечебные учреждения приносят счета за пролеченных больных.
VB> Счета подразделяются по видам помощи: поликлиника, стационар,
VB> стационарзамещение, стоматология. У счетов есть как одинаковые для всех
VB> видов помощи реквизиты (дата счета, от какого лечебного учреждения
VB> поступил и т.д.) так и разные. Счет содержит записи о пролеченных
VB> больных (так же есть однотипные реквизиты, как то ФИО больного, дата
VB> рождения и т.д. и различающиеся для каждого видв помощи). Сейчас все
VB> сделано на 4-х парах таблиц: по паре (таблица заголовков счетов,
VB> таблица пролеченных, связанные один ко многим) по каждому виду помощи.
VB> Однако, в коде программы кругом приходится лепить что-то типа если
VB> поликлиника то то-то, если стоматология, то другое). Может можно
VB> как-либо поэффективней реализовать?
Тут два вопроса - база и код.
По базе. Таблицы :
Заголовки (одинаковая часть всех видов)
Виды (по таблице на вид помощи, связанные с Заголовками 1:1)
Пациенты (связаны с Заголовками M:1)
Общая работа по Заголовкам и Пациентам, плюс специфические, задейс-
твующие Виды. Использование серверов, имеющих ОО-расширения,
упростит работу со схемой, но сойдут и "обычные" (сервер в вопросе,
к сожалению, не указан).
Код. Тут напрашивается ОО-наследование. Класс Заголовков и подклассы
на каждый Вид, в которых виртуализовать одинаковые по смыслу, но раз-
ные по реализации работы с Видами.
With best regards, Vladimir Pavlikov. E-mail: vvp@soil.msu.ru
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5.3
* Origin: Talk.Mail.Ru (2:5020/400)
SEEN-BY: 50/203 520 450/159 186 451/30 452/25 100 454/9 455/15 461/33 43 74
SEEN-BY: 461/106 132 640 463/92 464/34 465/213 469/125 999 478/44 550/5068
SEEN-BY: 4614/20 4616/3 4625/8 9 4627/10 4635/4 1024 4651/25 4653/10 4657/50
SEEN-BY: 5000/76 5000 5001/50 5001 5002/5002 5003/34 5006/1 5007/1 5009/14
SEEN-BY: 5010/53 70 146 5011/13 5012/23 5015/4 28 5019/5 22 5020/52 104 115
SEEN-BY: 5020/118 128 133 150 175 201 362 371 400 545 639 642 715 755 758 780
SEEN-BY: 5020/794 892 894 902 921 968 982 1057 1100 1169 1200 1212 1234 1523
SEEN-BY: 5020/1604 1626 1642 1826 1835 1873 1922 1930 1992 2020 2200 2238 4400
SEEN-BY: 5020/4441 8383 12000 5022/5 128 5023/11 5025/750 5026/14 45 5029/32
SEEN-BY: 5030/69 115 195 217 382 436 473 556 611 920 966 1016 1900 5031/47
SEEN-BY: 5033/5 21 35 5034/8 5035/10 5036/1 13 5037/21 31 36 5041/4 5042/8 13
SEEN-BY: 5045/7 5049/157 5050/9 41 5051/15 35 5053/16 5054/1 8 9 10 28 35 37
SEEN-BY: 5054/45 50 63 5055/95 5056/16 5057/1 5058/24 77 5059/20 5060/88
SEEN-BY: 5061/15 5062/10 5063/41 51 5064/7 35 5066/18 5070/26 66 1222 5071/22
SEEN-BY: 5075/10 5079/49 5080/1003 5081/2 5082/6 5083/13 21 5084/32 5093/4 27
SEEN-BY: 5095/1 20 5100/113 6001/3 6009/1 6023/1 6033/2727 6045/7
PATH: 5020/400 4441 52 5054/1 37