Файл: Проектирование базы данных с использованием erтехнологии.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 18.03.2024
Просмотров: 39
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ключ «book_ID». Идентификатор 1-связной сущности «Код каталога» преобразуется в соответствующий внешний ключ «b_cat_ID». Следовательно, получаю:
Books (book_ID, b_name, b_author, b_publisher, b_year, b_price, b_count,
b_cat_ID).
Сущность «Клиент» преобразуется в соответствующую таблицу «Users». Атрибуты «Имя», «Отчество», «Фамилия», «Телефон», «Номер карты», «E- mail клиента» и «Статус клиента» преобразуются соответствующие в столбцы
«u_name», «u_patronymic», «u_surname», «u_phone», «u_card», «u_email» и
«u_status». Идентифицирующий атрибут «Код клиента» преобразуется в соответствующий первичный ключ «user_ID». Следовательно, получаю:
Users (user_ID, u_name, u_patronymic, u_surname, u_phone, u_card,
u_email, u_status).
Сущность «Заказ» преобразуется в соответствующую таблицу «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 – Физическая модель данных
BOOKS
Рисунок 4 – Физическая модель данных (увеличенная)
База
данныхbookсостоит из четырех таблиц:
Таблица catalogsсостоит из двух полей:
Оба поля должны быть снабжены атрибутом NOTNULL, поскольку неопределенное значение для них недопустимо.
Таблица booksсостоит из восьми полей:
Цена книги b_priceи количество экземпляров на складе b_countмогут иметь атрибут NULL. На момент доставки часто неизвестны количество товара и его цена, но отразить факт наличия товара в прайс-листе необходимо.
Поле b_cat_ID устанавливает связь между таблицами catalogs и books. Это поле должно быть объявлено как внешний ключ (FK) с правилом каскадного удаления и обновления. Обновление таблицы catalogs вызовет автоматическое обновление таблицы books. Удаление каталога в таблице catalogs приведет к автоматическому удалению всех записей в таблице books, соответствующих каталогу.
Таблица usersсостоит из восьми полей:
Статус покупателя представлен полем типа ENUM, которое может
принимать одно из четырех значений:
Поля u_card, u_phone и u_email могут быть снабжены атрибутом NULL. Остальные поля должны получить атрибут NOTNULL.
Таблица ordersвключает пять полей:
Поля таблицы orders должны быть снабжены атрибутом NOT NULL, т. к. при совершении покупки вся информация должна быть занесена в таблицу.
В таблице orders устанавливается связь с таблицами users (за счет поля o_user_ID) и books (за счет поля o_book_ID). Эти поля объявлены как внешние ключи (FK)
с правилом каскадного удаления и обновления. Обновление таблиц users и books приведет к автоматическому обновлению таблицы orders. Удаление любого пользователя в таблице users приведет к автоматическому удалению всех записей в таблице orders, соответствующих этому пользователю.
В ходе данной лабораторной работы была описана предметная область будущей базы данных, описаны сущности, атрибуты, отношения и была построена логическая и физическая модели данных. Было произведено описание физической модели данных. В результате проделанной работы можно сделать вывод о том, что база данных будет состоять из четырёх таблиц.
Books (book_ID, b_name, b_author, b_publisher, b_year, b_price, b_count,
b_cat_ID).
-
Клиент
Сущность «Клиент» преобразуется в соответствующую таблицу «Users». Атрибуты «Имя», «Отчество», «Фамилия», «Телефон», «Номер карты», «E- mail клиента» и «Статус клиента» преобразуются соответствующие в столбцы
«u_name», «u_patronymic», «u_surname», «u_phone», «u_card», «u_email» и
«u_status». Идентифицирующий атрибут «Код клиента» преобразуется в соответствующий первичный ключ «user_ID». Следовательно, получаю:
Users (user_ID, u_name, u_patronymic, u_surname, u_phone, u_card,
u_email, u_status).
-
Заказ
Сущность «Заказ» преобразуется в соответствующую таблицу «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 – Физическая модель данных
BOOKS
Рисунок 4 – Физическая модель данных (увеличенная)
Описание физической модели данных
База
данныхbookсостоит из четырех таблиц:
-
catalogs– список торговых каталогов; -
books– список предлагаемых книг; -
users– список зарегистрированных пользователей магазина; -
orders– список заказов (осуществленных сделок).
Таблица catalogsсостоит из двух полей:
-
cat_ID– уникальный код каталога (тип INTEGER, так как код каталога может принимать только целые числа); -
cat_name– имя каталога (тип VARCHAR – строковая переменная, так как буду записывать названия каталогов).
Оба поля должны быть снабжены атрибутом NOTNULL, поскольку неопределенное значение для них недопустимо.
Таблица 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, так как код получателя может принимать только целые числа); -
u_name – имя покупателя (тип VARCHAR – строковая переменная, так как буду записывать имя покупателя); -
u_patronymic– отчество покупателя (тип VARCHAR – строковая переменная, так как буду записывать отчество покупателя); -
u_surname – фамилия покупателя (тип VARCHAR – строковая переменная, так как буду записывать фамилию покупателя); -
u_phone – телефон покупателя (тип VARCHAR – строковая переменная, так как буду записывать номер телефона покупателя (с символами), если имеется); -
u_card – номер карты покупателя (тип INTEGER, так как номер карты покупателя может принимать только целые числа); -
u_email – e-mail покупателя (тип VARCHAR – строковая переменная, так как буду записывать e-mail покупателя (с символами), если имеется если имеется); -
u_status– статус покупателя.
Статус покупателя представлен полем типа ENUM, которое может
принимать одно из четырех значений:
-
active– авторизованный покупатель, который может осуществлять покупки через Интернет; -
passive – неавторизованный покупатель (значение по умолчанию), который осуществил процедуру регистрации, но не подтвердил ее и пока не может осуществлять покупки через Интернет, однако ему доступны каталоги для просмотра; -
lock – заблокированный покупатель, не может осуществлять покупки и просматривать каталоги магазина; -
gold– активный покупатель с хорошей кредитной историей, которому предоставляется скидка при следующих покупках в магазине.
Поля u_card, u_phone и u_email могут быть снабжены атрибутом NULL. Остальные поля должны получить атрибут NOTNULL.
Таблица ordersвключает пять полей:
-
order_ID – уникальный номер сделки (тип INTEGER, так как номер сделки может принимать только целые числа); -
o_user_ID – номер пользователя из таблицы users (тип INTEGER, так как тот же тип переменных имеет столбец user_IDв таблице users); -
o_book_ID – номер товарной позиции из таблицы books (тип INTEGER, так как тот же тип переменных имеет столбец book_IDв таблице books); -
o_time – время совершения сделки год издания (тип DATETIME, так как буду записывать точную дату и время совершения заказа); -
o_number– число приобретенных товаров (тип INTEGER, так как количество приобретённых книг у нас может принимать только целые числа).
Поля таблицы orders должны быть снабжены атрибутом NOT NULL, т. к. при совершении покупки вся информация должна быть занесена в таблицу.
В таблице orders устанавливается связь с таблицами users (за счет поля o_user_ID) и books (за счет поля o_book_ID). Эти поля объявлены как внешние ключи (FK)
с правилом каскадного удаления и обновления. Обновление таблиц users и books приведет к автоматическому обновлению таблицы orders. Удаление любого пользователя в таблице users приведет к автоматическому удалению всех записей в таблице orders, соответствующих этому пользователю.
5 Выводы
В ходе данной лабораторной работы была описана предметная область будущей базы данных, описаны сущности, атрибуты, отношения и была построена логическая и физическая модели данных. Было произведено описание физической модели данных. В результате проделанной работы можно сделать вывод о том, что база данных будет состоять из четырёх таблиц.