Практика 2. Построение ER-диаграммы

Задание

Цель: Научиться проектировать ER-диаграммы для описания предметной области.

Описание предметной области: "Библиотека"

Необходимо спроектировать ER-диаграмму для простой системы учета книг в библиотеке. Учитывайте следующие требования:

  • В библиотеке есть книги и читатели.
  • О каждой книге необходимо хранить её уникальный номер (ISBN), название, автора (или авторов) и год издания.
  • О каждом читателе хранится его уникальный номер читательского билета, ФИО и контактный телефон.
  • Читатель может взять несколько книг. Книга в один момент времени может находиться на руках только у одного читателя.
  • Необходимо фиксировать дату выдачи книги и планируемую дату возврата.

Требования к диаграмме:

  1. Определите все необходимые сущности.
  2. Для каждой сущности определите атрибуты. Выделите ключевые атрибуты.
  3. Установите связи между сущностями и определите их кардинальность (1:1, 1:M, M:M).

Пример решения

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

1. Определение сущностей

На основе описания можно выделить следующие основные сущности:

  • Читатель (Reader)
  • Книга (Book)
  • Автор (Author)

Также, поскольку нам нужно хранить данные о факте выдачи книги (дата выдачи, дата возврата), и эта связь соединяет Читателя и Книгу, мы вводим связующую (ассоциативную) сущность:

  • Выдача (Loan)

Кроме того, у книги может быть несколько авторов, и автор может написать несколько книг. Это связь "многие-ко-многим", для реализации которой также нужна связующая таблица:

  • Авторство (Authorship)

2. Атрибуты и ключи

  • Читатель
    • id_читателя (Первичный ключ, PK)
    • ФИО
    • Телефон
  • Книга
    • isbn (Первичный ключ, PK) - ISBN является хорошим кандидатом в натуральные ключи.
    • Название
    • Год_издания
  • Автор
    • id_автора (Первичный ключ, PK)
    • ФИО_автора
  • Выдача
    • id_выдачи (Первичный ключ, PK)
    • id_читателя (Внешний ключ, FK, ссылается на Читатель)
    • isbn_книги (Внешний ключ, FK, ссылается на Книга)
    • Дата_выдачи
    • Планируемая_дата_возврата
    • Фактическая_дата_возврата (Атрибут может быть NULL, пока книга не возвращена)
  • Авторство
    • isbn_книги (Часть составного PK, Внешний ключ, FK)
    • id_автора (Часть составного PK, Внешний ключ, FK)

3. Связи и кардинальность

  • Читатель и Выдача: Один ко многим (1:M). Один читатель может иметь много записей о выдаче, но каждая выдача связана только с одним читателем.
  • Книга и Выдача: Один ко многим (1:M). Одна книга может выдаваться много раз (в разное время), но каждая конкретная запись о выдаче относится только к одной книге.
  • Книга и Автор: Многие ко многим (M:N). Эта связь реализуется через промежуточную таблицу Авторство.

Форма отчетности

Результат представьте в виде изображения (диаграммы), созданного в любом удобном для вас онлайн-редакторе (например, draw.io) или в виде файла в формате .pdf.