Загрузил Radrigo Gomez

бд Торговая компания вар 19

реклама
Содержание
Введение ............................................................................................................................... 2
1. Обоснование концептуальной модели базы данных ................................................... 4
2. Выполнение нормализации базы данных ..................................................................... 6
3. Конструирование таблиц базы данных и заполнение полей ...................................... 8
4. Оформление схемы данных.......................................................................................... 12
5. Конструирование запросов к базе данных .................................................................. 13
6. Разработка форм базы данных ..................................................................................... 19
7. Разработка отчета .......................................................................................................... 21
Заключение......................................................................................................................... 22
Список использованных источников. ............................................................................. 23
Введение
Современный уровень развития информационных и телекоммуникационных
технологий позволяет использовать информационные системы, созданные на их
основе
в
промышленных
компаниях,
государственных
и
муниципальных
учреждениях, организациях местного самоуправления и т.д. С их помощью
автоматизируется хозяйственная деятельность и бизнес-процессы, упрощается
планирование, решаются управленческие задачи.
Одной из основополагающих частей информационных систем является база
данных, в которой накапливается информация. В настоящее время рынок систем
управления базами данных (СУБД) весьма велик, существуют решения разной
степени распределенности, вычислительной мощности, адаптированности к разным
платформам. Наиболее распространенными на сегодняшний день являются такие
СУБД как MySQL, PostgreSQL, MS SQL Server, SQLite, Oracle Database, Firebird.
В данной работе будут смоделированы основные этапы создании базы данных
торговой компании: описание предметной области, создание концептуальной и
логической модели, физическое проектирование базы данных, наполнение
тестовыми данными, разработка основных запросов к базе данных.
В качестве СУБД в работе используется MS SQL Server 2008, который при
невысоких аппаратных требованиях обладает значительной вычислительной
мощностью, позволяющей строить на его основе распределенные информационные
системы с большой нагрузкой. Также MS SQL Server 2008 обладает всеми
средствами для создания и обеспечения работоспособности базы данных,
поддерживает визуальную технологию создания объектов базы данных, стандарт
языка SQL.
В данной работе будет рассматриваться модель «Торговая компания», которая
должна содержать информацию о товарах, магазинах, поставщиках, покупателях.
Также должны быть реализованы запросы:
-
получить список всех товаров, продаваемых в заданном магазине;
Лист
Изм. Лист
№ докум
Подпись
Дата
-
получить список товаров, поставщик которых находится в том же
городе, что и магазин, их продающий;
-
получить список всех потребителей, купивших товары стоимостью не
больше заданной;
-
получить список поставщиков, которые поставили заданный товар в
магазин с заданным адресом;
-
получить пары (номер товара, название поставщика), продаваемых через
магазины, в которых обслуживается заданный потребитель;
-
получить список пар (магазин, адрес), в которых продается заданный
товар от заданного поставщика.
Лист
Изм. Лист
№ докум
Подпись
Дата
1. Обоснование концептуальной модели базы данных
Обоснование концептуальной модели базы данных для данной задачи
заключается в определении сущностей, связей между ними и их атрибутов, которые
позволят
хранить
всю
необходимую
информацию
о
товарах,
магазинах,
поставщиках и покупателях, а также выполнять запросы к базе данных,
соответствующие требованиям задания.
В данной концептуальной модели базы данных были выделены четыре основные
сущности: товары, магазины, поставщики и покупатели, которые описывают
основные объекты, с которыми работает торговая компания. Каждая из этих
сущностей имеет свои атрибуты, которые позволяют хранить информацию о них.
Для связей между сущностями были использованы связи многие-ко-многим, так
как каждый магазин может продавать несколько товаров, каждый поставщик может
поставлять несколько товаров, а каждый покупатель может купить несколько
товаров. Также была использована связь один-ко-многим между магазинами и
поставщиками, так как каждый магазин может иметь несколько поставщиков, но
каждый поставщик может поставлять товары только в один магазин.
Для выполнения запросов к базе данных были предложены соответствующие
запросы на языке SQL, которые позволяют получать необходимую информацию о
товарах, магазинах, поставщиках и покупателях в соответствии с требованиями
задания.
Таблица 1 - Спецификация сущностей
Название
сущности
Товары
Магазины
Поставщики
Покупатели
Атрибуты сущности
id_tovar (идентификатор товара), название (название товара), стоимость
(стоимость товара)
id_mag (идентификатор магазина), название (название магазина), адрес (адрес
магазина), город (город, в котором находится магазин)
id_post (идентификатор поставщика), название (название поставщика), адрес
(адрес поставщика), город (город, в котором находится поставщик)
id_pok (идентификатор покупателя), имя (имя покупателя), фамилия (фамилия
покупателя), адрес (адрес покупателя), город (город, в котором находится
покупатель), сумма_покупок (общая сумма покупок покупателя)
Лист
Изм. Лист
№ докум
Подпись
Дата
Каждая из этих сущностей имеет свои атрибуты, которые описывают ее
характеристики. Например, для сущности "Товары" это идентификатор товара,
название товара и стоимость товара. Для сущности "Магазины" это идентификатор
магазина, название магазина, адрес магазина и город, в котором он находится. Для
сущности "Поставщики" это идентификатор поставщика, название поставщика,
адрес поставщика и город, в котором он находится. Для сущности "Покупатели" это
идентификатор покупателя, имя покупателя, фамилия покупателя, адрес покупателя,
город, в котором он находится, и общая сумма покупок покупателя.
Графически диаграмма Er-модели показана на рисунке 1
Рисунок 1- Типы связей между сущностями
Лист
Изм. Лист
№ докум
Подпись
Дата
2. Выполнение нормализации базы данных
Нормализация базы данных — это важный шаг в проектировании баз данных,
который позволяет избежать избыточности данных, увеличения объема хранимых
данных и упрощает процесс управления данными.
Процесс нормализации базы данных происходит поэтапно и включает в себя
несколько нормальных форм (1НФ, 2НФ и 3НФ). Первая нормальная форма (1НФ)
гарантирует, что все атрибуты таблицы содержат только простые значения, то есть
каждая ячейка таблицы содержит только одно значение. Вторая нормальная форма
(2НФ) гарантирует, что каждая запись в таблице связана с единственным ключом, и
все остальные атрибуты зависят только от этого ключа. Третья нормальная форма
(3НФ) гарантирует, что каждый атрибут таблицы зависит только от ключа и не
зависит от других атрибутов таблицы.
Для выполнения нормализации базы данных необходимо провести анализ связей
между сущностями и их атрибутами, выделить основные функциональные
зависимости и разделить таблицы на отдельные таблицы таким образом, чтобы
каждая таблица отвечала только за одну конкретную сущность и ее атрибуты. Для
этого
можно
использовать
методы
нормализации,
такие
как
устранение
повторяющихся групп атрибутов, разделение атрибутов на отдельные таблицы и т.д.
После выполнения нормализации базы данных необходимо установить связи
между таблицами и определить тип связей (один к одному, один ко многим или
многие ко многим). Для этого можно использовать внешние ключи, которые
связывают таблицы по определенным правилам и обеспечивают целостность
данных.
Важно отметить, что нормализация базы данных является процессом, который
может занять значительное время, особенно для больших баз данных. Однако,
хорошо
спроектированная
база
данных,
выполненная
в
соответствии
с
требованиями нормализации, может значительно упростить процесс управления
данными и обеспечить более эффективный доступ к ним.
Для данной курсовой работы с заданием на модель "Торговая компания",
выполнение
нормализации
базы
данных
позволит
сделать
ее
более
Лист
Изм. Лист
№ докум
Подпись
Дата
структурированной и уменьшить избыточность данных, что приведет к более
эффективному хранению и управлению информацией.
На первом этапе нормализации базы данных нужно выделить основные
сущности, связи между ними и их атрибуты. Например, сущности "Товары",
"Магазины", "Поставщики" и "Покупатели" могут быть выделены в качестве
основных сущностей в базе данных. Затем следует проанализировать зависимости
между атрибутами каждой сущности и выделить функциональные зависимости.
На втором этапе нужно выполнить разделение таблиц на отдельные таблицы,
чтобы каждая таблица отвечала только за одну сущность и ее атрибуты. Например,
для сущности "Товары" можно создать таблицу "Товары", которая будет содержать
информацию о каждом товаре, его названии, описании и т.д. Для сущности
"Магазины" можно создать таблицу "Магазины", которая будет содержать
информацию о каждом магазине, его адресе, контактной информации и т.д. Для
сущности "Поставщики" можно создать таблицу "Поставщики", которая будет
содержать информацию о каждом поставщике, его контактной информации и т.д.
Для сущности "Покупатели" можно создать таблицу "Покупатели", которая будет
содержать информацию о каждом покупателе, его контактной информации и т.д.
На третьем этапе нужно установить связи между таблицами и определить тип
связей (один к одному, один ко многим или многие ко многим). Например, можно
установить связь между таблицей "Товары" и таблицей "Магазины" посредством
внешнего ключа, который будет указывать на магазин, в котором данный товар
продается. Аналогично, можно установить связь между таблицей "Товары" и
таблицей "Поставщики" посредством внешнего ключа, который будет указывать на
поставщика, который поставляет данный товар.
Таким образом, выполнение нормализации базы данных для данной курсовой
работы позволит упростить процесс управления данными, обеспечить целостность
данных и более эффективный доступ.
Лист
Изм. Лист
№ докум
Подпись
Дата
3. Конструирование таблиц базы данных и заполнение полей
После выполнения процесса нормализации базы данных необходимо приступить
к конструированию таблиц и заполнению их полей. На основании спецификации
сущностей, указанных в таблице 1, можно составить спецификации для всех таблиц
базы данных, необходимых для работы системы "Торговая компания". Ниже
приведены спецификации таблиц для каждой из сущностей:
Таблица "Items" (Товары):

