Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 01 Лекция 1 (1).doc
Скачиваний:
6
Добавлен:
13.11.2019
Размер:
203.78 Кб
Скачать

1.5. Пример базы данных «Библиотека».

Технологический процесс: учет выдачи книг в библиотеке.

  1. ЧИТАТЕЛИ

  2. БИБЛИОТЕКАРИ

  3. КНИГИ

  4. ПАСПОРТНЫЕ ДАННЫЕ

  5. ТЕЛЕФОН

  6. АВТОРЫ КНИГ

  7. ИНВЕНТАРНЫЕ НОМЕРА КНИГ

  8. УЧЕТ ВЫДАЧИ КНИГ

  9. ФОНДЫ (ТИПЫ)

  10. ТИПЫ ТЕЛЕФОНОВ

  1. ЧИТАТЕЛИ

    1. Код

    2. Фамилия

    3. Имя

    4. Отчество

    5. № читательского билета

    6. Серия паспорта 4.1. Код

    7. № паспорта 4.1. Код

    8. Примечание

    9. Телефон

    10. Место основной работы

    11. Должность

  1. БИБЛИОТЕКАРИ

    1. Код

    2. Табельный номер

    3. Фамилия

    4. Имя

    5. Отчество

    6. Код паспорта 4.1. Код

    7. Должность

    8. Домашний телефон

    9. Примечание

  1. КНИГИ

    1. Код

    2. Название

    3. Автор 6.1. Код

    4. Год издания

    5. Тираж

    6. УДК

    7. Шифр

    8. Примечание

  1. ПАСПОРТНЫЕ ДАННЫЕ

    1. Код

    2. Серия паспорта

    3. № паспорта

    4. Дата рождения

    5. Место рождения

    6. Пол

    7. Место выдачи паспорта

    8. Дата выдачи паспорта

    9. Прописка (домашний адрес)

  1. ТЕЛЕФОН

    1. Код

    2. Код читателя

    3. Тип телефона 10.1. Код

    4. № телефона

  1. АВТОРЫ КНИГ

    1. Код

    2. Фамилия

    3. Имя

    4. Отчество

    5. Дата рождения

    6. Дата смерти

    7. Краткая биография

    8. Примечания

  1. ИНВЕНТАРНЫЕ НОМЕРА КНИГ

    1. Код

    2. Код книги

    3. Код фонда

    4. Инвентарный номер

    5. Стоимость

  1. УЧЕТ ВЫДАЧИ КНИГ

    1. Код

    2. Код читателя

    3. Код библиотекаря, выдавшего книгу

    4. Код инвентарного номера книги

    5. Код фонда

    6. Дата выдачи

    7. Дата возврата

    8. Фактическая дата возврата

    9. Код библиотекаря, принявшего книгу

  1. ТИПЫ КНИЖНЫХ ФОНДОВ

    1. Код

    2. Наименование типа фонда

  1. ТИПЫ ТЕЛЕФОНОВ

    1. Код

    2. Наименование типа телефона

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

Начнем с субъектов данного процесса. Сразу можем выделить три субъекта: ЧИТАТЕЛИ, БИБЛИОТЕКАРИ и КНИГИ. Начнем описание свойств этих субъектов с читателей. Свойства каждого субъекта будут являться названиями столбцов таблицы. Информация о субъектах, участвующих в процессе выдачи книг, будем заносить в строки таблицы. Итак, ЧИТАТЕЛИ.

Заглавие первой колонки во всех таблицах будет одно и тоже – «КОД». Это, как правило. Но в дальнейшем мы увидим, как и большинство правил, будет иметь исключения. Заглавие колонки в нашей таблице соответствует заглавию, или точнее, названию поля в таблице, входящей в состав базы данных. Поэтому далее мы будем говорить о полях таблицы, а не об ее колонках.

Следующие четыре поля таблицы «ЧИТАТЕЛИ» ­ «Фамилия», «Имя», «Отчество», «№ читательского билета» - вопросов не вызывают. Далее идут два поля: «Серия паспорта» и «№ паспорта». Эти два поля подразумевают, что в базе данных должны быть паспортные данные каждого читателя. Выделим для их хранения отдельную таблицу. «Паспортные данные». В поле «Примечание» поместим дополнительные данные по каждому читателю, для которых не выделены отдельные поля в таблице.

Обратим внимание на поля «Телефон». У читателя в настоящее время может быть три типа телефонов: домашний, рабочий и мобильный. Следовательно, для этой информации необходимо выделить отдельную таблицу: «Телефоны».

Рассмотрим таблицу «Паспортные данные», состоящую из таких полей: «Код», «Серия паспорта», «№ паспорта», «Дата рождения», «Место рождения», «Пол», «Место выдачи паспорта», «Дата выдачи паспорта», «Прописка (домашний адрес)». Ни одно из полей не располагает выделение под информацию в нем хранящуюся еще одной таблицы. Теперь нам осталось заменить в поле «ЧИТАТЕЛИ» поля 1.6 и 1.7 одним полем – «Код паспорта».

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

Рассмотрим таблицу «Телефоны». Она содержит четыре поля: «Код», «Код читателя», «Тип телефона», «№ телефона». В поле «Код» помещается уникальный номер строки таблицы. В поле «Код читателя» помещается значение поля 1.1 таблицы «ЧИТАТЕЛИ», соответствующий строке таблицы, в которой содержится информация о хозяине телефона. Следовательно, в данной таблице поле 5.1 «Код» лишнее, т.к. мы по полю 5.2 «Код читателя» по таблице 1. «ЧИТАТЕЛИ» однозначно определяем хозяина телефона.

Таблица 10 «Тип телефона» введена исключительно для того, чтобы при просмотре базы данных названия типов телефонов были одинаковы не только для пользователей на экране, но и для запросов, обеспечивающих поиск по типам телефонов читателей. Она содержит всего два поля: «Код» и «Наименование типа телефона». В поле «Наименование типа телефона», скорее всего, будет только отмечено три типа телефонов: «домашний», «рабочий» и «мобильный». Как Вы уже догадались в таблице 5. «ТЕЛЕФОН» вместо поля 5.3 «Тип телефона» будет поле «Код типа телефона», значение в котором будут соответствовать типу телефона из таблицы 10.

На этом будем считать, что всю информацию о читателях мы сможем получить из нашей базы данных. Займемся таблицей 2. «БИБЛИОТЕКАРИ». Она будет содержать девять полей: «Код», «Табельный номер», «Фамилия», «Имя», «Отчество», «Код паспорта», «Должность», «Домашний телефон», «Примечание».

Отметим ряд особенностей данной таблицы и общие черты с таблицей «ЧИТАТЕЛИ». Во-первых, в ряде случаев «Код» работника предприятия совпадает с его «Табельным номером», который больше интересен бухгалтерии для начисления заработной платы. Тогда поле «Код» не понадобилось бы. Во вторых, как и в таблице «ЧИТАТЕЛИ» выделены под фамилию, имя и отчество отдельные поля. В принципе, под Ф.И.О. можно выделить одно поле, но опыт показывает, что если фамилия, имя и отчество людей находятся в разных полях, работать с этой информацией легче. В-третьих, паспортные данные библиотекарей хранятся в той же таблице, что и паспортные данные читателей (см. поле 2.6. «Код паспорта»). В-четвертых, обратите внимание на поле 2.7. «Должность». В реальной задаче эту информацию необходимо было бы брать из таблицы, в которой хранится штатное расписание работников библиотеки по соответствующему коду должности. В нашем случае, чтобы не усложнять задачу, мы будем вписывать в данное поле просто название должности. В-пятых, поле 2.8. «Домашний телефон» предполагает, что нас интересует только домашний телефон библиотекаря. Если мы захотим иметь более одного телефона библиотекаря, тогда необходимо несколько модифицировать таблицу «Телефоны» (например, добавить еще одно поле, которое позволило бы отличать, принадлежит ли настоящий телефон читателю, или он принадлежит работнику библиотеки) и вписывать соответствующий код в поле «Код телефона», введенного вместо поля «Домашний телефон» в таблицу «БИБЛИОТЕКАРИ».

Рассмотрим структуру таблицы 3. «КНИГИ». Она состоит из следующих полей: «Код», «Название», «Автор», «Год издания», «Тираж», «УДК», «Шифр», «Примечание». Обратим внимание на поле 3.3. «Автор». Напрашивается выделение для авторов книг отдельной таблицы «АВТОРЫ КНИГ». В этом случае поле «Автор» заменим на поле «Код автора», в котором будем прописывать номер строки таблицы «Авторы книг», содержащей информацию об авторе книги. Такое решение продиктовано тем, что одним автором могут быть написаны много книг. Поля 3.6. «УДК» и 3.7. «Шифр» можно было бы расписать так, как это делают в библиотеке по темам, в зависимости от их значений. Но не будем этого делать, тем самым упростим задачу.

Рассмотрим таблицу 6. «АВТОРЫ КНИГ». Она состоит из следующих полей: «Код», «Фамилия», «Имя», «Отчество», «Дата рождения», «Дата смерти», «Краткая биография» и «Примечание». Обратим внимание на два поля «Краткая биография» и «Примечание». Из названия поля «Краткая биография» становится понятным, что в данном поле должен храниться текст. В поле «Примечание» так же предполагается хранить текст. Эти два поля имеют один тип. Назовем их текстовыми полями.

Только теперь мы рассмотрим таблицу, в которой собственно, и ведется учет выдачи книг. Так мы ее и назвали «УЧЕТ ВЫДАЧИ КНИГ». В первом приближении данная таблица имела следующие поля: «Код», «Код читателя», «Код библиотекаря, выдавшего книгу», «Код инвентарного номера книги», «Дата выдачи», «Дата возврата», «Фактическая дата возврата», «Код библиотекаря, принявшего книгу». Однако, первое поле «Код» нам не нужно, если данная информация не будет использоваться в дальнейшем ни в одной из таблиц. Но в целях развития системы его можно оставить «Код читателя» имеет значение, соответствующее значению поля «Код» в таблице «ЧИТАТЕЛИ», из той строки, в которой содержится информация о читателе, взявшем книгу. Поле «Код книги» было заменено на «Код инвентарного номера книги». Это сделано для того, чтобы в отдельной таблице «Инвентарные номера книг» учесть количество книг, находящихся в фондах и на руках у читателей. Поле «Фактическая дата возврата» введено для того, чтобы определить добросовестных читателей и выявить тех, кто не возвращает книги в оговоренный срок.

Рассмотрим таблицу «ИНВЕНТАРНЫЕ НОМЕРА КНИГ». Она содержит четыре поля: «Код», «Код книги», «Код фонда», «Инвентарный номер», «Стоимость». Поле «Код книги» содержит номер строки из таблицы «КНИГИ», в которой прописана информация о книге, имеющей инвентарный номер (поле «Инвентарный номер») из определенного фонда библиотеки (Поле «Код фонда»). В поле «Цена» указана цена книги, которую должен возместить читатель в случае её потери.

Осталась последняя таблица «ТИПЫ КНИЖНЫХ ФОНДОВ», имеющая всего два поля: «Код» и «Наименование фонда». Например, для библиотеки ДГУ известны два фонда: «НТБ» и «Студенческий». Следовательно, если бы данная база данных создавалась для учета выдачи книг в нашей библиотеке, то в этой бы таблице было бы всего две записи:

Код Наименование типа фонда

  1. НТБ

  2. Студенческий.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]