Пример проектирования. РБД «Библиотека»
Описание предметной области. Библиотека – хранилище книг, которые могут выдаваться читателям на определенное время. Каждая книга, хранящаяся в библиотеке, имеет свою карточку в каталоге, где указывается ее номер по каталогу, название, автор, издательство, год издания и другая информация. Все читатели библиотеки также регистрируются: на каждого из них заводится читательский билет, где указывается номер билета, Ф.И.О., адрес, паспортные данные, место работы. При выдаче книги в специальный журнал заносится учетная запись, содержащая следующие сведения: фамилия читателя, номер читательского билета, автор, название книги, номер книги по каталогу, дата выдачи, дата возврата. При возврате книги соответствующая учетная запись аннулируется. На основании имеющейся информации могут быть получены ответы на следующие запросы: есть ли данная книга в библиотеке; если есть – то имеется ли она в наличии, если нет – у кого она на руках. Кроме этого можно получить информацию о просроченных книгах или о читателях-должниках (имеющих на руках просроченные книги). Построение информационно-логической модели. В результате анализа предметной области выясним состав документов и их реквизитов, подлежащих хранению в базе данных. Из описания следует, что информация о предметной области отражается в документах трех видов: учетной карточке книги, читательском билете и журнале учета выданных книг. Выделим информационные объекты предметной области. В первую очередь - это объекты «Книга» и «Читатель», которые в точности соответствуют документам «Учетная карточка книги» и «Читательский билет». Определим для каждого ИО состав реквизитов, ключевые реквизиты и функциональные связи.
Для ИО «Книга» ключевым реквизитом будет реквизит «Номер по каталогу», поскольку все имеющиеся в библиотеке книги имеют уникальные (несовпадающие) номера. Дадим символические имена реквизитам, выделим ключевой реквизит, занесем их список в таблицу, аналогичную таблице 1, и укажем функциональные связи между ними. Получим таблицу 2, описывающую состав реквизитов ИО «Книга». В своем составе ИО «Книга» имеет 5 реквизитов, среди которых один – «Номер по каталогу», является простым ключом, остальные – описательными (зависимыми) реквизитами. Для ИО «Читатель» ключевым реквизитом будет реквизит «Номер читательского билета», поскольку все читательские билеты имеют уникальные номера. Основываясь на описании предметной области, дадим символические имена реквизитам читателя, определим функциональные связи между ними и создадим таблицу 3, описывающую ИО «Читатель».
По отношению к ИО «Читатель» нужно заметить, что фактически реквизиты «Фамилия И.О.» и «Паспортные данные» являются множественными элементами: первый состоит из фамилии и инициалов, второй – из серии и номера паспорта. Это нарушает правило нормализации, согласно которому информационный объект должен иметь линейную структуру данных, то есть в нем должны отсутствовать группы, множественные элементы. Однако, если не предполагается делать запросы к базе данных отдельно по фамилии, серии и номеру паспорта, то данные реквизиты можно рассматривать как простые, что упрощает структуру ИО. В противном случае реквизит «Фамилия И.О.» должен быть разбит на три реквизита (фамилия, имя, отчество), а реквизит «Паспортные данные» - на два (серия и номер паспорта). Информационные объекты «Книга» и «Читатель» в соответствии с описанием предметной области связаны друг с другом через объект-посредник, который можно назвать «Учетная запись». Это журнал, в котором фиксируется факт выдачи-возврата книги по отношению к определенному читателю. Согласно описанию ПО составим таблицу реквизитов для ИО «Учетная запись», отобразим в ней функциональные связи между реквизитами и проанализируем полученный результат.
Имеется две группы функционально связанных реквизитов: «Номер билета»-«Фамилия И.О.» и «Номер по каталогу»-«Автор книги»-«Название книги», что противоречит требованиям нормализации. В таком случае в соответствии с правилами необходимо выделить эти группы в отдельные информационные объекты, оставив в ИО «Учетная запись» только ключевые реквизиты этих объектов. Но в нашем случае эти объекты уже созданы: первая группа реквизитов соответствует ИО «Читатель», вторая – ИО «Книга». Ключевыми реквизитами являются, соответственно, «Номер билета» и «Номер по каталогу». Оставляем их в таблице, а подчиненные им реквизиты («Фамилия И.О.», «Название книги», «Автор книги») удаляем. Определяем ключ ИО «Учетная запись». Поскольку учетные записи сданных книг аннулируются (архив не ведется), а одна и та же книга не может быть выдана сразу нескольким читателям, то каждая учетная запись соответствует уникальной книге. Поэтому ключевым реквизитом ИО «Учетная запись» будет «Номер по каталогу». Тогда таблица реквизитов приобретает окончательный вид (таблица 5). Определим связи между информационными объектами. Реляционная база данных – это совокупность реляционных таблиц (ИО), логически связанных друг с другом. Поэтому после выделения информационных объектов необходимо определить связи между ними. ИО «Книга» и «Читатель» непосредственно не связаны друг с другом. Связь возникает, когда читатель берет книгу, и в журнале выдачи появляется запись. Таким образом, связь этих объектов осуществляется через ИО «Учетная запись». При этом, поскольку один и тот же читатель может взять одновременно несколько книг, то связь «Читатель» - «Учетная запись» имеет вид (1:М). Поскольку одна и та же книга может быть выдана только одному читателю, то связь «Книга» - «Учетная запись» имеет вид (1:1).
Связь «Учетная запись» - «Читатель» осуществляется с помощью ключа «Номер билета», а связь «Учетная запись» - «Книга» - с помощью ключа «Номер по каталогу».
Отобразим графически информационно-логическую модель. Информационно-логическая модель предметной области приведена на рис.4. Поскольку на рис.4 отображен полностью состав реквизитов каждого информационного объекта, то
Рис.4 Информационно-логическая модель
рисунок одновременно отражает и логическую структуру реляционной базы данных «Библиотека».
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|