item_id (идентификатор товара, целое число)

item_name (название товара, строка)

item_price (цена товара, вещественное число)

item_description (описание товара, строка)
Таблица 1: Спецификация таблицы "Items"
Имя поля
item_id
item_name
item_category
item_price
Тип данных
int
varchar
varchar
decimal
Свойства поля
Primary Key, Not Null, Unique
Not Null
Not Null
Not Null
Таблица "Vendors" (Поставщики):

vendor_id (идентификатор поставщика, целое число)

vendor_name (название поставщика, строка)

vendor_address (адрес поставщика, строка)

vendor_phone (контактный телефон поставщика, строка)
Таблица 2: Спецификация таблицы "Vendors"
Имя поля
vendor_id
vendor_name
vendor_address
vendor_city
Тип данных
int
varchar
varchar
varchar
Свойства поля
Primary Key, Not Null, Unique
Not Null
Not Null
Not Null
Лист
Изм. Лист
№ докум
Подпись
Дата
Таблица "Customers" (Покупатели):

customer_id (идентификатор покупателя, целое число)

customer_name (имя покупателя, строка)

customer_email (адрес электронной почты покупателя, строка)

customer_phone (контактный телефон покупателя, строка)
Таблица 3: Спецификация таблицы "Customers"
Имя поля
customer_id
customer_name
customer_address
customer_city
Тип данных
int
varchar
varchar
varchar
Свойства поля
Primary Key, Not Null, Unique
Not Null
Not Null
Not Null
Таблица "Shops" (Магазины):

