Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy_proekt_po_TRUBD_1.docx
Скачиваний:
21
Добавлен:
11.04.2015
Размер:
906 Кб
Скачать
  1. Разработка логической модели

Логическая модель была создана CASE-средством проектирования-Erwin. Для разработки логической модели была использована программа AllFusion ERwin Data Modeler (ERwin).

ERwin - CASE-средство проектирования баз данных от фирмы Computer Associates. ERwin сочетает графический интерфейс Windows, инструменты для построения ER-диаграмм, редакторы для создания логического и физического описания модели данных и поддержку реляционных СУБД.

Он поддерживает различные серверы баз данных и настольные СУБД, а также может обращаться к базе данных через интерфейс ODBC. Так, в текущей версии ERwin встроена поддержка 23 СУБД, среди которых: Oracle; Microsoft SQL Server и др.

Процесс моделирования в ERwin базируется на методологии проектирования реляционных баз данных IDEF1X. Данная методология была разработана для ВВС США и теперь широко используется в правительственных учреждениях и частных компаниях, как в самих США, так и далеко за их пределами.

ERwin имеет два уровня представления модели - логический и физический. В данном проекте разработана лишь логическая модель. Логический уровень - это абстрактный взгляд на данные, на нем данные представляются так, как выглядят в реальном мире, и могут называться так, как они называются в реальном мире.

Объекты модели, представляемые на логическом уровне, называются сущностями и атрибутами. Логическая модель данных может быть построена на основе другой логической модели, например на основе, Microsoft SQL Server Management Studio.

Рис.4. Логическая схема (ERwin)

  1. Серверная часть

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

Таблица «Прием пациента» содержит информацию обо всех приемах. Она является дочерней таблицей.

Имя

Тип

Описание

NomerZapisi

int

Ключевое поле таблицы

KodPacienta

int

Ссылка на таблицу «Пациент». Внешний ключ.

KodPreparata

int

Ссылка на таблицу «Пациент». Внешний ключ.

KodSotrudnika

int

Ссылка на таблицу «Пациент». Внешний ключ.

DataPriema

date

Дата

Таблица «Пациент» содержит информацию обо всех зарегистрированных в поликлинике людей. Она является дочерней таблицей.

Имя

Тип

Описание

KodPacienta

int

Ключевое поле таблицы

FIO

ntext

ФИО пациента

DataRozdeniya

date

Дата рождения

Propiska

ntext

Прописка

KodYchastka

int

Дата

KodGruppa

int

Ссылка на таблицу «Участки». Внешний ключ.

KodFamily

int

Ссылка на таблицу «Семья». Внешний ключ.

MectoRaboti

ntext

Место работы

NomerStrahovogoPolisa

int

Номер страхового полиса

KodP

int

Ссылка на таблицу «Группа». Внешний ключ.

Year1

int

Год

Таблица «Препарат» содержит информацию о препаратах. Она является дочерней таблицей.

Имя

Тип

Описание

KodPreparata

int

Ключевое поле таблицы

Nazvanie

ntext

Название препарата

Dozirovka

int

Дозировка

KodFormi

int

Ссылка на таблицу «Форма». Внешний ключ.

Protivopokazaniya

ntext

Противопоказания данного препарата

VremyaPrimeneniya

ntext

Время применения

SrokGodnosti

date

Срок годности

Таблица «Сотрудники» содержит информацию о сотрудниках. Она является родительской таблицей.

Имя

Тип

Описание

KodSotrudnika

Int

Ключевое поле таблицы

FIO

Ntext

ФИО сотрудника

KodDolzhnosti

Int

Ссылка на таблицу «Должности». Внешний ключ.

Таблица «Форма выпуска» содержит информацию о формах выпуска препаратов. Она является родительской таблицей.

Имя

Тип

Описание

KodFormi

Int

Ключевое поле таблицы

FormaVipyska

Ntext

Форма выпуска препарата

Таблица «Состав семьи» содержит список статусов семейного положения. Она является родительской таблицей.

Имя

Тип

Описание

KodFamily

Int

Ключевое поле таблицы

SostavFamily

Ntext

Семейный статус

Таблица «Группа» содержит список групп инвалидности. Она является родительской таблицей.

Имя

Тип

Описание

KodGruppa

Int

Ключевое поле таблицы

GruppaInvalidnosti

int

Группа инвалидности

Таблица «Участки» заключает в себе список участков. Она является родительской таблицей.

Имя

Тип

Описание

KodYchastka

Int

Ключевое поле таблицы

Ychastki

int

Участок

Таблица «Тип пациента» заключает в себе список участков. Она является родительской таблицей.

Имя

Тип

Описание

KodP

Int

Ключевое поле таблицы

TipPacienta

ntext

Категория пациента

Таблица «Тип пациента» заключает в себе список участков. Она является родительской таблицей.

Имя

Тип

Описание

KodDolznosti

Int

Ключевое поле таблицы

Dolznost

ntext

Должность

Триггер - это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики.

Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.

Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой находится триггер, и т. п.)

Кроме того, триггеры могут быть привязаны не к таблице, а к представлению (VIEW). В этом случае с их помощью реализуется механизм «обновляемого представления». В этом случае ключевые слова BEFORE и AFTER влияют лишь на последовательность вызова триггеров, так как собственно событие (удаление, вставка или обновление) не происходит.

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

Пример кода триггера:

USE [Курсач ИТ]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[DelPacient]

ON [dbo].[Пациент]

AFTER DELETE

AS

BEGIN

SET NOCOUNT ON;

Declare @id bigint

Set @id = (Select KodPacienta From deleted)

Delete [Прием пациента]

Where KodPacienta = @id

END

Данный триггер удаляет данные о приеме из таблицы «Прием пациента», если в таблице «Пациент» удалить данные о пациенте.

Хранимая процедура — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с базами данных (как DDL, так и DML). Кроме того, в хранимых процедурах возможны циклы и ветвления, то есть в них могут использоваться инструкции управления процессом исполнения.

Хранимые процедуры похожи на определяемые пользователем функции (UDF). Основное различие заключается в том, что пользовательские функции можно использовать, как и любое другое выражение в SQL запросе, в то время как хранимые процедуры должны быть вызваны с помощью функции CALL.

Хранимые процедуры могут возвращать множества результатов, то есть результаты запроса SELECT. Такие множества результатов могут обрабатываться, используя курсоры, другими сохраненными процедурами, возвращая указатель результирующего множества, либо же приложениями. Хранимые процедуры могут также содержать объявленные переменные для обработки данных и курсоров, которые позволяют организовать цикл по нескольким строкам в таблице. Стандарт SQL предоставляет для работы выражения IF, LOOP, REPEAT, CASE и многие другие. Хранимые процедуры могут принимать переменные, возвращать результаты или изменять переменные и возвращать их, в зависимости от того, где переменная объявлена.

USE [Курсач ИТ]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[God]

AS

BEGIN

SET NOCOUNT ON;

Delete from dbo.Пациент where Year1>125

END

Генератор - это специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа могут быть использованы в качестве идентификаторов.

Сами по себе генераторы не обеспечивают сохранение последовательности номеров в случае удаления записей - генератор всего лишь выдает числа по очереди увеличивая их на некоторую величину и обеспечивая уникальность выданных значений. То есть, генератор выглядит как переменная типа integer, которая находится в памяти, и над которой можно выполнять операции Inc и Dec. Если требуется обеспечить непрерывные последовательности идентификаторов записей даже в случае их удаления или модификации, то необходимо обратиться к статье Auditable series of numbers (непрерывные последовательности чисел).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]