- •Построение модели данных для составных объектов
- •2.2. Концептуальная модель строительной компании Премьер
- •2.3. Концептуальная модель Консультационной Службы Мэнуоринг
- •Моделирование концептуальных и физических объектов
- •3.1. Основные понятия
- •3.2. Библиотечная проблема
- •3.3 Проектирование модели данных для библиотеки
- •3.4. Концептуальные объекты для Консультационной Службы Мэнуоринг
- •4. Объединение представлений данных
- •5. Задание для самостоятельной работы
- •3. Воспользуйтесь концептуальными и физическими объектными множествами при создании моделей данных для следующих задач:
3.3 Проектирование модели данных для библиотеки
На этапе определения требований ЖЦБД мы как аналитики должны опрашивать пользователей, чтобы выяснить их требования к базе данных. На этом этапе очень важно правильно определить объекты и отношения, являющиеся естественной частью ежедневной деятельности пользователей. Так, если между значениями различных терминов естественным образом возникают тонкие различия, мы должны суметь определить их, чтобы точно смоделировать отношения.
Создавая модель данных для библиотеки, остановимся не следующих примерных вопросах: Сколько в библиотеке книг Чарлза Диккенса? Сколько в библиотеке разных книг издательства Signet Classic? Сколько книг в библиотеке второго издания?
Сколько в библиотеке копий книги «Гордость и предубеждение»?
Из этих вопросов мы получаем три типа «книг»: Концептуальная книга, Издание концептуальной книги, Физическая книга.
Из первых двух мы сконструируем два объектных множества и отношение (рис. 16).
Рис. 16. Предварительное решение библиотечной проблемы
Обратите внимание на минимальную и максимальную мощности отношения со стороны объекта КОНЦЕПТУАЛЬНАЯ-КНИГА. Эти мощности показывают, что объектное множество КОНЦЕПТУАЛЬНАЯ-КНИГА-ИЗДАНИЕ зависимо от объектного множества КОНЦЕПТУАЛЬНАЯ-КНИГА. Это означает, что каждая конпептуальная-книга-издание представляет собой издание одной и только одной концептуальной книги.
Зависимое объектное множество. Объектное множество, каждый элемент которого должен быть связан хотя бы с одним элементом другого объектного множества.
Хотя такое решение отвечает на некоторые вопросы, оно совершенно не помогает нам ответить на вопрос типа
Сколько в библиотеке разных книг издательства Signet Classic?
Проблема заключается во множестве КОНЦЕПТУАЛЬНАЯ-КНИГА-ИЗДАНИЕ. Поскольку каждый элемент этого множества — издание конкретной книги, то мы не можем отследить одинаковые издания разных книг. Дополнительная проблема состоит в том, что наше множество КОНЦЕПТУАЛЬНАЯ-КНИГА-ИЗДАНИЕ должно содержать значительно больше элементов, чем это на самом деле необходимо.
Рис. 17. Более удачное решение библиотечной проблемы
На рис. 17 представлено более удачное решение. В этом случае ИЗДАНИЕ — независимое объектное множество, существующее само по себе. Поскольку каждая концептуальная книга может иметь несколько изданий, ИЗДАНИЕ не может быть атрибутом объекта КОНЦЕПТУАЛЬНАЯ-КНИГА. Таким образом, отношение между объектами КОНЦЕПТУАЛЬНАЯ-КНИГА и ИЗДАНИЕ имеет мощность много-ко-многим. С помощью этой модели на вопрос об изданиях можно ответить, а ненужных повторов концептуальных изданий не будет. Например, издательство Signet Classic встречается в объектном множестве EDITION только один раз, тогда как в предыдущей модели оно повторялось дважды в объектном множестве КОНЦЕП-ТУАЛЬНАЯ-КНИГА-ИЗДАНИЕ на рис. 16: «Оливер Твист изд-во Signet Classic» и «Давид Копперфильд изд-во Signet Classic». Поскольку издательство Signet Classic выпускает множество книг, наш новый подход избавляет нас от множества возможных повторений.
Воспользовавшись рис. 17, мы можем добавить к нашей модели понятие «физической книги» (рис. 18). Элемент множества ФИЗИЧЕ-СКАЯ-КНИГА представляет том, который можно пометить инвентарным номером и который может быть выдан только одному человеку за раз. В нашем примере мы считаем, что инвентарный номер содержит всю информацию, необходимую для идентификации конкретной физической книги. Таким образом, внешний ключ для каждой физической книги — это ее инвентарный номер или номер физической идентификации, по которому ее можно отслеживать при инвентарном учете. Инвентарный номер может содержать такую информацию, как номер копии, позволяющий отличать одну копию данной концептуальной книги от другой.
Рис. 18. Третье решение библиотечной проблемы
Обратите внимание, что отношение СОДЕРЖИТСЯ-В на рис. 18 имеет мощность один-ко-многим. Такая мощность подразумевает, что данная комбинация книга-издание может содержаться в нескольких физических книгах. Это соответствует нашему представлению о реальности. Но эта мощность также означает, что данная физическая книга может содержать только одну комбинацию книга-издание. Верно ли это?
Рассмотрим книгу, содержащую сборник произведений Джейн Остин. Такая книга содержит несколько концептуальных книг, хотя мы можем сказать, что все они имеют одно и то же издание. Все эти концептуальные книги содержатся в одной и той же физической книге, как показано на рис. 19.
Рис. 19. Пример сборника
Поскольку такая ситуация не является необычной, в целях точности мы должны изменить мощность на рис. 18 с один-ко-многим на много-ко-многим (рис. 20). Таким образом, одна физическая книга может быть связана с несколькими концептуальными книгами.
Рис. 20. Исправленное решение библиотечной проблемы
Наша модель данных все еще весьма ограничена. Если пользователям библиотеки нужно идентифицировать язык, на котором издана книга, нам может понадобиться выделить язык в отдельный объект. Язык может быть атрибутом комбинации книга-издание (в предположении, что одно издание книги может быть только на одном языке), или же отдельным объектным множеством, находящемся в отношении много-ко-многим с книгой-изданием. В этом случае данное издание может содержать произведения на итальянском, французском, испанском, английском и т.д. На рис. 21 ЯЗЫК представлен как отдельный объект, связанный отношением ИЗДАНА-НА-ЯЗЫКЕ с составным множеством ИМЕЕТ-ИЗДАНИЕ. Физическая книга будет связана с элементом составного множества ИЗДАНА-НА-ЯЗЫКЕ, включающего концептуальную книгу, издание и язык.
Рис. 21. Язык как отдельный объект в решении библиотечной проблемы
Различие между концептуальными книгами и физическими книгами является ключевым при решении этой проблемы. Что еще более важно, различие концептуального и физического полезно при решении многих сходных задач моделирования данных. Вы встретитесь с ним во множестве различных ситуаций в бизнесе. Любой случай, когда слово употребляется в нескольких значениях, является потенциальной проблемой. Определяя отдельные объектные множества для каждого значения многозначного термина и соответствующие отношения между ними, мы можем сконструировать модель данных, которая обеспечит пользователей всей необходимой информацией. Мы поясним это на дополнительных примерах.