Логическое проектирование

    1. АНАЛИЗ  ПРЕДМЕТНОЙ ОБЛАСТИ

 
    1. Потенциальные пользователи.
 

      Данный  проект рассчитан на следующую аудиторию:

      1) Работников медицинских учреждений.

      2) Простых пользователей.

      А также для всех людей, интересующихся, по роду профессии, учебы или образу жизни, какими либо болезнями или лекарствами. 

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

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

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

     - Не должно быть повторений  и между таблицами.

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

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

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

      - Каждое поле должно быть связано  с темой таблицы. 

     - Не рекомендуется включать в  таблицу данные, которые являются  результатом выражения.

     - В таблице должна присутствовать  вся необходимая информация.

     - Информацию следует разбивать  на наименьшие логические единицы (Например, поля «Имя» и «Фамилия», а не общее поле «Имя»). 
 

1.2 Описание  предметной области «как есть».

      База  данных предназначена для хранения данных о болезнях и лекарствах.

      Для наиболее удобного просмотра и поиска информации а так же выборки ее используются следующие формы заполнения данных: 

1. ID_болезни 

2. Название болезни

3. Категория

4. Симптомы

5. Лечение 

На основании  этого были сформулированы следующие  требования: 

    1.  Требования пользователей.
 

    БД  должна хранить:

  • Информацию о Лечении (номер, названия лекарства, противопоказания, способ применения и дозы, наименование народного средства, рецепт народного средства)
    • Доступно для всех пользователей
  • Информацию о Болезнях (номер, наименование, категория, симптомы, лечение )
      • Доступно для всех пользователей
       
       
       
    1.  Запросы  предусмотренные в БД
 

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

  • Информация о лекарстве
  • Список всех болезней
  • Информация о болезни
  • Поиск рецепта из народной медицины по названию рецепта
  • Поиск информации о лекарстве по названию лекарства
  • Поиск информации о болезни по названию болезни (включая симптомы и лечение)
 

1.5 Допущения  и ограничения.

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

2. Логическое проектирование 

  2.1 Описание объектов предметной  области.

  Определим сущности, которые присутствуют в  данной предметной области. Имеются  следующие основные сущности: Болезни, Категории болезней, Название болезни, Лечение, Лекарства, Народная медецина.

Сущность 1 (Болезни) содержит в себе описание болезней, обладает следующими атрибутами:

ID_болезни - Уникальный код болезни

ID_названия - Уникальный код названия

ID_категории - Уникальный код категории

Симптомы - Характерные признаки заболевания 

Сущность 1 (Болезни) состоит в связи с сущностью 2 (Категории_болезней) имеется связь M:1, т.к. у одной категории может быть множество заболеваний;

Сущность 1 (Болезни) состоит в связи с сущностью 3 (Название_болезней) имеется связь 1:M, т.к. у одной болезни может быть несколько названий;

Сущность 1 (Болезни) состоит в связи с сущностью 4 (Лечение) имеется связь 1:M, т.к. у одной болезни может быть несколько способов лечения;

 это  продемонстрировано на рисунке 1:

Рисунок 1

  

Сущность 2 (Категории_болезней) содержит в себе описание категорий болезней, обладает следующими атрибутами:

ID_категории - Уникальный код категории

Название  категории - Категория к которой относится данное заболевание

Факторы риска - Определяет вероятность и степень развития предпатологии

Сущность 2 состоит в связи с сущностью 1 (Болезни) см. рисунок 1. 

 Сущность 3 (Название_болезней) содержит в себе список названий болезней, данная сущность обладает следующими атрибутами:

ID_названия - Уникальный код названия

Наименование - Название болезни

ID_болезни - Уникальный код болезни 

Сущность 3 состоит в связи с сущностью 1 (см. Рисунок 1)

Сущность 4 (Лечение) содержит в себе описание способов лечения, эта сущность обладает следующими атрибутами:

ID_лечения - Уникальный код лечения

Лекарство - Уникальный код лекарства

Народное  средство - Уникальный код рецепта народного средства

ID_болезни - Уникальный код болезни

Сущность 4 состоит в связи с сущностью 1 (Болезни) (см. рисунок 1);

Сущность 4 состоит в связи с сущностью 5 (Лекарства) имеется связь 1:M, т.к. в одном способе лечения может применяться несколько лекарств;

