Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Роддом.doc
Скачиваний:
115
Добавлен:
01.05.2014
Размер:
878.08 Кб
Скачать

2. Проектирование информационной системы

2.1. Построение инфологической модели

В соответствии с описанием предметной области можно выделить такие информационные объекты как Роженица, Пребывание в стационаре (или коротко — Стационар), Роды, Ребенок (новорожденный), Врач, Палата. Отобразим эти объекты на диаграмме «сущность-связь», выявим и изобразим на диаграмме связи между объектами и атрибуты объектов. Полученная диаграмма показана на рис. 1. Идентифицирующие (ключевые) атрибуты информационных объектов на рис. 1 обозначены подчеркиванием.

Мощности связей между сущностями обозначены на концах соответствующих линий: цифра «1» означает, что в данном информационном объекте связанному объекту отвечает ровно одна запись, буква «М» — несколько записей, а запись «0, 1» указывает минимальную и максимальную мощность связи, то есть в информационном объекте может не оказаться ни одной записи, соответствующей связанному объекту, либо найдется ровно одна такая запись.

Связи между объектами Роженица и Стационар, Врач и Стационар, Роды и Ребенок имеют, таким образом, мощности «один ко многим». Такие связи могут быть непосредственно реализованы в реляционной модели данных.

Связь между объектами Стационар и Палата относится к типу «многие ко многим»: в каждой палате может (в том числе одновременно) находиться несколько рожениц1, и каждая роженица в течение своего пребывания в стационаре может быть переведена в несколько разных палат. Более того, как показано на рис. 1, эта связь имеет собственные атрибуты — дату и время помещения роженицы в палату и дату выписки или перевода роженицы из палаты. Это позволяет рассматривать данную связь как отдельный (составной) информационный объект — Размещение.

Рис. 1. ER-диаграмма предметной области

Связь между объектами Стационар и Роды относится к типу «один к одному». Если бы эта связь имела обязательный класс принадлежности, то объекты Стационар и Роды нужно было бы «слить», «объединить». Однако, поскольку не все пребывания в стационаре заканчиваются родами, таким элементам объекта Стационар не будет соответствовать ни одного экземпляра объекта Роды. Таким образом, класс принадлежности связи между объектами Стационар и Роды — необязательный.

2.2. Описание информационных объектов

Преобразуем построенную концептуальную модель данных в реляционную схему. Вначале преобразуем простые объекты, участвующие в связях на стороне «один».

Для объекта Врач введем кодирование с целью сократить размеры ключей в реляционной модели (а это, в свою очередь, позволит ускорить обработку данных). Получим следующие схемы (ключевые поля обозначены подчеркиванием):

ВРАЧ (КодВрача, ФИО)

РОЖЕНИЦА (, ФИО, ДР, Адрес, Телефон, Особ)

Как говорилось выше, связь типа «многие ко многим» реализуется с помощью дополнительного, составного объекта Размещение, который связан с сущностями Стационар и Палата связями типа «один ко многим», причем в обеих связях этот объект участвует на стороне «много» (рис. 2). В результате мы можем приступить к преобразованию в реляционные таблицы объекта Палата, так как он с учетом сказанного участвует только в связи с составным объектом Размещение на стороне «один».

Рис. 2. Фрагмент концептуальной модели, отражающий реализацию связи «многие ко многим» с помощью двух связей «один ко многим»

Естественным первичным ключом для объекта Палата является номер палаты, что и отмечено на рис. 1:

ПАЛАТА (, Мест)

Объект Стационар, с учетом представления связи «многие ко многим» двумя связями «один ко многим», участвует на стороне «много» в двух связях — с объектами Роженица и Врач. В соответствии с методикой преобразования концептуальной модели в реляционную [1–3] в состав объекта Стационар необходимо включить первичные ключи объектов Роженица и Врач, которые будут играть в нем роль внешних ключей (ключей связи). Кроме упомянутых двух связей, объект Стационар участвует также в связи типа «один ко многим» с объектом Размещение, но на стороне «один», и в связи типа «один к одному» с объектом Роды. Последняя связь имеет необязательный класс принадлежности, поэтому ключ связи включается в состав того объекта, со стороны которого связь является необязательной, то есть в состав объекта Роды.

В результате получим следующую схему объекта Стационар:

СТАЦИОНАР (№карт, Начало, Конец, Описание, КодВрача)

Внешние ключи: №карт ссылается на РОЖЕНИЦА, КодВрача ссылается на ВРАЧ

Обратим внимание на первичный ключ полученного объекта: им является совокупность полей №карт и Начало, что отражает тот факт, что одна и та же роженица не может быть помещена в стационар дважды в течение одного дня. Однако такой первичный ключ достаточно громоздкий — он включает два поля, одно из которых — типа «дата». Предыдущий анализ показал, что первичный ключ объекта Стационар будет включен в состав двух других объектов — Роды и Размещение. С учетом этого желательно было бы иметь наиболее компактный ключ таблицы Стационар. Для достижения этой цели введем специальное поле Код, которое будет играть роль первичного ключа (это поле будет заполняться последовательными целыми числами, не имеющими смысла вне базы данных). С такой поправкой получим следующую схему объекта Стационар:

СТАЦИОНАР (Код, №карт, Начало, Конец, Описание, КодВрача)

Внешние ключи: №карт ссылается на РОЖЕНИЦА, КодВрача ссылается на ВРАЧ

Таблица, представляющая составной объект Размещение, должна содержать первичные ключи объектов Стационар и Палата, причем эти первичные ключи будут входить и в состав первичного ключа объекта Размещение:

РАЗМЕЩЕНИЕ (Код, №пал, Помещена, Переведена)

Внешние ключи: Код ссылается на СТАЦИОНАР, №пал ссылается на ПАЛАТА

Помимо внешних ключей, в состав первичного ключа объекта Размещение включено также поле Помещена, так как в принципе роженица может в течение пребывания в стационаре повторно помещаться в одну и ту же палату, только, разумеется, в разное время.

Как сказано выше, в состав объекта Роды следует включить первичный ключ объекта Стационар, так как в направлении от Родов к Стационару связь является функциональной. Причем этот внешний ключ будет играть в таблице Роды и роль первичного ключа. В результате получим следующую схему объекта Роды:

РОДЫ (Код, Начало, Конец, Описание)

Внешний ключ Код ссылается на СТАЦИОНАР

Нам осталось рассмотреть последний объект — Ребенок. Он участвует в связи типа «один ко многим» на стороне «много», следовательно, в его состав следует включить первичный ключ объекта Роды:

РЕБЕНОК (Бирка, Код, Пол, ДатаРожд, Имя, Рост, Вес)

Внешний ключ Код ссылается на СТАЦИОНАР

Итак, мы получили реляционную схему данных рассматриваемой предметной области. Использованный метод преобразования концептуальной модели в реляционную гарантирует, что все полученные реляционные таблицы соответствуют третьей нормальной форме.

Соседние файлы в предмете Базы данных