В процессе выполнения лабораторной работы Вы узнаете:

В процессе выполнения лабораторной работы Вы научитесь:

2 этап создания логической модели данных - выделение атрибутов.

Определившись с сущностями, необходимо выделить их атрибуты.

Атрибуты выделяются в процессе анализа предметной области.

 

Атрибуты – это свойства , присущие всем (или почти всем) экземплярам сущности,  информация о которых востребована и должна быть хранима.
 
Атрибуту в БД соответствует поле таблицы.

Так для сущности Сотрудник такими свойствами могут быть - Фамилия, Возраст и Адрес.

Эти свойства будут атрибутами только в том случае, если будут соответствовать критериям, перечисленным в  определении.

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

Таблица 1

Фамилия Возраст Адрес
Иванов 25 Ул. Вишневая, 12-15
Петров 27 Ул. Садовая, 35-84
Сидоров 23 Ул. Летняя, 18-7

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

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

Рекомендации по выделению атрибутов и их идентификации

  1. Атрибутом  сущности свойство будет тогда, и только тогда, когда информация  о нем востребована и , следовательно, должна быть хранима.

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

    Известно, что про каждого работающего в компании надо знать: имя, фамилию, номер телефона(эта информация востребована  при выполнении функции поиска сотрудника, выполнившего заказ) – это свойства и им будут соответствовать атрибуты сущности Сотрудник.

  1. Атрибутом будет являться свойство, принадлежащее большинству экземпляров данной сущности.

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

     

    Если свойство принадлежит отдельной небольшой группе экземпляров сущности  ( т.е. не всем объектам такого типа в предметной области - в нашем примере не всем сотрудникам), то эти свойства не будут атрибутами этой сущности, а будут выделены в отдельную сущность.

    Если этого не сделать, то на уровне БД у большинства записей данной таблицы соответствующие поля будут всегда пустыми, т.к. большая часть экземпляров сущности этим свойством не обладает.

    Например:

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

  1. Значения атрибутов должны быть атомарными. 

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

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

  1. Значения атрибутов должны быть одного типа.

    Допустим, что в сущности Сотрудник должны бы были присутствовать атрибуты Дата приема и Дата увольнения. Нельзя объединить их и создать один атрибут Дата, т.к. эти атрибуты имеют разный смысл, разное назначение и по самому значению даты нельзя определить, какая же дата указана - приема или увольнения.- налицо неопределенность, которая может привести к аномальным ситуациям при обработке.

     

    Правила именования, описания  и отображения атрибутов.

    1.   Атрибут идентифицируется уникальным  именем (желательно в рамках модели, а не только данной сущности).

  1. Имена атрибутов должны быть информативны и лаконичны и выбраны из словаря предметной области (понятны всем участникам разработки проекта)

          В нашем случае атрибуты сущности Сотрудник будут иметь следующие имена:

            - Фамилия;

            -Имя;

            -Отчество;

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

            - Пол;

            - Должность;

             - Номер телефона;

            - Номер кабинета;

            - Оклад.

Имена атрибутов сущности Проект:

        - Номер проекта;

        - Название проекта;

        - Тип проекта;

        - Дата начала;

        - Дата конца;

        - Код сотрудника.

Имена атрибутов сущности Заказчик:

        - Код заказчика;

        - Наименование организации;

        - Адрес;

        - Телефон;

        - Фамилия;

        - Имя;

        - Отчество.

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

          Описание должно определять:

Мы определили атрибуты наших сущностей, далее необходимо внести их на диаграмму.

Задание 1. Внесите атрибуты сущности «Проект» на диаграмме.

Для этого  выполните следующие шаги:

Шаг 1. Создайте новую модель (свойства и описания модели задайте такие же как вы это делали в лабораторной 1).

Шаг 2. Создайте  сущности Проект, Заказчик, Сотрудник. Самостоятельно опишите эти сущности.

Шаг 3.Вызовите контекстное меню на выделенной сущности Проект и выберите пункт Attributes:

Рис. 1. Вызов диалога Attributes

Шаг 4. Для создания нового атрибута в диалоговом окне Attributes нажмите кнопку New

Рис.2. Диалог Attributes

С помощью кнопок Rename и Delete соответственно можно переименовать или удалить уже созданный атрибут.

 Шаг 5.В новом диалоговом окне New Attribute в поле Name введите имя атрибута Номер проекта (рис.3)

 Шаг 6.В предлагаемом списке выберите иконку, которая будет соответствовать типу этого атрибута – Number.

Иконки определяют тип данных атрибута, а также служат для повышения  наглядности.

Рис. 3. Диалог New Attribute

Для символьных переменных нужно будет выбирать иконку String, для даты – Datetime , для логического - Blod.

 

Задание 2. Дополните атрибутами сущности Проект и Сотрудник, согласно таблице 2.

Таблица 2.

Атрибуты сущностей Проект и Сотрудник < <
Сущность Атрибуты Тип атрибута
Проект Номер проекта Number
Название проекта String
Тип проекта String
Дата начала Datetime
Дата конца Datetime
Сотрудник Фамилия String
Имя String
Отчество String
Дата рождения Datetime
Пол String
Должность String
Номер телефона Number
Номер кабинета Number
Оклад Number

После выполнения Задания 2 Ваша диаграмма должна выглядеть так: (рис 4).

Рис. 4. Сущности  с атрибутами

