Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаб 1

.docx
Скачиваний:
20
Добавлен:
28.06.2021
Размер:
82.46 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Кафедра «Математической кибернетики и информационных технологий»

Лабораторная работа №1

по дисциплине «Интеллектуальные базы данных»

на тему

«Проектирование базы данных с использованием ER-технологии»

Выполнил:

Студент гр.

Проверил: Фатхулин Т. Д.

Москва 2021

Цель работы

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

Теоретические сведения

Для заданной предметной области должен быть определен состав реляционных таблиц и логические связи между таблицами. Для каждого атрибута должны быть заданы тип и размер данных, ограничения целостности. Для каждой таблицы – первичный ключ, потенциальные ключи и внешние ключи.

Разработка логической модели методом «сущность-связь» (ER-методом) предусматривает выполнение следующих шагов, детально описанных в работе [3]:

  1. построение ER-диаграммы, включающей все сущности и связи, важные с точки зрения интересов предметной области;

  2. анализ связей и определение их характеристик – степени связи, мощности и класса принадлежности;

  3. построение набора предварительных отношений с указанием предполагаемого первичного ключа для каждого отношения;

  4. подготовка списка всех неключевых атрибутов и назначение каждого из этих атрибутов одному из предварительных отношений;

  5. проверка нахождения всех полученных отношений в нормальной форме Бойса-Кодда;

  6. построение модели данных.

Практическая работа

При выполнении лабораторной работы необходимо:

  • для своего варианта, соответствующего определенной предметной области, построить логическую модель данных в соответствии со стандартом IDEF1X;

  • построить физическую модель;

  • составить отчет по лабораторной работе

Ход выполнения

Рассмотрим предметную область задания. Необходимо спроектировать базу данных book для интернет-магазина, торгующего компьютерной литературой. В базе данных должна поддерживаться следующая информация:

  • тематические каталоги, по которым сгруппированы книги;

  • предлагаемые книги (название, автор, год издания, цена, имеющееся на складе количество);

  • зарегистрированные покупатели (имя, отчество, фамилия, телефон, адрес электронной почты, статус – авторизованный, неавторизованный, заблокированный, активный с хорошей кредитной историей);

  • покупки, совершенные в магазине (время совершения покупки, число приобретенных экземпляров книги).

И сходя из проанализированных требований, можно выделить сущности КАТАЛОГ, КНИГА, КЛИЕНТ, ЗАКАЗ. Логическая модель данных предметной области в стандарте IDEF1X представлена на рис. 1.

Рис. 1. Логическая модель данных предметной области

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

Физическая модель данных предметной области в стандарте IDEF1X для целевой СУБД MySQL представлена на рис. 2.

Р ис. 2. Физическая модель предметной области

База данных book состоит из четырех таблиц:

  • catalogs – список торговых каталогов;

  • books – список предлагаемых книг;

  • users – список зарегистрированных пользователей магазина;

  • orders – список заказов (осуществленных сделок).

Таблица catalogs состоит из двух полей:

  • catalog_ID – уникальный код каталога;

  • catalog_name – имя каталога.

Оба поля должны быть снабжены атрибутом not null, поскольку неопределенное значение для них недо­пустимо.

Таблица books состоит из семи полей:

  • book_ID – уникальный код книги;

  • book_name – название книги;

  • book_author – автор книги;

  • book_year – год издания;

  • book_price – цена книги;

  • book_count – количество книг на складе;

  • book_catalog_ID – код каталога из таблицы catalogs.

Цена книги book_price и количество экземпляров на складе book_count могут иметь атрибут null. На момент доставки час­то неизвестны количество товара и его цена, но отразить факт наличия товара в прайс-листе необходимо.

Поле book_catalog_ID устанавливает связь между таблицами catalogs и books. Это поле должно быть объявлено как внешний ключ (FK) с правилом каскадного удаления и обновления. Обновление таблицы catalogs вызовет автоматическое обновление таблицы books. Удаление каталога в таблице catalogs приведет к автоматическому удалению всех записей в таблице books, соответствующих каталогу.

