Нормальная форма область/ключ

Таблица имеет нормальную форму область/ключ (НФОК), если любое ограничительное условие в таблице является следствием определений областей и ключей. Однако не был дан общий метод приведения таблицы к НФОК.

В качестве примера, рассмотрим структуру реляционной базы данных, описывающей "отношения" пациентов и докторов в произвольной клинике (область приложения примера выбрана из-за того, что в сертификационных тестах Oracle аналогичные примеры встречаются очень часто). Пусть существует некая клиника, основные характеристики которой описываются в таблице CLINICS, в данной клинике работают доктора, основные характеристики которых описывает таблица DOCTORS. Данные пациентов клиники хранятся в таблице PATIENTS. Взаимосвязи между таблицами представлены на рис.10. (Для упрощения предполагается, что у доктора может быть несколько пациентов, которые не являются пациентами других докторов, для реализации реальной картины, когда один пациент может относиться к нескольким разным докторам, между таблицами DOCTORS и PATIENTS необходимо включить дополнительную связывающую таблицу).

 

Рис. 2. Диаграмма, иллюстрирующая отношения таблиц АИС.

 


 

Наименование столбца Описание

Таблица CLINICS

1 CS_NNN Индекс
2 CS_REG_NUMBER Регистрационный номер
3 CS_CITY_NNN Ссылка на справочник городов и регионов
4 CS_NAME Наименование клиники
5 CS_ADDRESS Адрес клиники
6 CS_PHONE_NUMBER Номер телефона
7 CS_TYPE Профиль клиники

Таблица DOCTORS

1 DC_NNN Индекс
2 DC_NAME Ф.И.О. доктора
3 DC_CS_NNN Ссылка на таблицу CLINICS
4 DC_DIPLOM_NUMBER Номер диплома
5 DC_SPECIALTY_NNN Ссылка на справочник специальностей
6 DC_SHTAT_NNN Ссылка на штатное расписание
7 DC_CALENDAR_NNN Ссылка на расписание приема

Таблица PATIENTS

1 PT_NNN Индекс
2 PT_REG_NUMBER Регистрационный номер
3 PT_NAME Ф.И.О. пациента
4 PT_ADDRESS Адрес пациента
5 PT_POLIS_NUMBER Номер полиса
6 PT_PHONE_NUMBER Номер телефона
7 PT_BIRTHDATE Дата рождения
8 PT_FIRST_VISIT Дата первого визита
9 PT_LAST_VISIT Дата последнего визита
10 PL_PT_NNN Ссылка на таблицу платежей

Таблица PAYMENTS

  PL_NNN Индекс
  PL_ACCOUNT_NUMBER Номер расчетного счета
  PL_PAY_NNN Ссылка на таблицу расчетов

Представленная структура, конечно, не обладает функциональной полнотой с точки зрения проектирования АИС клиники, с ее помощью мы лишь рассмотрим различные типы отношений в реляционных СУБД.

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

Для таблиц:

<Псевдоним АИС>_<Псевдоним модуля АИС>_:_<Псевдоним подмодуля>_<Имя таблицы>

 

Например, если бы мы разрабатывали АИС клиники c сокращенным названием CSL, то все таблицы входящие в данную систему было бы целесообразно называть

CSL_<имя модуля>_<имя таблицы>.

 

Для столбцов:

<Псевдоним таблицы>_<имя столбца>.

 

Например, как показано на рис.2. Регистрационный номер пациента храниться в поле PT_REG_NUMBER, таблицы PATIENTS, имеющий псевдоним PT.

Конечно, использование этих не хитрых правил не является обязательным, но позволяет значительно облегчить читаемость разработанной информационной структуру. Предположите, как было бы все, если бы поля таблиц назывались P111, P112 и т.п., а ведь такие вещи встречаются практически очень часто, например в FoxPro 2.6.

Перейдем к рассмотрению вопросов стандартизации и обеспечения ссылочной целостности реляционных таблиц.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: