Файл: Проектирование базы данных с использованием erтехнологии.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 18.03.2024

Просмотров: 31

Скачиваний: 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).

  1. Клиент



Сущность «Клиент» преобразуется в соответствующую таблицу «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).

  1. Заказ



Сущность «Заказ» преобразуется в соответствующую таблицу «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 Выводы


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