shop_id (идентификатор магазина, целое число)

shop_name (название магазина, строка)

shop_address (адрес магазина, строка)

shop_phone (контактный телефон магазина, строка)
Таблица 4: Спецификация таблицы "Shops"
Имя поля
shop_id
shop_name
shop_address
shop_city
Тип данных
int
varchar
varchar
varchar
Свойства поля
Primary Key, Not Null, Unique
Not Null
Not Null
Not Null
Таблица "Movements" (Поставки-продажи):

movement_id (идентификатор поставки-продажи, целое число)

item_id (идентификатор товара, целое число)

vendor_id (идентификатор поставщика, целое число)

shop_id (идентификатор магазина, целое число)

customer_id (идентификатор покупателя, целое число)

movement_date (дата поставки-продажи, дата)
Лист
Изм. Лист
№ докум
Подпись
Дата

movement_type (тип поставки-продажи, строка)

movement_quantity (количество товара в поставке-продаже, целое число)

movement_price (цена товара в поставке-продаже, вещественное число)
Следует отметить, что поля таблицы "Movements" включают в себя внешние ключи
на таблицы "Items", "Vendors", "Shops" и "Customers", которые связывают записи в
таблице "Movements" с соответствующими записями в таблицах "Items", "Vendors",
"Shops" и "Customers".
Таблица 5: Спецификация таблицы "Movements"
Имя поля
movement_id
movement_type
movement_date
movement_quantity
item_id
vendor_id
shop_id
customer_id
Тип данных
int
varchar
datetime
int
int
int
int
int
Свойства поля
Primary Key, Not Null, Unique
Not Null
Not Null
Not Null
Foreign Key, Not Null, References "Items"
Foreign Key, Not Null, References "Vendors"
Foreign Key, Not Null, References "Shops"
Foreign Key, References "Customers"
Лист
Изм. Лист
№ докум
Подпись
Дата
Создание базы данных
Рис 2 - Создание базы данных
Лист
Изм. Лист
№ докум
Подпись
Дата
4. Оформление схемы данных
По сути, разработка инфологической модели уже последовательно осуществлялась в
ходе реализации последних двух разделов. Однако графический образ логической
модели может быть получен только на этапе создания схемы данных с помощью
СУБД. После создания всех таблиц в СУБД схема данных представлена на рисунке
3
Рис 3 - Схема данных БД «Торговая компания»
Лист
Изм. Лист
№ докум
Подпись
Дата
5. Конструирование запросов к базе данных
Запрос 1. Получить список всех товаров, продаваемых в заданном магазине.
select distinct i.*
from Movements m
join Items i on m.itemnum=i.num
join Shops sh on m.shopid=sh.id
where m.movetype='In'
and sh.name='Стройбери'
Результат выполнения
Рис 4 – Запрос «список всех товаров, продаваемых в заданном магазине»
Запрос 2. Получить список товаров, поставщик которых находится в том же городе,
что и магазин, их продающий.
select distinct i.*
Лист
Изм. Лист
№ докум
Подпись
Дата
from Movements m
join Items i on m.itemnum=i.num
join Shops sh on m.shopid=sh.id
join Vendors v on m.vendorid=v.id
where m.movetype='In'
and v.city=sh.city
Результат выполнения
Рис 5 – Запрос «список товаров, поставщик которых находится в том же городе,
что и магазин, их продающий»
Запрос 3. Получить список всех потребителей, купивших товары стоимостью не
больше заданной.
select distinct c.*
from Movements m
join Items i on m.itemnum=i.num
join Shops sh on m.shopid=sh.id
join Customers c on m.custid=c.id
where m.movetype='Out'
and m.price<100
Лист
Изм. Лист
№ докум
Подпись
Дата
Результат выполнения
Рис 6 – Запрос «список всех потребителей, купивших товары стоимостью не
больше заданной»
Запрос 4. Получить список поставщиков, которые поставили заданный товар в
магазин с заданным адресом.
select distinct v.*
from Movements m
join Items i on m.itemnum=i.num
join Shops sh on m.shopid=sh.id
join Vendors v on m.vendorid=v.id
where m.movetype='In'
and i.name='ГКЛ 2500*1200*9,5мм /Волма/'
and sh.address='Советская улица, 77'
Лист
Изм. Лист
№ докум
Подпись
Дата
Результат выполнения
Рис 7 – Запрос «список поставщиков, которые поставили заданный товар в
магазин с заданным адресом»
Запрос 5. Получить пары (номер товара, название поставщика), продаваемых через
магазины, в которых обслуживается заданный потребитель.
select distinct i.num, v.name
from Movements m
join Items i on m.itemnum=i.num
join Shops sh on m.shopid=sh.id
join Vendors v on m.vendorid=v.id
where m.movetype='In'
and m.shopid in (select distinct m.shopid
from Movements m
join Customers c on m.custid=c.id
where c.name='Афиногенов В.Н.')
order by i.num, v.name
Лист
Изм. Лист
№ докум
Подпись
Дата
Результат выполнения
Рис 8 – Запрос «Пары (номер товара, название поставщика), продаваемых через
магазины, в которых обслуживается заданный потребитель»
Запрос 6. Получить список пар (магазин, адрес), в которых продается заданный
товар от заданного поставщика.
select sh.name, sh.city+', '+sh.address address
from Movements m
join Items i on m.itemnum=i.num
Лист
Изм. Лист
№ докум
Подпись
Дата
join Shops sh on m.shopid=sh.id
join Vendors v on m.vendorid=v.id
where m.movetype='In'
and i.name='Шпатлевка Старатели финишная гипс. 20кг'
and v.name='Фирма Старатели'
Результат выполнения
\
Рис 9 – Запрос «Список пар (магазин, адрес), в которых продается заданный
товар от заданного поставщика»
Лист
Изм. Лист
№ докум
Подпись
Дата
6. Разработка форм базы данных
Продолжая работу над курсовой работой, следующим шагом будет разработка
форм базы данных для взаимодействия с базой данных. Формы будут
использоваться для ввода, редактирования и просмотра данных.
Каждая форма должна иметь соответствующие поля для ввода информации.
Поля должны быть связаны с соответствующими таблицами базы данных и иметь
соответствующие свойства. Также необходимо добавить кнопки для сохранения,
отмены и удаления данных.
Кроме того, для удобства работы с базой данных можно создать отдельную
форму для каждого из запросов, описанных в предыдущем пункте. Формы запросов
должны содержать поля для ввода параметров запроса и кнопку для выполнения
запроса. Результат выполнения запроса должен выводиться в соответствующей
форме.
Все формы должны быть разработаны в соответствии с требованиями к
пользовательскому интерфейсу и обеспечивать удобство работы с базой данных.
При разработке форм базы данных следует учитывать удобство и понятность для
пользователей, которые будут использовать эти формы для ввода и просмотра
данных. Необходимо также обеспечить правильную валидацию данных, чтобы
исключить возможность ввода некорректных значений, а также предоставить
удобный интерфейс для поиска и фильтрации данных.
Кроме того, для обеспечения безопасности данных и предотвращения
несанкционированного доступа, следует установить соответствующие права доступа
для пользователей и обеспечить надежную защиту базы данных.
В разработке форм базы данных необходимо учитывать следующие моменты:
1. Создание форм для ввода данных:

