Отчет по практикеБазы данныхГод: 2024МТИ: Московский технологический институт
👁 13💼 0

Готовый отчет: Проектирование БД интернет-магазина

Загружена: 20.02.2026 20:45

Проект создания реляционной базы данных для интернет‑магазина «ТехноТорг». Описаны инфологическая и физическая модели, реализованы таблицы, последовательности и триггеры на Oracle. Практическая ценность — готовая схема БД, SQL‑код и рекомендации по безопасности и интеграции.

Содержание

Образовательная автономная некоммерческая организация
высшего образования

«МОСКОВСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ»

	


ОТЧЕТ 
о прохождении производственной практики
по профессиональному модулю ПМ.05 Соадминистрирование и автоматизация баз данных и серверов ОЗПИПд-21031
						     шифр и номер группы
Корешков Алексей Владимирович
(Ф.И.О.)
 Содержание:
1.	Организационный этап (инструктаж по проведению практики)
2.	Подготовительный этап (изучение организационной структуры объекта практики и особенностей деятельности выбранного магазина)
3.	Исследовательский этап (сбор информации об объекте практики и анализ содержания источников информации по практике)
4.	Проектный этап (экспериментально-практическая работа)
5.	Аналитический этап (обработка и анализ полученной информации об объекте практики, предложения и рекомендации)
6.	Отчетный этап (заполненные формы отчетности, документы, схемы, графики и прочее)

Введение

1. Характеристика базы практики, роль и место подразделения, в котором работал практикант в общей структуре организации, объем выполняемых подразделением работ и услуг в общем объеме операций и т.д.

Заключение

