Н, 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
идет о районной поликлинике с делением на участки, очевидно, что следует как минимум выделить в отдельные атрибуты номер квартиры и остальную часть адреса (улица, дом, номер корпуса), так как эта остальная часть адреса указывает на принадлежность к определенному участку, а также, возможно, создать сущности "участок" и "часть участка" (со сведениями об улице, доме и номере корпуса), связав их между собой и с сущностью "Пациент". С другой стороны, если речь идет о хозрасчетной поликлинике, где адрес может потребоваться главным образом для отправки по почте счетов за услуги, то вполне возможно, что в этом случае адрес может считаться атомарным атрибутом (если, конечно, в дальнейшем не потребуется какая-либо специфическая статистическая обработка данных, связанная с анализом распределения посещений по районам проживания пациентов). В любом случае, проектируя данные, следует ставить подобные вопросы перед заказчиками и будущими пользователями информационной системы еще на этапе проектирования данных, так как исправления в модели данных гораздо более удобно делать до разработки автоматизированных рабочих мест, нежели исправлять вместе с моделью готовую базу данных и приложения.
Итак, мы создали логическую модель данных. До этого момента можно было думать о предметной области, не вдаваясь в подробности физической реализации разрабатываемой модели. Теперь же следует подумать о физическом проектировании данных, а именно о выборе СУБД, создании таблиц, соответствующих созданным сущностям, типах полей для хранения атрибутов, а также о создании других объектов базы данных, предназначенных для облегчения поиска в таблицах, контроля ссылочной целостности данных, обработки данных, таких, как индексы, триггеры, хранимые процедуры.
Как уже отмечалось ранее, использование серверной СУБД значительно облегчает разработку информационных систем по сравнению с использованием плоских таблиц типа dBase или Paradox, так как в последнем случае реализация правил ссылочной целостности, а также механизмов авторизации пользователя и методов ограничения доступа к данным может быть реализована только в приложении (фактически разработчик вынужден "изобретать велосипед при наличии самолетов", создавая в своих приложениях код, уже реализованный в серверах баз данных). Поэтому для реализации данной информационной системы воспользуемся какой-либо серверной СУБД (например, Oracle Workgroup Server 7.2 for Windows NT). Для создания физической модели выберем соответствующую платформу в используемом CASE-средстве и опишем характеристики таблиц, соответствующих описанным в логической модели сущностям, и содержащихся в них полей, соответствующих их атрибутам (рис. 4.4).
66
О проектировании данных
*Si Logic Works ERwin/ERX - IMEDDEP5.EH1' :			<Main Subject Aiea> / Display!]  .				^^^•ТТпГх!
5$ File   ModeMat   Edit   Tasks	Client   ?erver   Qption			Window   Help			^JfllJSl
Dig: н| a! p| ?fg	Ф|<2.;	StEv	«li	3|  5Ш	©I S| Of*]fph	ysical Model ^J	
	[пГ	T|    В; /		*№	yiMzJI^w		
|Arial                                jj						=,	^ттч-'-'Щ
Docto№tes: ••; iSi*S ji* :	: --ViSlt":.::  -;-  :..      .-':,.:,					lM3Jg.T.| А.      Ц, =E-  :  i...    I] 1 U     »|i-:.:e-:   • HI	
Doct id: NUMBER(3,0)	f tag: NUMBER(8,			0)	•'.    Pat id: NUMBER(5,0)           |«        ||		
Prof id: NUMBER(2,0) part NUMBER(4,2) category: NUMBER(I.O)    ' name: CHARACTER(50) Photo: LONG RAW	,1 stat id: NUMBER(1,0) Jdiag Id: CHARACTER(4) Purp id: NUMBER(2,0) ;|: Pat id: NUMBER(5,0) J Doct id: NUMBER(3,0) } date_viz: DATE				patname: CHARACTER(50)            j A bdate: DATE                          ИИ """' address: CHARACTER(SO)   ДН.* ' sex: CHARACTER(I)            Hr« group: NUMBER(1,0)             |Ht		
-.-• .:;-;.:;s™nt.T''>:.:-A?i: • :',:тМл: '•:<> :'   '  --: :   Profiles                  .    ,	€^* ": " fi	r,,: / • -	F~	Т : 1— ч	.    • .' .      . '  ',   :.       '-         :.T'.4':;'"-.i1   . Purposes		^•''•S^mK* :
					Purp id: NUMBER(2,0)                f W :•   \		
;   Profjd: NUMBER(2,0)					' Purp name: CHAPJ	kCTER[100)   f:>'   :   I	
							
					... :"': ";    "'"''''. '•,'.'',               ^:^:    "    '• : :              "     : Diagnose-' ;;.:;::S           /• : ,     .-"-•:•		
.,,:,,,    ^,,,t<7< '..SSJffis'v—							
					diag_id: CHARACTER^)		
						CTER(50)                  ||	
:  sta	t Id: NUMBER(1		01				
sts	t_name: CHAR(18)				'.ч-:'.; -;:.:• -.'*'.    .. ;:.. . -- .-".:'		:  'A
.. ••.•:.      .;.-..5.J:-..'.I    '.:     :;',      !•:      '.       :-'      3j";M*V~ Si"'», "V'-ae:							
^Displayiy					^•^^vifv*****^ r • — Г'	бййШШ~" .'Щ	
	|Ш?^":^		у?:;::'				
Puc. 4.4. Физическая модель данных
Далее опишем свойства связей между таблицами, в частности реакцию сервера на попытки нарушения ссылочной целостности со стороны клиентского приложения (рис. 4.5). При желании можно также отредактировать тексты сообщений триггеров сервера, передаваемых клиентскому приложению.	"~~
После этого можно создать на сервере схему базы данных (либо сгенерировать DDL-сценарий создания базы данных, представляющий собой набор предложений на процедурном расширении языка SQL данной серверной СУБД, с целью его последующего выполнения). В результате выполнения DDL-сценария на сервере должны быть созданы пустые таблицы, а также иные .объекты базы данных, которые можно просмотреть с помощью утилиты Database Explorer (рис. 4.6).
67