Моделирование взаимосвязей между сущностями

Атрибут


Определение атрибута

Атрибутом назовем

  • любое свойство, позволяющее квалифицировать, идентифицировать, классифицировать, измерять сущность или выражать ее состояние
  • либо

  • любое описание объекта или явления
  • Атрибут может иметь текстовую, числовую, графическую форму, он может быть получен в результате функционирования органов чувств (осязания, обоняния и т.п.). Поскольку нас интересует обработка информации, сконцентрируем внимание на текстовых и числовых атрибутах, однако другие атрибуты тоже не следует забывать, ибо они могут повлиять на успех вашего дела (например, профессиональная подготовка сотрудников отдела АСУ).

    Изображение атрибута

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

    Рисунок 3-10. Добавление атрибутов

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

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



    Рисунок 3-11

    В нашем примере авиалинии могут потребоваться самолеты только четырех или пяти различных типов, самих же самолетов может оказаться и сто, и больше. Атрибут "регистрационный номер" имеет значение, уникальное для каждого вхождения сущности САМОЛЕТ.


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

  • наименование


  • описание


  • формат


  • длину


  • значение и/или диапазон принимаемых значений


  • а также все, что связано с этим атрибутом:

  • сущность


  • уникальный идентификатор(ы)


  • функции, в которых он используется.


  • Полностью определение атрибута показано в Приложении C.

    Производный атрибут

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

    Так, например, модель для авиакомпании содержит связь между САМОЛЕТОМ и расположенными в нем МЕСТАМИ. Одним из возможных производных атрибутов для сущности САМОЛЕТ будет атрибут "количество мест". Этот атрибут принимает значение в результате выполнения функции "подсчета количества МЕСТ в САМОЛЕТЕ".

    Другой пример - производный атрибут "фактически уплаченная сумма" для сущности БИЛЕТ, значение которого вычисляется из значений атрибутов "полная стоимость" и "принятая скидка".

    С этим понятием связаны некоторые опасности, уяснить которые необходимо прежде, чем вы приступите к проектированию БД.

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

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


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

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

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

    Например:

    "Идентифицировать каждый билет, фактически уплаченная сумма за который не превышает половины его полной стоимости" вместо:

    "Идентифицировать каждый билет, для которого полная стоимость за вычетом скидки не превышает половины этой полной стоимости".

    Другие возможные характеристики атрибута

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

  • фотография


  • отпечаток пальца


  • звук


  • цвет


  • спектрографические данные


  • запах


  • вкус


  • изображение


  • видеокадр


  • пульс


  • и т.п.


  • Часто такая информация требуется для интеграции в одно целое компьютерных и иных систем - не везде компьютеризация необходима.

    Присвоение наименований

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

  • Имя сущности Название атрибута


  • или

  • Название атрибута Имя сущности


  • Рисунок 7-19. Пример



    Наименование атрибута - просто "дата", но оно всегда используется в контексте сущности РЕЙС. В описании функции на него можно сослаться следующим образом: "проверить дату рейса".


    Содержание раздела