Таблица users состоит из семи полей:

  • user_ID – уникальный код покупателя;

  • user_name – имя покупателя;

  • user_patronymic – отчество покупателя;

  • user_surname – фамилия покупателя;

  • user_phone – телефон покупателя (если имеется);

  • user_email – e-mail покупателя (если имеется);

  • user_status – статус покупателя.

Статус покупателя представлен полем типа enum, которое может принимать одно из четырех значений:

  • active – авторизованный покупатель, который может осуществлять покупки через Интернет;

  • passive – неавторизованный покупатель (значение по умолчанию), который осуществил процедуру регистрации, но не подтвердил ее и пока не может осуществлять покупки через Интернет, однако ему доступны каталоги для просмотра;

  • lock заблокированный покупатель, не может осуществлять покупки и просматривать каталоги магазина;

  • gold – активный покупатель с хорошей кредитной историей, которому предоставляется скидка при следующих покупках в магазине.

Поля user_phone, user_email и user_patronymic могут быть снабжены атрибутом null. Остальные поля должны получить атрибут not null.

Таблица orders вклю­чает пять полей:

  • order_ID – уникальный номер сделки;

  • order_user_ID – номер пользователя из таблицы users;

  • order_book_ID – номер товарной позиции из таблицы books;

  • order_time – время совершения сделки;

  • order_number – число приобретенных товаров.

Поля таблицы orders должны быть снабжены атрибутом not null, т. к. при совершении покупки вся информация должна быть занесена в таблицу.

В таблице orders устанавливается связь с таблицами users (за счет поля order_user_id) и books (за счет поля order_book_id). Эти поля объявлены как внешние ключи (FK) с правилом каскадного удаления и обновления. Обновление таблиц users и books приведет к автоматическому обновлению таблицы orders. Удаление любого пользователя в таблице users приведет к автоматическому удалению всех записей в таблице orders, соответствующих этому пользователю.

Выводы

В данной работе была проанализирована предметная область задания. На основе анализа была спроектирована логическая схема базы данных с помощью ER технологии. После чего была спроектирована физическая схема базы данных для СУБД MySQL.

Ответы на контрольные вопросы

  1. Что обозначают параметры связей в модели «сущность-связь»?

У связи существует 2 пары параметров, которые относятся к каждой из сущностей, участвующих в связи.

Первый параметр определяет класс принадлежности связи и обозначает обязательность участия экземпляра сущности в связи. Может принимать 2 значения: 1 – экземпляр сущности должен быть связан не менее чем с одним экземпляром другой сущности, 0 – экземпляр сущности может не быть связан ни с одним экземпляром другой сущности.

Второй параметр определяет мощность связи – число экземпляров сущности, участвующих в связи. Может принимать 3 значения: 1, N или конкретное число.

  1. Почему связи на рис. 1 имеют такие значения?

Рассмотрим рис. 1.

Связь между сущностями «каталог» и «книга». Класс принадлежности у «каталога» 0 – не обязательно, чтобы были книги, относящиеся к конкретному каталогу. Класс принадлежности у «книги» 1 – каждая книга должна иметь принадлежность к каталогу. Мощность связи один-ко-многим – к одному каталогу могут принадлежать много книг.

Связь между сущностями «книга» и «заказ». Класс принадлежности у «книги» 0 – необязательно, чтобы книга была в каком-либо заказе. Класс принадлежности у «заказа» 1 – обязательно, чтобы в заказе была книга. Мощность связи один-ко-многим – одна книга может содержаться во многих заказах.

Связь между сущностями «клиент» и «заказ». Класс принадлежности у «клиента» 0 – необязательно, чтобы клиент размещал в какой-либо заказ. Класс принадлежности у «заказа» 1 – обязательно, чтобы заказ был размещен клиентом. Мощность связи один-ко-многим – один клиент может размещать много заказов.

Соседние файлы в предмете Интеллектуальные базы данных