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

Примеры отчётов / Лабораторная ИБД №1

.pdf
Скачиваний:
13
Добавлен:
04.06.2023
Размер:
683.69 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

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

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

«Московский технический университет связи и информатики»

(МТУСИ)

Кафедра Сетевых Информационных Технологий и Сервисов

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

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

по теме:

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

Выполнила: студентка группы М091901(75)

Бармина Анна Владимировна

Проверил: Старший преподаватель Фатхулин Тимур Джалилевич

Москва, 2021

1 Цель работы

В данной лабораторной работе необходимо построить логическую модель данных в соответствии со стандартом IDEF1X и построить физическую модель.

2 Задание

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

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

IDEF1X;

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

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

3 Краткая теория

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

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

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

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

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

2

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

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

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

4 Выполнение лабораторной работы

Особенности диалекта SQL в СУБД MySQL рассмотрю на примере учебной базы данных book Интернет-магазина, торгующего компьютерной литературой. В базе данных должна поддерживаться следующая информация:

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

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

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

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

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

Каталог;

Книга;

Клиент;

Заказ.

Далее, определю атрибуты для каждой сущности:

3

Каталог (Код каталога, Наименование каталога);

Книга (Код книги, Название книги, Автор книги, Издательство, Год издания, Цена книги, Имеющееся количество);

Клиент (Код клиента, Имя клиента, Отчество клиента, Фамилия клиента, Телефон клиента, Номер карты, E-mail клиента, Статус клиента);

Заказ (Код заказа, Дата и время заказа, Заказанное количество).

Определю отношения между сущностями:

Отношение между сущностями «Каталог» и «Книга» представлена как связь «один-ко-многим», так как один каталог может включать много книг;

Отношение между таблицами «Книга» и «Заказ» представлена как связь «один-ко-многим», так как одна книга может присутствовать во многих заказах покупателей;

Отношение между таблицами «Клиент» и «Заказ» представлена как связь «один-ко-многим», так как один пользователь может сделать много заказов.

Определю идентифицирующие атрибуты:

Каталог – «Код каталога», так как он определяет запись о каталоге;

Книга – «Код книги», так как он определяет запись о книге;

Клиент – «Код клиента», так как он определяет запись о клиенте;

Заказ – «Код заказа», так как он определяет запись о заказе.

Определю идентификаторы N-связной сущности. Учитывая отношения между таблицами можно выделить следующие идентификаторы:

Код каталога (FK) в сущности «Книга»;

Код книги (FK) и Код клиента (FK) в сущности «Заказ».

Далее составлю логическую модель данных предметной области.

4

Логическая модель данных

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

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

5

КАТАЛОГ/1

Код каталога

1,1 СОДЕРЖИТ

Наименование каталога

КЛИЕНТ/3

Код клиента

Фамилия клиента

Имя клиента Отчество клиента 0,1 РАЗМЕЩАЕТ

Телефон клиента Номер карты клиента E-mail клиента Статус клиента

КНИГА/2

Код книги

Название книги Автор книги

1,N Издательство

Год издания Цена книги

Имеющееся количество Код каталога (FK)

0,М

ПРИСУТСВУЕТ

1,N

ЗАКАЗ/4

Код заказа

1,N

Дата и время заказа

Заказанное количество

 

Код клиента (FK)

 

Код клиента (FK)

Рисунок 2 – Логическая модель данных предметной области (увеличенная)

Преобразование в физическую модель данных

Рассмотрю общие принципы преобразования:

Каждая сущность преобразуется в таблицу. Имя сущности становится именем таблицы;

Каждый атрибут становится столбцом таблицы с тем же именем, уточняется тип данных, выбирается более точный формат;

Идентифицирующие атрибуты сущности превращаются в первичный ключ таблицы.

Формула для преобразования: R1 (И1, А1), где R1 – таблица, И1 – первичный ключ таблицы, А1 – столбец таблицы.

6

Преобразую каждую сущность и их атрибуты:

1) Каталог

Сущность «Каталог» преобразуется в соответствующую таблицу «Catalogs». Атрибут «Наименование каталога» преобразуется в соответствующий столбец «cat_name». Идентифицирующий атрибут «Код каталога» преобразуется в соответствующий первичный ключ «cat_ID». Следовательно, получаю:

