Файл: Операции, производимые с данными (История развития баз данных).pdf
Добавлен: 04.04.2023
Просмотров: 507
Скачиваний: 2
СОДЕРЖАНИЕ
1. Теоретические аспекты по теме исследования
1.1 История развития баз данных
1.2 Общее сведения о базах данных, основные понятия и элементы
2. Практические аспекты применения операций, производимых с данными
2.1 Проектирование базы данных
2.1.1 Создание таблиц с помощью SQL Server Management Studio
Таблица 2 – Объект «userr»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор пользователя |
ID |
1 |
INT, NOT NULL, PRIMARY KEY |
|
Имя пользователя |
name |
Николай |
VARCHAR(50) , NOT NULL |
|
Роль (1 – арендодатель, 0 - покупатель) |
Prodavec |
0 |
INT,NOT NULL |
|
Общий рейтинг пользователя |
Rating |
10 |
INT, NOT NULL |
|
Статус учетной записи (1 – активна, 0 - заблокирована) |
Activ |
1 |
INT, NOT NULL |
|
Контактный телефон |
Telefon |
8-910-725-34-42 |
NVARCHAR(50) ,NOT NULL |
|
Контактный @mail (он же логин для входа в систему) |
|
test@bk.ru |
NVARCHAR(50) ,NOT NULL |
|
Пароль пользователя для входа в систему |
Pasword |
qwerty |
CHAR(10) ,NOT NULL |
Таблица 3 – Объект «Report»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор |
ID |
4 |
INT,NOT NULL, PRIMARY KEY |
|
Ссылка на идентификатор пользователя - арендодателя |
ID_User |
2 |
INT,NOT NULL |
|
Ссылка на идентификатор спецтехники |
ID_Auto |
3 |
INT,NOT NULL |
|
Дата и время публикации |
Time |
2018-09-26 00:00:00.000 |
DATETIME,NOT NULL |
|
Показать объявление (1 – показать, 0 – не показать) |
Activ |
1 |
INT,NOT NULL |
|
Цена аренды |
Cost |
3000 |
INT,NOT NULL |
Таблица 4 – Объект «Zakaz»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор |
ID |
1 |
INT,NOT NULL, PRIMARY KEY |
|
Ссылка на идентификатор пользователя - заказчика |
ID_User |
1 |
INT,NOT NULL |
|
Ссылка на идентификатор объявления арендодателя |
ID_Report |
1 |
INT,NOT NULL |
|
Дата и время начала аренды |
Date_IN |
2018-09-28 00:00:00.000 |
DATETIME,NOT NULL |
|
Дата и время завершения аренды |
Date_Out |
2018-09-29 00:00:00.000 |
DATETIME,NOT NULL |
Таблица 5 – Объект «Auto»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор спецтехники |
ID |
1 |
INT,NOT NULL, PRIMARY KEY |
|
Уникальный идентификатор вида спецтехники |
ID_Tehnic |
3 |
INT,NOT NULL |
|
Наименование спецтехники |
Name |
«ЧТЗ - 2100» |
VARCHAR(50), NOT NULL |
|
Описание спецтехники |
Comments |
Гусеничный бульдозер мощностью 2100 л/с |
TEXT,NOT NULL |
|
Ссылка на идентификатор пользователя |
ID_User |
2 |
INT,NOT NULL |
Таблица 6 – Объект «Tehnic»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор вида спецтехники |
ID |
3 |
INT,NOT NULL, PRIMARY KEY |
|
Наименование вида спецтехники |
Name |
Бульдозер |
VARCHAR(50),NOT NULL |
Таблица 7 – Объект «Chat»
|
Meaning |
Designation |
Example |
Type |
|
Уникальный идентификатор |
ID |
4 |
INT,NOT NULL, PRIMARY KEY |
|
Ссылка на идентификатор пользователя 1 |
ID_user1 |
2 |
INT,NOT NULL |
|
Ссылка на идентификатор пользователя 2 |
ID_user2 |
3 |
INT,NOT NULL |
|
Текст сообщения |
Text |
Мне нужен бульдозер на 2 ближайших дня |
TEXT,NOT NULL |
|
Дата и время сообщения |
Time |
2018-09-26 00:00:00.000 |
DATETIME,NOT NULL |
Системы функциональных зависимостей:
(1) Объяснить, почему был выбран первичный ключ.
(2) F1- Описание таблицы, первым выделяются первичные ключевые
атрибуты таблицы, после знака -> идёт описание остальных атрибутов.
(3) K1- Только первичные ключи.
1) «Comments» Не может быть нескольких комментариев с одним идентификационным номером.
F1: ID -> ID_User, Comments, Rating, ID_Zakaz, Like_dislike
K1 = ID
2) «userr» Не может быть двух пользователей с одинаковыми идентификаторами.
F2: ID -> name, Prodavec, Rating, Activ, Telefon, mail
K2 = ID
«Report»
3) Не может быть двух объявлений с одинаковым идентификационным номером.
F3: ID -> ID_User, ID_Auto, Time, Activ, Cost
K3 = ID
«Zakaz»
4) Не может быть нескольких заказов с одним идентификационным номером.
F4: ID -> ID_User, ID_Report, Date_IN, Date_Out
K4 = ID
5) «Auto» Не может быть двух одинаковых спецмашин с одним идентификационным номером.
F5: ID -> ID_Tehnic, Name, Comments, ID_User
K5 = ID
6) «Tehnic» Не может быть двух одинаковых типов классификации техники.
F6: ID -> Name
K6 = ID
7) «Chat» Не может быть двух одинаковых сообщений с одним идентификационным номером.
F7: ID -> ID_user1, ID_user2, Text, Time
K7 = ID
2.1.3 Заполнение данными таблиц базы данных auto
Заполним данными таблицу Auto
Вносим технику, которую владельцы предлагают в аренду, снабжаем записи комментариями с характеристиками машин
Рисунок 10 – Данные таблицы Auto
Заполним данными таблицу Comments
В этой таблице у нас будет содержаться информация о комментариях к заказам.
Рисунок 11 – Данные таблицы Comments
Заполним данными таблицу Report
В этой таблице у нас будет содержаться информация об объявлениях.
Рисунок 12 – Данные таблицы Report
Заполним данными таблицу Tehnic
Внесем группы машин по их назначению.
Рисунок 13 – Данные таблицы Tehnic
Заполним данными таблицу user
Здесь будет содержаться вся информация о пользователях.
Рисунок 14 – Данные таблицы userr
Заполним данными таблицу Zakaz
В этой таблице будет содержаться информация о самих заказах (кто арендует, что арендует и с какого, по какое время)
Рисунок 15 – Данные таблицы Zakaz
Заполним данными таблицу Chat
В этой таблице будет содержаться информация о переписке между пользователей программы.
Рисунок 16 – Данные таблицы Chat
После заполнения данными таблиц перейдём к созданию запросов для работы с нашей базой данных.
2.1.4 Создание Sql запросов к базе данных auto
Запросы будем создавать в MSSQL
Рассмотрим первый запрос.
Необходимо вывести список доступных бульдозеров на конкретный день.
SELECT Name FROM [auto].[dbo].[Zakaz], [auto].[dbo].[auto], [auto].[dbo].[Report]
WHERE (([auto].[dbo].[Zakaz].Date_IN > '2018-11-21 12:00:00.000')
or ([auto].[dbo].[Zakaz].Date_Out < '2018-11-21 12:00:00.000'))
and (([auto].[dbo].[Report].ID_Auto = [auto].[dbo].[auto].ID)
and ([auto].[dbo].[Report].ID = [auto].[dbo].[Zakaz].ID_Report)
and ([auto].[dbo].[auto].ID_Tehnic = '3'))
group by Name
GO
Рисунок 17 – Результат выполнения SQL запроса
Рассмотрим второй запрос.
Необходимо прочитать по указанным бульдозерам отзывы и журнал рейтинга с возможностью чтения положительных и отрицательных отзывов.
SELECT Comments,Rating,Like_dislike
FROM [auto].[dbo].[Zakaz], [auto].[dbo].[Report], [auto].[dbo].[Comments]
WHERE ([auto].[dbo].[Zakaz].ID_Report = [auto].[dbo].[Report].ID)
and ([auto].[dbo].[Comments].ID_Zakaz = [auto].[dbo].[Zakaz].ID)
and ([auto].[dbo].[Report].ID_Auto = '6')
GO
Рисунок 18 – Результат выполнения запроса
Рассмотрим третий запрос.
Необходимо вывести общий рейтинг востребовательности по типу техники по убыванию.
SELECT COUNT(*) as count, [auto].[dbo].[auto].ID_Tehnic,[auto].[dbo].[Tehnic].Name
FROM [auto].[dbo].[Zakaz], [auto].[dbo].[auto], [auto].[dbo].[Report],[auto].[dbo].[Tehnic]
WHERE ([auto].[dbo].[Report].ID_Auto = [auto].[dbo].[auto].ID)
and ([auto].[dbo].[Report].ID = [auto].[dbo].[Zakaz].ID_Report)
and ([auto].[dbo].[auto].ID_Tehnic = [auto].[dbo].[Tehnic].ID)
group by [auto].[dbo].[auto].ID_Tehnic , [auto].[dbo].[Tehnic].Name
ORDER BY count DESC
GO
Рисунок 19 – Результат выполнения запроса
Рассмотрим четвертый запрос.
Необходимо посмотреть занятость конкретного вида спец техники на неделю вперед.
SELECT [auto].[dbo].[auto].Name ,[auto].[dbo].[Zakaz].ID as ID_Zakaz ,
[auto].[dbo].[Zakaz].Date_IN,[auto].[dbo].[Zakaz].Date_Out
FROM [auto].[dbo].[Zakaz], [auto].[dbo].[auto], [auto].[dbo].[Report],[auto].[dbo].[Tehnic]
WHERE (([auto].[dbo].[Zakaz].Date_IN < '2018-11-22 12:00:00.000')
and ([auto].[dbo].[Zakaz].Date_Out > '2018-11-22 12:00:00.000'))
and (([auto].[dbo].[Report].ID_Auto = [auto].[dbo].[auto].ID)
and ([auto].[dbo].[Report].ID = [auto].[dbo].[Zakaz].ID_Report)
and ([auto].[dbo].[auto].ID_Tehnic = [auto].[dbo].[Tehnic].ID)
and ([auto].[dbo].[auto].ID_Tehnic = '3'))
GO
Рисунок 20 – Результат выполнения запроса
Рассмотрим пятый запрос.
Необходимо вывести рейтинг владельцев, кто, сколько заработал с учетом спецтехники, которая у него есть.
SELECT [auto].[dbo].[user].ID, [auto].[dbo].[user].name,
SUM((datediff(day, [auto].[dbo].[Zakaz].Date_IN, [auto].[dbo].[Zakaz].Date_Out))
*[auto].[dbo].[Report].Cost) as summa
FROM [auto].[dbo].[Zakaz], [auto].[dbo].[user], [auto].[dbo].[Report]
WHERE
([auto].[dbo].[Report].ID_User = [auto].[dbo].[user].ID)
and ([auto].[dbo].[Report].ID = [auto].[dbo].[Zakaz].ID_Report)
group by [auto].[dbo].[user].ID,[auto].[dbo].[user].name
ORDER BY summa DESC
GO
Рисунок 21 – Результат выполнения запроса
2.1.5 Создание пользователей для базы данных
Создание/Добавление пользователей.
Открываем "Безопасность" =>" Создать имя входа..." (Рис. 22)
Рисунок. 22 – Порядок открытия окна «Создать имя входа»
Заполняем строку "Имя входа:". Выбираем "Проверка подлинности SQL Server". Заполняем строки "Пароль" и "Подтверждение пароля. Убираем галочку с "Требовать использование политики паролей". Выбираем нужную базу данных. Выбираем "Язык по умолчанию:" - "Russian". (Рис. 23)
Рисунок 23 – Общие параметры «Имя входа» - admin
Переходим во вкладку "Роли сервера:". Выделяем всё галочками. (Рис.24)
Рисунок 24 – Вкладка «Роли сервера» - admin
Переходим во вкладку "Сопоставление пользователей". Выбираем БД `auto` и назначаем роли сервера пользователю admin. (Рис. 25)
Рисунок 25 – Вкладка «Сопоставление пользователей» - admin
Сохраняем изменения, нажав на кнопку ОК. После этого аналогичным способом создадим пользователя «user».
После проделанного результата нашей работы мы можем увидеть:
Рисунок 26 – Отображение user и admin в обозревателе объекто
ЗАКЛЮЧЕНИЕ
Таким образом, в ходе написания данной курсовой работы были рассмотрены как теоретические вопросы по теме курсовой работы, так и практика применения. Так, в ходе написания первой главы курсовой работы было определено следующее:
1) Дано определение - база данных – это информационная система, которая представляет собой программный комплекс, главными функциями этой системы являются поддержка надежного хранения информации в памяти компьютера, выполнение специфических, для данного приложения, преобразований информации и/или вычислений, предоставление пользователям легко осваиваемого интерфейса
2) Определены основные виды БД: фактографическая – содержит краткую информацию об объектах некоторой системы в строго фиксированном формате; документальная – содержит документы самого разного типа: текстовые, графические, звуковые, мультимедийные; распределённая – база данных, разные части которой хранятся на различных компьютерах, объединённых в сеть; централизованная – база данных, хранящихся на одном компьютере; реляционная – база данных с табличной организацией данных.
3) Одно из основных свойств БД – независимость данных от программы, использующих эти данные.Базой данных является представленная в объективной форме совокупность самостоятельных материалов (статей, расчетов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины.
4) Существует множество других определений понятия «база данных», так или иначе сводящихся к понятию «совокупность хранимых данных». Однако большинство из этих определений не позволяет отличить базу данных от объектов, которые базой данных заведомо не являются, например, от архивов документов, картотек, библиотек и т.п.
Таким образом, база данных есть не просто совокупность хранимых данных (записей, документов, фактов и т.п.), но такая совокупность, которая обладает, по меньшей мере, тремя важными свойствами (признаками):