Сущность 4 состоит в связи с сущностью 6 (Народная_медицина) имеется связь 1:M, т.к. в одном способе лечения может применяться несколько рецептов из народной медицины;

(см. Рисунок  2)

Сущность 4 состоит в связи с сущностью 7 (Травы) имеется связь 1:M, т.к. в одном способе лечения может применяться несколько вариантов трав;

Сущность  4 состоит в связи с сущностью 8 (Диеты) имеется связь 1:M, т.к. в одном способе лечения может применяться несколько рецептов лечебных диет; 
 

Рисунок 2

  

Сущность 5 (Лекарства) содержит в себе описание лекарства, эта сущность обладает следующими атрибутами:

ID_лекарства (Лекарство) - Уникальный код лекарства

ID_лечения - Уникальный код лечения

Наименование - Название лекарственного средства

Противопоказания - Каким людям нельзя

Способ  применения и дозирование - Как использовать

Сущность 5 состоит в связи с сущностью 4 (Лечение) (см. рисунок 2)  

Сущность 6 (Народная_медицина) содержит в себе описание рецептов народной медицины, эта сущность обладает следующими атрибутами:

ID_рецепта (Народное_средство) - Уникальный код рецепта народного средства

ID_лечения - Уникальный код лечения

Название  народного рецепта - Наименование рецепта  народного средства

Рецепт - Рецепт из народной медицины

Сущность  6 состоит в связи с сущностью 4 (Лечение) (см. рисунок 2)

Сущность 7 (Травы) содержит в себе описание лечебных трав, эта сущность обладает следующими атрибутами:

ID_травы - Уникальный код лечебной травы

ID_лечение - Уникальный код лечения

Название (травы) - Название лечебной травы

Информация - Информация о лечебных травах

Сущность 7 состоит в связи с сущностью 4 (Лечение) (см. рисунок 2)  

Сущность 8 (Диеты) содержит в себе описание лечебных диет, эта сущность обладает следующими атрибутами:

ID_диеты - Уникальный код лечебной диеты

ID_лечение - Уникальный код лечения

Название - Наименование диеты

Показания - Заболевания при которых используются диеты

Цель  диеты  - Цель данной диеты

Общая характеристика - Общая информация и оценка о диете

Химический  состав и калорийность - Химический состав и калорийность продуктов  разрешенных данной диетой

Режим питания - Инструкция по питанию данной диеты

Сущность 8 состоит в связи с сущностью 4 (Лечение) (см. рисунок 2)  
 
 
 

2.2 Диаграмма  сущность-связь 

Рисунок 3 – ER-диаграмма для предметной области «Медицинская энциклопедия» 

Принятые  обозначения:

Модальность:                       может (по отношению к избирательности связи)

                         должен (по отношению к избирательности связи)

Тип связи:     связь Один-к-Одному

     связь Один-ко-Многим 
 
 
 
 
 
 
 

