Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 2 БД.doc
Скачиваний:
16
Добавлен:
22.11.2019
Размер:
540.67 Кб
Скачать

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. Язык как отдельный объект в решении библиотечной проблемы

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