Задание 3. Отображение иконок атрибутов

Для отображения иконок атрибутов необходимо:

Шаг 1. Вызвать контекстное меню для сущности проект ;

Шаг 2. Выбрать в контекстном меню пункт Entity Display;

Шаг 3. Во всплывающем меню выбрать пункт Attribute Icon

Рис.5. Отображение иконок на диаграмме

После выполнения данного задания, созданные Вами сущности должны выглядеть следующим образом:

Рис. 6. Внешний вид сущностей Проект и Сотрудник с отображением иконок в ERwin

Задание 4. Описание атрибутов сущности Проект

Для описания атрибутов необходимо:

Шаг 1. Вызвать контекстное меню для сущности Проект;

Шаг 2. Выбрать в контекстном меню пункт Attributes ;

Шаг 3. В открывшемся окне  выделить в списке атрибутов нужный -Номер проекта и на вкладке Definishion  внести описание(рис 7).

Рис. 7. Описание атрибута

Шаг 4. На вкладке Note внести  дополнительное описание - пример из предметной области (рис 8).

Рис. 8. Дополнительное описание атрибута

Шаг 5. На вкладке History в поле Comment можно внести  дополнительное описание причин изменения данного атрибута (рис 9).

 

Рис. 9. Дополнительное описание  в истории атрибута

 

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

3 этап создания логической модели данных для системы - выделение первичных ключей

Как Вы видите, прямоугольник, изображающий сущность на диаграмме, разделен на две части. Эта горизонтальная линия прямоугольника разделяет атрибуты сущности на два набора:

- в верхней части – атрибуты, составляющие первичный ключ;

- в нижней части – прочие атрибуты (не входящие в первичный ключ).

Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующая каждый экземпляр сущности.

Сложные ключи – состоящие из нескольких атрибутов.

Потенциальные ключи – атрибуты, однозначно идентифицирующие каждый экземпляр сущности.

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

Требования, предъявляемые к первичным ключам:

  1. Уникальность – два экземпляра сущности не должны иметь одинаковых значений первичного ключа.

    Например, в нашем случае, у сущности Проект на звание первичного могут претендовать несколько атрибутов – Номер проекта, Название проекта, Тип проекта, Дата начала, но названия проектов могут совпадать, дата начала тоже, а вот номер у проекта всегда однозначный и не может совпадать с номером другого. Следовательно, атрибут Номер проекта самый лучший кандидат на роль первичного ключа.

  2. Компактность

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

  3. Атрибуты ключа не должны содержать нулевых значений.

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

  4. Значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности.

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

Если не удается выделить  первичный ключ из существующих атрибутов, то вводится искусственный (дополнительный) атрибут такой  как: Код проекта, Табельный номер сотрудника, Номер заказа и др.

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

 

Задание 5. Обозначение первичного ключа сущности Проект на диаграмме

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

В нашем примере сущность Проект будет обладать первичным ключом Номер проекта, сущность Сотрудник – Код сотрудника.

Чтобы сделать атрибут Номер проекта первичным ключом необходимо:

Шаг 1. Вызовите контекстное меню на выделенной сущности Проект и выберите пункт Attributes:

Рис. 10. Вызов диалога Attributes

Шаг 2.  Выделить из предлагаемого списка атрибут, претендующий на роль первичного ключа - Номер проекта;

Шаг 3.В окне Attrubutes выбрать закладку General и сделать пометку в окне выбора Primary Key.

Рис.11. Присвоение атрибуту Номер проекта звания первичного ключа

Задание 6. Самостоятельно обозначьте первичный ключ  сущности Сотрудник (код сотрудника) на диаграмме

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

Рис.12. Внешний вид сущностей Проект и Сотрудник в ERwin

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

Редактирование диаграммы

Естественно, что в процессе создания модели, может возникнуть необходимость в редактировании ее объектов (таком как копирование, удаление, переименование). Для выполнения этих операций в AllFusion ERwin Data Modeler используются стандартные приемы.

Рассмотрим некоторые из них.

Перемещение атрибутов.

Для того чтобы переместить атрибут сущности, необходимо выполнить следующие действия:

Редактирование первичных ключей.

Чтобы отменить назначение атрибута первичным ключом нужно:

1 способ

перетащить его из области первичного ключа в неключевые атрибуты.

2 способ( для трудоголиков):

Задание 7. Закончите построение модели :
Задание 8. Самостоятельное. Проведите атрибутный анализ своей модели.

 

Ответьте на следующие вопросы и покажите преподавателю результат выполнения лабораторной работы.

Контрольные вопросы.

  1. Что такое атрибут? Какими правилами следует руководствоваться для наиболее точного выделения атрибутов?
  2. Какие действия необходимо произвести, чтобы создать атрибут и присвоить ему имя ?
  3. Обоснуйте необходимость выполнения каждого правила именования и описания атрибутов
  4. Что такое первичный ключ? Перечислите требования, предъявляемые к первичным ключам. Как назначить первичный ключ в Erwin?
  5. Для чего служат иконки, присваиваемые атрибутам? Как их отобразить на диаграмме?
  6. Какие типы данных поддерживает Erwin?
  7. Перечислите и опишите способы редактирования сущностей , атрибутов, ключей в ERwin.
  8. Какие типы ключей вам известны? Каково  их назначение?
  9. Перечислите уровни отображения диаграммы, сущности. Как  установить нужный уровень?