3. НОРМАЛИЗАЦИЯ  ДАННЫХ 

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

  • 3.1 Первая нормальная форма. 
  • Первая  и главная нормальная форма требует  от таблицы (а точнее, от ее проектировщика) следования следующим правилам:

    • Каждый столбец в строке должен быть атомарным, т.е. столбец может содержать одно и только одно значение для заданной строки.
    • Каждая строка в таблице обязана содержать одинаковое количество столбцов. Учитывая обязательную атомарность столбцов, следует, что все строки в таблице должны иметь одинаковое количество значений.
    • Все строки в таблице, в общем, должны быть уникальны. Значения в столбцах могут дублироваться, но строки, взятые целиком — не могут.

          I нормальная форма – обычное отношение. Согласно определению любое отношение уже находится в I нормальной форме. 

    Таблица 1 Лечение

    Атрибут Описание Функциональная  зависимость
    ID_лечения Уникальный код лечения
    ID_травы Уникальный  код лечебной травы
    ID_диеты Уникальный  код лечебной диеты
    Лекарство Уникальный  код лекарства
    Народное_средство Уникальный  код рецепта народного средства
    Название  народного рецепта Наименование  рецепта народного средства  
    Рецепт Рецепт из народной медицины  
    Наименование Название лекарственного средства  
    Противопоказания Каким людям  нельзя  
    Способ  применения и дозирование Как использовать  
    Название  Наименование  диеты  
    Показания Заболевания при  которых используются диеты  
    Цель  диеты Цель данной диеты  
    Общая характеристика Общая информация и оценка о диете  
    Химический  состав и калорийность Химический  состав и калорийность продуктов разрешенных данной диетой  
    Режим питания Инструкция  по питанию данной диеты  
    Название (травы) Название лечебной травы  
    Информация Информация  о лечебных травах  
     

    Таблица 2 Болезни

    Атрибут Описание Функциональная  зависимость
    ID_болезни Уникальный код болезни
    ID_названия Уникальный  код названия
    ID_категории Уникальный  код категории
    Название  категории Категория к  которой относится данное заболевание  
    Наименование Название болезни  
    Симптомы  Характерные признаки заболевания  
    Факторы риска Определяет вероятность и степень развития предпатологии  
     

  • 3.2  Вторая нормальная форма. 
  • Два правила  второй нормальной формы говорят  о том, что:

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

         Для того чтобы отношения находились во второй НФ необходимо избавиться от частичных функциональных зависимостей в таблицах «Болезни» и «Лечение». Таблица «Лечение» разбивается на следующие таблицы:

    Таблица 3 Народная медицина

    ID_рецепта
    Название  народного рецепта
    Рецепт
     

    Таблица 4 Лечение_осн

    ID_лечения
    Лекарство
    Народное_средство
    ID_болезни
    ID_травы
    ID_диеты
     

    Таблица 5 Лекарства

    Наименование
    Противопоказания
    Способ  применения и дозирование
    ID_лекарства
    ID_лечения
     

    Таблица 6 Диеты

    ID_диеты
    ID_лечения
    Название 
    Показания
    Цель  диеты
    Общая характеристика
    Химический  состав и калорийность
    Режим питания
     

    Таблица 7 Травы

    ID_травы
    Название (травы)
    Информация
    ID_лечения
     

    Таблица «Болезни» разбивается на следующие  таблицы: 

    Таблица 8 Болезни_осн

    ID_болезни
    ID_названия
    ID_категории
    Симптомы
     

    Таблица 9 Категории болезней

    ID_категории
    Название  категории
    Факторы риска
     

    Таблица 10 Название болезней

    ID_названия
    Наименование
    ID_категории
     
      1.  Третья  нормальная форма.
     

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

         В третьей нормальной форме все  неключевые атрибуты должны быть взаимно  независимы. Эти условия выполняются, следовательно, данные отношения находятся  в 3 НФ.

    Таблица «Лечение» в конечном виде разбита  на 3 таблицы, представленных ниже.

    Таблица 11 Народная медицина

    ID_рецепта
    Название  народного рецепта  
    Рецепт  
     

    Таблица 12 Лечение_осн

    ID_лечения
    Лекарство  
    Народное_средство  
    ID_болезни  
    ID_травы  
    ID_диеты  
     
     
     

    Таблица 13 Лекарства

    ID_лекарства
    Противопоказания  
    Способ  применения и дозирование  
    Наименование  
    ID_лечения  
     

    Таблица 14 Диеты

    ID_диеты
    ID_лечения  
    Название   
    Показания  
    Цель  диеты  
    Общая характеристика  
    Химический  состав и калорийность  
    Режим питания  
     

    Таблица 15 Травы

    ID_травы
    Название (травы)  
    Информация  
    ID_лечения  
     

    Таблица «Болезни» в конечном виде разбита  на 3 таблицы, представленных ниже. 

    Таблица 16 Болезни_осн

    ID_болезни
    ID_названия  
    ID_категории  
    Симптомы  
     

    Таблица 17 Категории болезней

    ID_категории
    Название  категории  
    Факторы риска  
     

    Таблица 18 Название болезней

    ID_названия
    Наименование  
    ID_болезни  

      4. ОПИСАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ

     

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

         Определим какие типы данных будут присутствовать в наших таблицах:

    Рисунок 4 – таблица Лечение (конструктор)

    Таблица 19 – Структура таблицы Лечение

      Тип данных Размер поля Маска ввода Индексированное поле
    ID_лечение Счетчик Длинное целое   Да
    ID_болезни Числовой Длинное целое   Нет
    Лекарство Числовой Длинное целое   Нет
    Народное_средство Числовой Длинное целое   Нет
    ID_травы Числовой Длинное целое   Нет
    ID_диеты Числовой Длинное целое   Нет
    Логическое проектирование