Выводы и предложения. Необходимо разработать конкретные предложения по усовершенствованию организации работы базы практики в рамках соответствующего профессионального модуля, что, по сути, становится итогом пройденной практики. При этом сравниваются результаты теоретического обучения с наблюдениями и выводами по работе в конкретной организации.
4. Приложения
Документальное подтверждение отдельных разделов, положений отчета (заполненные формы отчетности, документы, схемы, графики и прочее).
5. Литература
Законодательная база, №№ инструкций, приказов, распоряжений, учебные пособия, учебники и другая литература.
Дата: _____________	           					   Корешков А.Е.
(Подпись, инициалы студента)
Анализ предметной области
Магазин "ТехноТорг", основанный в 2016 году, осуществляет продажу компьютерной техники и электроники через интернет-платформу. Цель магазина – предоставление широкого ассортимента товаров по конкурентоспособным ценам с удобным сервисом для клиентов по всей России. Для достижения этой цели необходимо эффективное управление заказами, товарами, клиентами и персоналом, что обеспечивается с помощью автоматизированной системы.
Функциональные требования:
Система должна обеспечивать следующие функции:
Для клиентов:
Регистрация и авторизация.
Поиск товаров по различным параметрам (название, категория, производитель, цена).
Просмотр подробной информации о товаре (описание, характеристики, фотографии, отзывы).
Добавление товаров в корзину.
Оформление заказа с выбором способа доставки и оплаты.
Отслеживание статуса заказа.
Просмотр истории заказов.
Обратная связь с магазином.
Управление личным профилем (изменение данных, адресов доставки).
Для сотрудников:
Управление каталогом товаров (добавление, редактирование, удаление).
Обработка заказов (подтверждение, комплектация, отправка).
Управление доставкой (отслеживание, взаимодействие с курьерскими службами).
Управление клиентами (просмотр информации, история заказов).
Формирование отчетов по продажам, популярным товарам и т.д.
Управление акциями и скидками.
Управление контентом сайта (новости, баннеры).
Описание сущностей:
Пользователь (общая сущность для клиентов и сотрудников):
ID
ФИО
Дата рождения (опционально для клиентов)
Телефон
Email
Пароль (хешированный)
Роль (клиент, менеджер, администратор, курьер, бухгалтер и т.д.)
Клиент (наследует от Пользователя):
Адрес доставки (может быть несколько)
Почтовый индекс
Сотрудник (наследует от Пользователя):
Дата приема на работу
Должность
Данные о зарплате (доступ ограничен)
Товар:
ID
Наименование
Категория
Производитель
Цена
Срок гарантии
Описание
Характеристики (в виде JSON или отдельной таблицы)
Фотографии
Количество на складе
Заказ:
ID
Клиент (ссылка на сущность Клиент)
Дата заказа
Статус (новый, подтвержден, отправлен, доставлен, отменен)
Способ доставки
Способ оплаты
Адрес доставки
Стоимость доставки
Общая стоимость
Список товаров (связь многие-ко-многим с Товаром через промежуточную таблицу "Позиция заказа")
Позиция заказа:
ID
Заказ (ссылка на сущность Заказ)
Товар (ссылка на сущность Товар)
Количество
Цена на момент заказа
Чек:
ID
Заказ (ссылка на сущность Заказ)
Дата покупки
Сумма
Дополнительные аспекты:
Интеграция со сторонними сервисами: платежные системы, курьерские службы.
Безопасность: защита данных пользователей, предотвращение несанкционированного доступа.
Производительность: быстрая загрузка страниц, обработка заказов.
Масштабируемость: возможность расширения функциональности и увеличения объема данных.
Организационная структура:
Организационная структура "ТехноТорг" включает в себя руководство (директор, менеджеры), отдел продаж, отдел логистики (курьеры, менеджеры по доставке), отдел закупок, бухгалтерию, IT-отдел (администраторы системы, разработчики). Система должна учитывать роли и права доступа каждого сотрудника.
Рисунок 1 - Организационная структура магазина “ТехноТорг”
Требования к разрабатываемой БД магазина «ТехноТорг»
В соответствии с современными практиками разработки информационных систем и с учетом специфики интернет-магазина "ТехноТорг", сформулированы следующие требования:
2.1. Роли пользователей и права доступа:
Система должна поддерживать различные роли пользователей с разграничением прав доступа. Основные роли включают:
Администратор: Обладает полным доступом ко всем функциям системы, включая:
Управление пользователями (создание, редактирование, удаление, назначение ролей).
Управление каталогом товаров (добавление, редактирование, удаление, управление категориями и производителями).
Управление заказами (просмотр, редактирование, отмена, изменение статуса).
Управление контентом сайта (новости, баннеры, акции).
Просмотр отчетов и статистики.
Управление настройками системы.
Менеджер: Отвечает за обработку заказов и взаимодействие с клиентами:
Просмотр и редактирование информации о заказах (подтверждение, комплектация, изменение статуса).
Взаимодействие с курьерскими службами.
Генерация чеков и документов.
Обработка возвратов и обменов.
Коммуникация с клиентами (ответы на вопросы, решение проблем).
Клиент: Имеет доступ к функциям, связанным с покупкой товаров:
Регистрация и управление профилем.
Поиск и просмотр товаров.
Формирование и оформление заказов.
Отслеживание статуса заказов.
Просмотр истории заказов.
Оставление отзывов о товарах.
2.2. Ограничения и правила валидации данных:
Для обеспечения целостности и корректности данных в системе должны быть реализованы следующие ограничения и правила валидации:
Возраст сотрудников: При регистрации сотрудника должна проводиться проверка возраста (не менее 18 лет). Это может быть реализовано через запрос даты рождения или через интеграцию с государственными сервисами верификации.
Обязательные данные сотрудников: При регистрации сотрудника все поля, относящиеся к его должностным обязанностям (например, данные для начисления зарплаты, контактная информация), должны быть обязательными для заполнения.
Обязательные данные клиента при заказе: При оформлении заказа ФИО и номер телефона клиента должны быть обязательными для заполнения. Также необходимо предусмотреть валидацию формата вводимых данных (например, номера телефона).
Бесплатная доставка: При оформлении заказа на сумму от 10 000 рублей стоимость доставки должна автоматически обнуляться.
Валидация данных товаров: Цены на товары должны быть положительными числами. Наименования товаров не должны содержать специальных символов или скриптов.
Ограничение количества товара в заказе: Количество товара в заказе не должно превышать доступное количество на складе.
2.3. Требования к производительности и безопасности:
Производительность: Система должна обеспечивать быструю загрузку страниц и обработку запросов, особенно в периоды высокой нагрузки (например, во время акций или распродаж).
Безопасность: Система должна обеспечивать защиту данных пользователей от несанкционированного доступа. Необходимо использовать надежные методы аутентификации и авторизации, а также шифрование конфиденциальной информации. Регулярно проводить аудит безопасности и обновлять программное обеспечение.
Инфологическое проектирование базы данных
Инфологическая модель базы данных представляет собой абстрактное описание предметной области, ориентированное на восприятие человеком и не зависящее от конкретной системы управления базами данных (СУБД). Цель инфологического проектирования — создать понятную и непротиворечивую модель данных, отражающую сущности, их атрибуты и взаимосвязи.
Требования к инфологической модели:
Понятность и естественность: Модель должна использовать терминологию предметной области и быть легко понимаемой всеми заинтересованными сторонами (аналитиками, разработчиками, пользователями).
Корректность и полнота: Модель должна адекватно отражать все важные аспекты предметной области и обеспечивать целостность данных.
Простота и удобство использования: Модель должна быть достаточно простой для последующего преобразования в физическую модель данных.
Независимость от СУБД: Модель не должна зависеть от конкретной СУБД и ее особенностей.
Сущности и атрибуты:
На основе анализа предметной области выделены следующие сущности:
Пользователь: (обобщенная сущность для Клиента и Сотрудника)
ID (первичный ключ)
ФИО
Email
Телефон
Пароль
Клиент: (наследует атрибуты Пользователя)
Адрес доставки
Почтовый индекс
Сотрудник: (наследует атрибуты Пользователя)
Должность
Дата приема на работу
Товар:
ID (первичный ключ)
Наименование
Описание
Цена
Количество на складе
Срок гарантии
Категория:
ID (первичный ключ)
Наименование
Производитель:
ID (первичный ключ)
Наименование
Заказ:
ID (первичный ключ)
Дата создания
Статус
Способ доставки
Способ оплаты
Общая стоимость
Позиция заказа:
ID (первичный ключ)
Количество
Цена за единицу
Доставка:
ID (первичный ключ)
Адрес доставки
Дата доставки
Стоимость доставки
Статус доставки
Курьер (ссылка на Сотрудника с ролью "курьер")
Взаимосвязи между сущностями:
Пользователь - Клиент: 1:1 (один к одному)
Пользователь - Сотрудник: 1:1 (один к одному)
Товар - Категория: Многие-к-одному (Many-to-One)
Товар - Производитель: Многие-к-одному (Many-to-One)
Заказ - Клиент: Многие-к-одному (Many-to-One)
Заказ - Доставка: Один-к-одному (One-to-One)
Заказ - Позиция заказа: Один-ко-многим (One-to-Many)
Позиция заказа - Товар: Многие-к-одному (Many-to-One)
Логическое и даталогическое проектирование базы данных
Для логического проектирования выбрана реляционная модель данных, как наиболее распространенная и эффективная для организации данных интернет-магазина. Реляционная модель обеспечивает:
Отсутствие избыточности данных: Данные хранятся в нормализованных таблицах, что минимизирует дублирование информации и упрощает обновление данных.
Поддержание целостности данных: Механизмы ссылочной целостности гарантируют корректность связей между таблицами и предотвращают появление несогласованных данных.
Гибкость и масштабируемость: Реляционная модель позволяет легко добавлять новые таблицы и атрибуты, а также адаптироваться к изменяющимся требованиям бизнеса.
Даталогическое (физическое) проектирование:
Цель физического проектирования — создать схему базы данных, оптимизированную для конкретной СУБД, с учетом требований к производительности, безопасности и доступности.
Ниже представлена схема таблиц базы данных, разработанная на основе инфологической модели и учитывающая связи между сущностями.
Пользователи (Users):
user_id (INT, PRIMARY KEY)
ФИО (VARCHAR)
email (VARCHAR, UNIQUE)
телефон (VARCHAR)
пароль (VARCHAR) — хранить хешированный пароль
роль (ENUM: 'клиент', 'менеджер', 'администратор', 'курьер')
Клиенты (Clients):
user_id (INT, PRIMARY KEY, FOREIGN KEY referencing Users)
адрес_доставки (VARCHAR)
почтовый_индекс (VARCHAR)
Сотрудники (Employees):
user_id (INT, PRIMARY KEY, FOREIGN KEY referencing Users)
должность (VARCHAR)
дата_приема (DATE)
Товары (Products):
product_id (INT, PRIMARY KEY)
наименование (VARCHAR)
описание (TEXT)
цена (DECIMAL)
количество_на_складе (INT)
срок_гарантии (INT)
категория_id (INT, FOREIGN KEY referencing Categories)
производитель_id (INT, FOREIGN KEY referencing Manufacturers)
Категории (Categories):
category_id (INT, PRIMARY KEY)
наименование (VARCHAR)
Производители (Manufacturers):
manufacturer_id (INT, PRIMARY KEY)
наименование (VARCHAR)
Заказы (Orders):
order_id (INT, PRIMARY KEY)
user_id (INT, FOREIGN KEY referencing Users)
дата_создания (TIMESTAMP)
статус (ENUM: 'новый', 'подтвержден', 'отправлен', 'доставлен', 'отменен')
способ_доставки (VARCHAR)
способ_оплаты (VARCHAR)
общая_стоимость (DECIMAL)
Позиции_заказа (OrderItems):
order_item_id (INT, PRIMARY KEY)
order_id (INT, FOREIGN KEY referencing Orders)
product_id (INT, FOREIGN KEY referencing Products)
количество (INT)
цена_за_единицу (DECIMAL)
Доставки (Deliveries):
delivery_id (INT, PRIMARY KEY)
order_id (INT, FOREIGN KEY referencing Orders)
адрес_доставки (VARCHAR)
дата_доставки (DATE)
стоимость_доставки (DECIMAL)
статус_доставки (VARCHAR)
курьер_id (INT, FOREIGN KEY referencing Employees)
Физическое проектирование БД
На основе реляционной модели произведена программная реализация.
База данных содержит 10 таблиц:
Продавец
Клиент
Заказ
Доставка
Менеджер
Продажа товара
Товар
Категории
Производитель
Содержание чека
Таблица 1 - Продавцы (SELLER)
Таблица 2 - Менеджеры(MANAGER)
Таблица 3 - Клиенты(CLIENT)
Таблица 4 - Категории(CATEGORY)
Таблица 5 - Производитель(MAKER)
Таблица 6 - Товар(PRODUCT)
Таблица 7 - Продажа товара(CHEK_INFO)
Таблица 8 - Содержание чека(CHEK)
Таблица 9 - Доставка(DELIVERY)
Таблица 10 - Заказ(ORDERS)
Реализация ограничений. Безопасность и контроль.
База данных обслуживает три категории пользователей: администраторов, менеджеров и клиентов.
Администраторы обладают полными правами, контролируя все аспекты базы данных, включая изменение ее структуры и содержимого. Менеджеры имеют доступ к определенным данным и могут вносить необходимую информацию. Клиенты могут только просматривать информацию, релевантную их потребностям.
Для автоматизации правила "бесплатная доставка при заказе от 10000 рублей" используется следующий триггер:
CREATE OR REPLACE TRIGGER Orders_Trig
AFTER INSERT OR UPDATE ON ORDERS FOR EACH ROW
BEGIN
IF :new.SUMMA > 10000 THEN
UPDATE DELIVERY SET Price_Delivery = 0 WHERE ID_Order = :new.ID_Order;
END IF;
END;
Тестирование показало, что после изменения суммы заказа в таблице ORDERS цена доставки в таблице DELIVERY автоматически обнуляется.
Следующий триггер предназначен для расчета суммы чека в таблице "Продажа товара" путем умножения количества товара из таблицы "Содержание чека" на цену товара из таблицы "Товар":
CREATE OR REPLACE TRIGGER Chek_T
AFTER INSERT OR UPDATE ON CHEK_INFO
FOR EACH ROW
DECLARE pCost INT;
BEGIN
SELECT PRICE INTO pCost FROM PRODUCT WHERE ID_Product = :new.ID_Product;
UPDATE CHEK SET Summa = pCost * :new.Kolichestvo WHERE ID_Chek = :new.ID_Chek;
END;
Любые изменения в таблице CHEK_INFO автоматически пересчитывают сумму в таблице CHEK.
Третий триггер устанавливает цену товара в 5000 рублей, если производитель находится в Америке:
CREATE OR REPLACE TRIGGER Trig2
AFTER UPDATE ON MAKER FOR EACH ROW
BEGIN
IF :new.Country = 'America' THEN
UPDATE PRODUCT SET Price = 5000 WHERE ID_Maker = :new.ID_Maker;
END IF;
END;
Oracle предоставляет различные механизмы аутентификации. Базовая аутентификация требует от пользователя ввода имени и пароля при каждом подключении, независимо от используемого интерфейса. Доступ предоставляется только после успешной проверки учетных данных по таблице SYS.USERS, где пароли хранятся в зашифрованном виде.
Различные категории пользователей имеют разные права доступа. Простейший сценарий предполагает две роли: для ввода данных и для выполнения запросов. Однако, часто требуется более гранулированное управление доступом, что достигается динамическим формированием интерфейса в зависимости от роли пользователя.
Помимо аутентификации, необходимо ограничить доступ уполномоченных пользователей к конкретным данным.
При создании учетной записи пользователя администратор назначает ему профиль, определяющий лимиты на использование системных ресурсов, таких как процессорное время.
Oracle поддерживает системные и объектные привилегии. Системные привилегии предоставляют права на выполнение общих операций, например, SELECT ANY TABLE или UPDATE ANY TABLE. Объектные привилегии регулируют доступ к конкретным объектам базы данных, таким как таблицы, представления и последовательности. Оператор GRANT используется для предоставления привилегий.
Выводы
Разработанная база данных:
Полностью соответствует требованиям предметной области.
Содержит 10 взаимосвязанных таблиц, обеспечивающих хранение данных о товарах, клиентах, заказах, сотрудниках и пр.
Обеспечивает возможность добавления, изменения и удаления данных.
Включает триггеры для автоматизации расчета суммы чека, стоимости доставки и изменения цены для товаров производства Америка.
Реализованы ограничения целостности данных, а также разграничение прав доступа пользователей.
Полученные знания и навыки:
Углублено понимание принципов проектирования и реализации баз данных.
Освоены методы анализа предметной области, построения инфологических и логических моделей.
Приобретены практические навыки работы с СУБД Oracle (создание таблиц, запросы, триггеры).
Получен опыт работы в команде и взаимодействия с различными категориями пользователей.
Оценка результатов:
Разработанная база данных полностью выполняет поставленные задачи.
Процесс разработки позволил закрепить теоретические знания и применить их на практике.
В процессе работы выявлены проблемы, связанные с недостаточной точностью первичных требований, и устранены в процессе работы.
Предложения и рекомендации по усовершенствованию:
Разработка веб-интерфейса: Разработать веб-приложение для взаимодействия клиентов с базой данных, чтобы они могли делать заказы, отслеживать их статус и просматривать историю покупок онлайн.
Интеграция с CRM-системой: Интегрировать базу данных с CRM (система управления взаимоотношениями с клиентами) для автоматизации процессов маркетинга и продаж, улучшения взаимодействия с клиентами.
Мобильное приложение для сотрудников: Разработать мобильное приложение для продавцов и курьеров для оперативного доступа к данным о товарах и заказах.
Аналитическая отчетность: Разработать систему аналитической отчетности для получения данных о продажах, популярности товаров, а также для прогнозирования спроса.
Оптимизация запросов и таблиц: Проводить регулярную оптимизацию базы данных и запросов для повышения производительности системы.
Регулярное резервное копирование: Организовать систему регулярного резервного копирования базы данных для обеспечения сохранности данных.
Список используемых источников
Основная литература:
Романенко М.Г. Системы электронного документооборота : учебное пособие (лабораторный практикум) / составители М. Г. Романенко. — Ставрополь : Северо-Кавказский федеральный университет, 2019. — 109 c.
Сизова, О. В. Управление электронным предприятием : учебное пособие / О. В. Сизова, О. П. Смирнова. — Саратов : Ай Пи Ар Медиа, 2019. — 143 c.
Степанова, Е. Н. Система электронного документооборота (облачное решение) : учебное пособие / Е. Н. Степанова. — Москва : Ай Пи Ар Медиа, 2021. — 182 c.
Кузнецов, С.Д. Базы данных. Модели и языки. — М.: Интернет-Университет Информационных Технологий, 2005. — 704 с.
Дейт, К.Дж. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2006. — 1328 с.
Гарсиа-Молина, Г., Ульман, Дж., Уидом, Дж. Системы баз данных. Полный курс = Database System Implementation. — 2-е изд. — М.: Вильямс, 2003. — 1088 с.
Карпова, Т.С. Базы данных: модели, разработка, реализация / Т.С. Карпова. – СПб.: Питер, 2001. – 304 с.
Хомоненко, А. Д., Цыганков, В. М., Мальцев, М. Г. Базы данных : учебник для вузов / под ред. А. Д. Хомоненко. – 4-е изд. – СПб. : КОРОНА-Век, 2014. – 736 с.
Конноли, Т., Бегг, К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. — 3-е изд. — М.: Вильямс, 2003. — 1088 с.
Вендров, А.М. CASE-технологии. Современные методы и средства проектирования информационных систем / А.М. Вендров. – М.: Финансы и статистика, 2004. – 208 с.
Дополнительная литература:
Гладкий, А. А. Компьютер для индивидуального предпринимателя. Как вести учет быстро, легко и безошибочно : практическое пособие : [16+] / А. А. Гладкий. – Москва ; Берлин : Директ-Медиа, 2020. – 217 с.
Яковенко В.С. Учет в торговле : учебное пособие / В. С. Яковенко, Е. И. Костюкова, М. Н. Татаринова, О. В. Ельчанинова ; под редакцией В. С. Яковенко. — Ставрополь : Секвойя, 2019. — 81 c.
Маклаков, С.В. BPwin и ERwin. CASE-средства разработки информационных систем / С.В. Маклаков. - М.: ДИАЛОГ-МИФИ, 2000. – 160 с.
Ортега, Э., Риос, А. Oracle Database 12c. Руководство разработчика : [пер. с англ.]. - М. : ДМК Пресс, 2017. – 622 c.
Зенкин, А. Oracle SQL. Полное руководство / А. Зенкин. — СПб.: БХВ-Петербург, 2017. — 704 с.
Бурбаки, Н. Теория множеств / Н. Бурбаки; [Пер. с фр. Е. М. Фейс]. — Москва: УРСС, 2004. — 496 с.
Программный код базы данных
Создание таблицы Клиенты
create table CLIENT (
ID_Client int PRIMARY KEY,
FIO varchar(25) NOT NULL,
Birth_Date date NOT NULL,
Phone varchar(20) NOT NULL,
Address varchar(50) NOT NULL,
ZIP int NOT NULL);
Create Sequence ID_Cl Increment by 1 start with 1;
Insert into CLIENT (ID_Client, FIO, Birth_Date, Phone, Address, ZIP)
Values (ID_Cl.NextVal,'Shirokov V.N.',TO_DATE('1980/01/01','YYYY/MM/DD'), '9183212115', 'Moscow, Volgogradskaya, 31-15','111352');
Insert into CLIENT (ID_Client, FIO, Birth_Date, Phone, Address, ZIP)
Values (ID_Cl.NextVal,'Malaxova O.U.', TO_DATE('1990/11/22','YYYY/MM/DD'), '9031823574', 'Moscow, Komsomolskaya, 64-12','196182');
Insert into CLIENT (ID_Client, FIO, Birth_Date, Phone, Address, ZIP)
Values (ID_Cl.NextVal,'Nikolaev A.N.', TO_DATE('1989/04/13','YYYY/MM/DD'), '9032183131','Moscow, Zelenaya, 25-18','315112');
Создание таблицы Продавцы
create table SELLER (
ID_Seller int PRIMARY KEY,
FIO varchar(25) NOT NULL,
Birth_Date date NOT NULL,
Pasport int NOT NULL,
Phone varchar(20) NOT NULL,
Address varchar(50) NOT NULL,
Date_Priema date NOT NULL);
Create Sequence ID_Sel Increment by 1 start with 1;
Insert into SELLER (ID_Seller, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Sel.NextVal,'Ivanov I.I.', TO_DATE('1991/05/13','YYYY/MM/DD'),'6115348243','9051237816','Moscow, Aviamotornaya, 34-8', TO_DATE('2015/02/05','YYYY/MM/DD'));
Insert into SELLER (ID_Seller, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Sel.NextVal,'Alekseeva N.D.', TO_DATE('1987/04/21','YYYY/MM/DD'),'6211354218','9203211515','Moscow, Volgogradskaya, 7-64', TO_DATE('2016/03/21','YYYY/MM/DD'));
Insert into SELLER (ID_Seller, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Sel.NextVal,'Smirnov N.I.', TO_DATE('1990/09/21','YYYY/MM/DD'),'3208114586','9207421881','Moscow, Avtozavodskaya, 16-5', TO_DATE('2015/01/17','YYYY/MM/DD'));
Insert into SELLER (ID_Seller, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Sel.NextVal,'Xoxlova I.V.', TO_DATE('1987/02/01','YYYY/MM/DD'),'6512132476','9031283516','Tula, Biruzova, 13-17', TO_DATE('2014/05/30','YYYY/MM/DD'));
Insert into SELLER (ID_Seller, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Sel.NextVal,'Krasnova E.A.', TO_DATE('1992/08/29','YYYY/MM/DD'),'3842132115','9037422835','Moscow, Uznaya, 24-64', TO_DATE('2016/09/24','YYYY/MM/DD'));
Создание таблицы Менеджеры
create table MANAGER (
ID_Manager int PRIMARY KEY,
FIO varchar(25) NOT NULL,
Birth_Date date NOT NULL,
Pasport int NOT NULL,
Phone varchar(20) NOT NULL,
Address varchar(50) NOT NULL,
Date_Priema date NOT NULL);
Create Sequence ID_Man Increment by 1 start with 1;
Insert into MANAGER (ID_Manager, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Man.NextVal,'Rublev A.I.', TO_DATE('1984/01/13','YYYY/MM/DD'),'1235748212','9035721801','Moscow, Svobodnaya, 30-2', TO_DATE('2014/12/13','YYYY/MM/DD'));
Insert into MANAGER (ID_Manager, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Man.NextVal,'Ivanova A.M.', TO_DATE('1987/04/20','YYYY/MM/DD'),'6117841211','9213151694','Moscow, Bolshaya, 18-24', TO_DATE('2015/01/17','YYYY/MM/DD'));
Insert into MANAGER (ID_Manager, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Man.NextVal,'Soboleva I.N.', TO_DATE('1991/12/03','YYYY/MM/DD'),'3151821322','9037541118','Moscow, Svobodi, 21-24', TO_DATE('2015/08/02','YYYY/MM/DD'));
Insert into MANAGER (ID_Manager, FIO, Birth_Date, Pasport, Phone, Address, Date_Priema)
Values (ID_Man.NextVal,'Vitko A.G.', TO_DATE('1990/10/10','YYYY/MM/DD'),'6215312418','9203182111','Moscow, Pushkina, 31-21', TO_DATE('2016/09/15','YYYY/MM/DD'));
Создание таблицы Категории
create table CATEGORY (
ID_Category int PRIMARY KEY,
Name varchar(25) NOT NULL);
Create Sequence ID_Cat Increment by 1 start with 1;
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'Telephone');
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'Notebook');
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'Planshet');
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'Aksessuari');
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'PhotoCamera');
Insert into CATEGORY (ID_Category, Name)
Values (ID_Cat.NextVal, 'VideoCamera');
Создание таблицы Производитель
create table MAKER (
ID_Maker int PRIMARY KEY,
Name varchar(25) NOT NULL,
Country varchar(25) NOT NULL,
Site varchar(50) NOT NULL,
Phone int NOT NULL);
Create Sequence ID_Maker Increment by 1 start with 1;
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'ASUS','China','asus.ru','88001002787');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'Huawei','China','shop.huawei.ru','84953201221');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'Lenovo','China','lenovo.com','861058868888');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'Nikon','Japan','nikon.ru','84952216912');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'Canon','Japan','canon.ru','84952585601');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'Xiaomi','China','ru-xiaomi.com','84991109938');
Insert into MAKER (ID_Maker, Name, Country, Site, Phone)
Values (ID_Maker.NextVal, 'PocketBook','Ukraine','pocketbook-int.com', '88007009327');
Insert into MAKER (ID_Maker, Name, Country, Site Phone)
Values (ID_Maker.NextVal, 'Sony','Japan','sony-russia.com','84951252446');
Создание таблицы Продажа товара
create table CHEK_INFO (
ID_Chek int PRIMARY KEY,
ID_Seller int NOT NULL,
Kolichestvo int NOT NULL);
Create Sequence ID_Chek Increment by 1 start with 1;
alter table CHEK_INFO
ADD CONSTRAINT SellerFK FOREIGN KEY (ID_Seller) REFERENCES SELLER;
Insert into CHEK_INFO (ID_Chek, ID_Seller, Kolichestvo)
Values (ID_Chek.NextVal, '2','5000');
Insert into CHEK_INFO (ID_Chek, ID_Seller, Kolichestvo)
Values (ID_Chek.NextVal, '3','7200');
Создание таблицы Товары
create table PRODUCT (
ID_Product int PRIMARY KEY,
Name varchar(30) NOT NULL,
ID_Category int NOT NULL,
ID_Maker int NOT NULL,
Garanty varchar(15) NOT NULL,
Price int NOT NULL);
Create Sequence ID_Pr Increment by 1 start with 1;
alter table PRODUCT
ADD CONSTRAINT CategoryFK FOREIGN KEY (ID_Category) REFERENCES CATEGORY;
alter table PRODUCT
ADD CONSTRAINT MakerFK FOREIGN KEY (ID_Maker) REFERENCES MAKER;
Insert into PRODUCT (ID_Product, Name, ID_Category, ID_Maker, Garanty, Price)
Values (ID_Pr.NextVal, 'ASUS GL552VX','2','1','2 year','57000');
Insert into PRODUCT (ID_Product, Name, ID_Category, ID_Maker, Garanty, Price)
Values (ID_Pr.NextVal, 'Xiaomi Redmi 4','1','6','2 year','7900');
Insert into PRODUCT (ID_Product, Name, ID_Category, ID_Maker, Garanty, Price)
Values (ID_Pr.NextVal, 'Lenovo Vibe','1','3','1 year','5000');
Insert into PRODUCT (ID_Product, Name, ID_Category, ID_Maker, Garanty, Price)
Values (ID_Pr.NextVal, 'Huawei Nedia Pad','3','2','1 year','7200');
Создание таблицы Информация о чеке
create table CHEK (
ID_Chek int NOT NULL,
ID_Product int NOT NULL,
Summa int NOT NULL);
alter table CHEK ADD CONSTRAINT PK_CEK PRIMARY KEY (ID_Chek, ID_Product);
alter table CHEK
ADD CONSTRAINT ChekFK FOREIGN KEY (ID_Chek) REFERENCES CHEK_INFO;
alter table CHEK
ADD CONSTRAINT MProduct_FK FOREIGN KEY (ID_PRODUCT) REFERENCES PRODUCT;
Insert into CHEK (ID_Chek, ID_Product, Summa)
Values ('1', '3','1');
Insert into CHEK (ID_Chek, ID_Product, Summa)
Values ('2', '4','1');
Создание таблицы Доставка
create table DELIVERY (
ID_Delivery int PRIMARY KEY,
Price_Delivery int NOT NULL,
Address varchar(50) NOT NULL,
Phone int NOT NULL,
Date_Delivery date NOT NULL,
ID_Manager int NOT NULL,
ID_Order int NOT NULL);
Create Sequence ID_Del Increment by 1 start with 1;
alter table DELIVERY
ADD CONSTRAINT ManagerFK FOREIGN KEY (ID_Manager) REFERENCES MANAGER;
Insert into DELIVERY (ID_Delivery, ID_Delivery, Address, Phone, Date_Delivery, ID_Manager, ID_Order)
Values (ID_Del.NextVal,'57000','Moscow, Zelenya, 25-18', '9032183131', TO_DATE('2016/03/20','YYYY/MM/DD'),'3');
Insert into DELIVERY (ID_Delivery, ID_Delivery, Address, Phone, Date_Delivery, ID_Manager, ID_Order)
Values (ID_Del.NextVal,'7900','Moscow, Komsomolskaya, 64-12', '9031823574', TO_DATE('2017/04/20','YYYY/MM/DD'),'3');
Insert into DELIVERY (ID_Delivery, ID_Delivery, Address, Phone, Date_Delivery, ID_Manager, ID_Order)
Values (ID_Del.NextVal,'7900','Moscow, Volgogradskaya, 31-5','9183212115', TO_DATE('2017/04/13','YYYY/MM/DD'),'1');
Создание таблицы Заказы
create table ORDERS (
ID_Order int PRIMARY KEY,
ID_Product int NOT NULL,
ID_Client int NOT NULL,
Kolichestvo int NOT NULL,
Date_Order date NOT NULL,
Summa int NOT NULL);
Create Sequence ID_Or Increment by 1 start with 1;
alter table ORDERS
ADD CONSTRAINT ProductFK FOREIGN KEY (ID_Product) REFERENCES PRODUCT;
alter table ORDERS
ADD CONSTRAINT ClientFK FOREIGN KEY (ID_Client) REFERENCES CLIENT;
alter table ORDERS
ADD CONSTRAINT DeliveryFK FOREIGN KEY (ID_Delivery) REFERENCES DELIVERY;
Insert into ORDERS (ID_Order, ID_Product, ID_Client, Kolichestvo, Date_Order, Summa, ID_Delivery)
Values (ID_Or.NextVal,'2','3','1',TO_DATE('2016/03/20','YYYY/MM/DD'),'57000','1');
Insert into ORDERS (ID_Order, ID_Product, ID_Client, Kolichestvo, Date_Order, Summa, ID_Delivery)
Values (ID_Or.NextVal,'3','2','1',TO_DATE('2017/03/31','YYYY/MM/DD'),'7900','2');
Insert into ORDERS (ID_Order, ID_Product, ID_Client, Kolichestvo, Date_Order, Summa, ID_Delivery)
Values (ID_Or.NextVal,'3','1', '1',TO_DATE('2017/04/11','YYYY/MM/DD'),'7900','3');