Формы для добавления, изменения и удаления записей;

Обязательность заполнения некоторых полей;

Валидация данных на соответствие требованиям;

Возможность выбора значений из справочников.
2. Создание форм для просмотра данных:
Лист
Изм. Лист
№ докум
Подпись
Дата

Формы для просмотра и фильтрации данных;

Возможность сортировки данных;

Возможность поиска данных;

Возможность выбора и удаления записей.
3. Обеспечение безопасности:

Назначение прав доступа для пользователей;

Хранение паролей в зашифрованном виде;

Защита от SQL-инъекций и других видов атак;

Резервное копирование данных и мониторинг целостности базы данных.
4. Оформление и удобство использования:

Четкость и понятность интерфейса;

Удобство и простота в использовании;

Предоставление подсказок и инструкций;

Адаптивность к разным устройствам и разрешениям экранов.
Форма поиска товаров по магазину: в этой форме пользователь может выбрать
магазин из списка или ввести его название или адрес, после чего получит список
всех товаров, продаваемых в выбранном магазине. Форма может содержать поле для
поиска, выпадающий список магазинов, кнопку "Найти", а также таблицу с
результатами поиска (название товара, цена, количество).
Форма поиска поставщиков и магазинов: в этой форме пользователь может
выбрать товар из списка или ввести его название, после чего получит список
поставщиков, которые поставляют этот товар, и магазинов, где этот товар
продается. Форма может содержать поле для поиска, выпадающий список товаров,
кнопку "Найти", а также две таблицы с результатами поиска (название поставщика,
адрес, контактная информация; название магазина, адрес).
Лист
Изм. Лист
№ докум
Подпись
Дата
7. Разработка отчета
После разработки и заполнения базы данных, необходимо разработать отчет,
который будет выводить нужную информацию из базы данных в удобном формате.
Для
этого
необходимо
определить
требования
к
отчету
и
разработать
соответствующий дизайн.
В данном случае, отчет должен выводить информацию по следующим запросам:
1. Список всех товаров, продаваемых в заданном магазине.
2. Список товаров, поставщик которых находится в том же городе, что и
магазин, их продающий.
3. Список всех потребителей, купивших товары стоимостью не больше
заданной.
4. Список поставщиков, которые поставили заданный товар в магазин с
заданным адресом.
5. Пары (номер товара, название поставщика), продаваемых через магазины, в
которых обслуживается заданный потребитель.
6. Список пар (магазин, адрес), в которых продается заданный товар от
заданного поставщика.
Для вывода каждого из запросов можно использовать отдельную форму отчета. В
каждой форме отчета необходимо определить, какие поля будут отображаться и в
каком порядке. Также нужно учесть, какие фильтры будут доступны для выбора
пользователем, чтобы он мог получить необходимую информацию.
Для удобства использования, формы отчета могут содержать кнопки для
экспорта данных в различные форматы, такие как Excel, CSV или PDF. Также
можно добавить возможность сохранения настроек отчета для последующего
использования.
В итоге, разработка отчета поможет пользователям базы данных быстро и удобно
получать нужную информацию, не тратя время на ручной анализ данных.
Лист
Изм. Лист
№ докум
Подпись
Дата
Заключение
В ходе контрольной работы проанализирована модель предметной области
«Торговая компания» и описаны основные этапы проектирования базы данных
информационной системы:
В данной курсовой работе была разработана концептуальная модель базы
данных для торговой компании, содержащей информацию о товарах, магазинах,
поставщиках и покупателях. Были разработаны таблицы базы данных и их
спецификации, а также проведена нормализация базы данных.
Были созданы формы для добавления и редактирования данных в базе, а также
запросы для получения необходимых отчетов, таких как список товаров,
продаваемых в заданном магазине, список всех потребителей, купивших товары
стоимостью не больше заданной, и другие.
Данная работа позволила более полно и точно описать основные сущности и
их взаимосвязи в рамках торговой компании, а также разработать систему для
хранения и обработки данных.
Также:
- реализовано физическое проектирование базы данных на MS SQL Server
2008;
- произведено наполнение базы данных тестовыми данными:
- сформированы основные запросы на языке SQL.
В целом, выполнение данной курсовой работы позволило получить
практический опыт проектирования базы данных и разработки приложения для
работы с ней, что является важным шагом в развитии навыков программирования и
баз данных.
Лист
Изм. Лист
№ докум
Подпись
Дата
Список использованных источников.
1. Введение в системы баз данных. 8-е издание – СПб.: Издательский дом
«Вильямс», 2005. – 1313 с.
2. Ульман Дж. Д., Уидом Д. Основы реляционных баз данных – М.: Изд-во
«Лори»,2006. - 374 с.
3. Грабер М. Введение в SQL. – М.: Изд-во «Лори»,1999. – 373 с.
4. Тернстрем, Т. Microsoft SQL Server 2008. Разработка баз данных. Учебный
курс Microsoft (+ CD-ROM) / Т. Тернстрем. - М.: Русская Редакция, 2011. - 293
c.
5. Тиори Т., Фрай Дж. Проектирование структур баз данных. В 2 кн., – М.: Мир,
1985. Кн. 1. – 287 с.: Кн. 2. – 320 с
Лист
Изм. Лист
№ докум
Подпись
Дата
ПРИЛОЖЕНИЕ
Items – Товары
Vendors – Поставщики
Customers – Покупатели
Shops – Магазины
Лист
Изм. Лист
№ докум
Подпись
Дата
Movements – Поставки-продажи
Лист
Изм. Лист
№ докум
Подпись
Дата
Скачать