Catalogs (cat_ID, cat_name).

2) Книга

Сущность «Книга» преобразуется в соответствующую таблицу «Books». Атрибуты «Название книги», «Автор книги», «Издательство», «Год издания», «Цена книги» и «Имеющееся количество» преобразуются в соответствующие столбцы «b_name», «b_author», «b_publisher» «b_year», «b_price» и «b_count».

Идентифицирующий атрибут «Код книги» преобразуется в соответствующий первичный ключ «book_ID». Идентификатор 1-связной сущности «Код каталога» преобразуется в соответствующий внешний ключ «b_cat_ID». Следовательно, получаю:

Books (book_ID, b_name, b_author, b_publisher, b_year, b_price, b_count, b_cat_ID).

3) Клиент

Сущность «Клиент» преобразуется в соответствующую таблицу «Users». Атрибуты «Имя», «Отчество», «Фамилия», «Телефон», «Номер карты», «E- mail клиента» и «Статус клиента» преобразуются соответствующие в столбцы

«u_name», «u_patronymic», «u_surname», «u_phone», «u_card», «u_email» и

«u_status». Идентифицирующий атрибут «Код клиента» преобразуется в соответствующий первичный ключ «user_ID». Следовательно, получаю:

7

Users (user_ID, u_name, u_patronymic, u_surname, u_phone, u_card, u_email, u_status).

4) Заказ

Сущность «Заказ» преобразуется в соответствующую таблицу «Orders». Атрибуты «Дата и время заказа» и «Заказанное количество преобразуются в соответствующие столбцы «o_time» и «o_number». Идентифицирующий атрибут «Код заказа» преобразуется в соответствующий первичный ключ «order_ID». Идентификаторы 2-связной сущности «Код книги» и «Код клиента» преобразуются в соответствующие внешние ключи «o_book _ID» и «o_user_ID». Следовательно, получаю:

Orders (order_ID, o_time, o_number, o_book _ID, o_user_ID).

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

и 4.

Рисунок 3 – Физическая модель данных

8

 

 

BOOKS

CATALOGS

 

Book_ID: INTEGER

Cat_ID: INTEGER

 

 

 

b_name: VARCHAR (100)

 

 

 

b_author: VARCHAR (100)

 

 

CAT_name: VARCHAR (100)

 

b_publisher: VARCHAR (100)

 

b_year: DATE

 

 

b_price: DECIMAL(7,2)

 

 

b_count: INTEGER

 

 

 

 

b_cat_ID: INTEGER (FK)

 

 

 

user_ID: INTEGER

u_name: VARCHAR (20) u_patronymic: VARCHAR (20) u_surname: VARCHAR (20) u_phone: VARCHAR (12) u_card: INTEGER

u_email: VARCHAR (20) u_status: ENUM()

ORDERS

ORDER_ID: INTEGER

o_time: DATETIME

o_number: INTEGER

o_user_ID: INTEGER (FK)

o_book_ID: INTEGER (FK)

Рисунок 4 – Физическая модель данных (увеличенная)

Описание физической модели данных

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

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

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

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

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

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

cat_ID – уникальный код каталога (тип INTEGER, так как код каталога может принимать только целые числа);

cat_name – имя каталога (тип VARCHAR – строковая переменная, так как буду записывать названия каталогов).

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

9

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

book_ID – уникальный код книги (тип INTEGER, так как код книги может принимать только целые числа);

b_name – название книги (тип VARCHAR – строковая переменная, так как буду записывать названия книг);

b_author – автор книги (тип VARCHAR – строковая переменная, так как буду записывать ФИО авторов книг);

b_publisher – издательство книги (тип VARCHAR – строковая переменная, так как буду записывать название издательства книги);

b_year – год издания (тип YEAR, так как буду записывать годы издания книг);

b_price – цена книги (тип DECIMAL, так как буду записывать стоимость книг числами используя также дробную часть);

b_count – количество книг на складе (тип INTEGER, так как количество книг может принимать только целые числа);

b_cat_ID – код каталога из таблицы catalogs (тип INTEGER, так как тот же тип переменных имеет столбец cat_ID в таблице catalogs).

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

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

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

user_ID – уникальный код покупателя (тип INTEGER, так как код получателя может принимать только целые числа);

10