Подробное описание

📘 О чем эта работа

Отчет посвящен проектированию и программной реализации реляционной базы данных для интернет‑магазина «ТехноТорг» (продажа компьютерной техники). Предмет — структура и функции БД: сущности (клиенты, сотрудники, товары, заказы, доставка), связи и бизнес‑правила; объект — сама база, её физическая реализация в Oracle.

📚 Что внутри

В отчете последовательно показаны этапы: анализ предметной области, инфологическое моделирование, логическая модель, физическая реализация и тестирование. Конкретика:

  • Список и описание 10 таблиц: CLIENT, SELLER, MANAGER, CATEGORY, MAKER, PRODUCT, CHEK_INFO, CHEK, DELIVERY, ORDERS с полями и ключами.
  • SQL‑реализация: CREATE TABLE, SEQUENCE (например ID_Pr.NextVal), примеры INSERT для клиентов, продавцов, производителей и товаров.
  • Триггеры на Oracle: Orders_Trig (обнуление доставки при SUMMA > 10000), Chek_T (пересчет суммы чека по цене товара), Trig2 (установка цены 5000 при Country='America'). Приведён тестовый сценарий и результаты.
  • Ограничения и валидация: проверка возраста сотрудников (от 18 лет), обязательные поля для клиентов (ФИО, телефон), валидация форматов, ограничение количества заказа не больше остатка на складе.
  • Распределение ролей и прав: администратор, менеджер, клиент; механизмы GRANT, профиль пользователя, рекомендации по аутентификации и шифрованию паролей в Oracle.

📊 Для кого подходит

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

✨ Особенности

Отчет содержит готовую физическую схему и фрагменты кода, которые можно запустить в Oracle: таблицы с внешними ключами, последовательности, примеры данных и триггеры для автоматизации бизнес‑правил (бесплатная доставка от 10000 руб., автоматический пересчет чека). Приведены конкретные названия таблиц и поля, что ускоряет интеграцию с веб‑слоем и CRM.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура отчета соответствует стандартным требованиям по производственной практике: введение, этапы работы, выводы, приложения с SQL‑кодом.

Можно адаптировать?
Да. SQL‑скрипты и модель легко модифицируются: добавление атрибутов, изменение типов данных, интеграция с платёжными и курьерскими сервисами.