Файл: Отчет по учебной практике по пм. 11 Разработка, администрирование и защита баз данных.docx
Добавлен: 07.11.2023
Просмотров: 1697
Скачиваний: 78
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рисунок 15 Таблица Экземпляры
-
Заполнение таблице «Помещены в каталог».
INSERT INTO ПОМЕЩЕНЫ_В_КАТАЛОГ(Код_размещения, ISBN, Код_области_знаний)
VALUES (1,811115676,1)
INSERT INTO ПОМЕЩЕНЫ_В_КАТАЛОГ(Код_размещения, ISBN, Код_области_знаний)
VALUES (2,811415076,3)
INSERT INTO ПОМЕЩЕНЫ_В_КАТАЛОГ(Код_размещения, ISBN, Код_области_знаний)
VALUES (3,811415676,1)
INSERT INTO ПОМЕЩЕНЫ_В_КАТАЛОГ(Код_размещения, ISBN, Код_области_знаний)
VALUES (4,812302022,2)
INSERT INTO ПОМЕЩЕНЫ_В_КАТАЛОГ(Код_размещения, ISBN, Код_области_знаний)
VALUES (5,812675676,2)
Рисунок 16 Таблица Помещены в каталог
- 1 2 3 4 5 6 7
SQL-Server.
-
Создание БД «Библиотека».
CREATE DATABASE Library;
Рисунок 17 Обозреватель объектов
-
Создание таблицы «Книги».
use Library;
CREATE TABLE Books
(
ISBN INT NOT NULL,
Author NVARCHAR(30) NOT NULL,
Title NVARCHAR (40) NOT NULL,
Publishing_house NVARCHAR (30) NOT NULL,
City_of_publication NVARCHAR (30) NOT NULL,
Year INT NOT NULL,
Pages INT NOT NULL,
CONSTRAINT PK_Books PRIMARY KEY (ISBN)
);
Рисунок 18 Поля таблицы Books
-
Создание таблицы «Каталог».
use Library;
CREATE TABLE Catalog
(
Knowledge_area_code INT NOT NULL,
Knowledge_area_name NVARCHAR (40) NOT NULL,
CONSTRAINT PK_Catalog PRIMARY KEY (Knowledge_area_code)
);
Рисунок 19 Поля таблицы Catalog
-
Создание таблицы «Читатели».
use Library;
CREATE TABLE Readers
(
Library_card_number INT NOT NULL,
Full_name NVARCHAR (40) NOT NULL,
Date_of_Birth DATE NOT NULL,
Home_phone NVARCHAR (12),
Phone_working NVARCHAR (12),
CONSTRAINT PK_Readers PRIMARY KEY (Library_card_number)
);
Рисунок 20 Поля таблицы Readers
-
Создание таблицы «Экземпляры».
use Library;
CREATE TABLE Instances
(
Inventory_number INT NOT NULL,
Date_of_taking DATE,
Availability_in_the_library BIT NOT NULL,
Return_date DATE,
Library_card_number INT,
ISBN INT,
CONSTRAINT PK_Instances PRIMARY KEY (Inventory_number),
CONSTRAINT Instances_Readers FOREIGN KEY (Library_card_number) REFERENCES Readers (Library_card_number) ON UPDATE CASCADE ON DELETE SET NULL,
CONSTRAINT Instances_Books FOREIGN KEY (ISBN) REFERENCES Books (ISBN) ON UPDATE CASCADE ON DELETE SET NULL
);
-
Создание таблицы «Помещены в каталог».
use Library;
CREATE TABLE Placed_in_the_catalog
(
Placement_code INT NOT NULL,
ISBN INTEGER,
Knowledge_area_code INT,
CONSTRAINT PK_Placed_in_the_catalog PRIMARY KEY (Placement_code),
CONSTRAINT Placed_in_the_catalog_Books FOREIGN KEY (ISBN) REFERENCES Books (ISBN) ON UPDATE CASCADE ON DELETE SET NULL,
CONSTRAINT Placed_in_the_catalog_Catalog FOREIGN KEY (Knowledge_area_code) REFERENCES Catalog (Knowledge_area_code) ON UPDATE CASCADE ON DELETE SET NULL
);
Рисунок 21 Поля таблицы Помещены в каталог
-
Создание Диаграммы БД
Рисунок 22 Создание диаграммы
Рисунок 23 Диаграмма
-
Заполнение таблицы «Книги».
use Library;
INSERT INTO Books (ISBN, Author, Title, Publishing_house, City_of_publication, Year, Pages)
VALUES (812302022, 'Моряков В. И.', 'История России', 'СЛОВО', 'Ростов н/Д', 2004, 447);
INSERT INTO Books (ISBN, Author, Title, Publishing_house, City_of_publication, Year, Pages)
VALUES (812675676, 'Каштанов Ю. И.', 'Русский костюм', 'Белый город', 'Москва', 2009, 48);
INSERT INTO Books (ISBN, Author, Title, Publishing_house, City_of_publication, Year, Pages)
VALUES (811115676, 'Аракин В. Д.', 'Словарь', 'Советская энциклопедия', 'Москва', 1969, 590);
INSERT INTO Books (ISBN, Author, Title, Publishing_house, City_of_publication, Year, Pages)
VALUES (811415676, 'Hudson K.', 'Museums of influence', 'Советская энциклопедия', ' Cambridge', 1987, 190);
INSERT INTO Books (ISBN, Author, Title, Publishing_house, City_of_publication, Year, Pages)
VALUES (811415076, 'Иванов, М. Н', 'Детали машин', 'Высшая школа', 'Москва', 2008, 407);
Рисунок 24 Заполнение таблицы Книги
-
Заполнение таблицы «Каталог».
use Library;
INSERT INTO Catalog (Knowledge_area_code, Knowledge_area_name) VALUES (1, 'Энциклопедии и словари');
INSERT INTO Catalog (Knowledge_area_code, Knowledge_area_name) VALUES (2, 'История и культура');
INSERT INTO Catalog (Knowledge_area_code, Knowledge_area_name) VALUES (3, 'Техника');
INSERT INTO Catalog (Knowledge_area_code, Knowledge_area_name) VALUES (4, 'Физическая культура и спорт');
INSERT INTO Catalog (Knowledge_area_code, Knowledge_area_name) VALUES (5, 'Наука');
Рисунок 25 Заполнение таблицы Каталог
-
Заполнение таблицы «Читатели».
use Library;
INSERT INTO Readers (Library_card_number, Full_name, Date_of_Birth, Home_phone, Phone_working) VALUES (1, 'Иванов И.И.','12.12.2001', '89185674534', '454545');
INSERT INTO Readers (Library_card_number, Full_name, Date_of_Birth, Home_phone, Phone_working) VALUES (2, 'Петров П.П.','01.02.2000', '89185671111', '565656');
INSERT INTO Readers (Library_card_number, Full_name, Date_of_Birth, Home_phone, Phone_working) VALUES (3, 'Сидоров С.С.','11.03.2005', '86767610011', '909090');
INSERT INTO Readers (Library_card_number, Full_name, Date_of_Birth, Home_phone, Phone_working) VALUES (4, 'Кисилев К.К.','22.08.2004', '86767614444', '666666');
INSERT INTO Readers (Library_card_number, Full_name, Date_of_Birth, Home_phone, Phone_working) VALUES (5, 'Осипов О.О.','12.09.2005', '86767610000', '778899');
Рисунок 26 Заполнение таблицы Читатели
-
Заполнение таблицы «Экземпляры».
use Library;
INSERT INTO Instances (Inventory_number, Date_of_taking, Availability_in_the_library, Return_date, Library_card_number, ISBN)
VALUES (1, '10.02.2023',0, '18.02.2023', 1, 811115676)
INSERT INTO Instances (Inventory_number, Date_of_taking, Availability_in_the_library, Return_date, Library_card_number, ISBN)
VALUES (2, '11.02.2023',0, '17.02.2023', 2, 811415076)
INSERT INTO Instances (Inventory_number, Date_of_taking, Availability_in_the_library, Return_date, Library_card_number, ISBN)
VALUES (3, '12.02.2023',1, '17.02.2023', 3, 811115676)
INSERT INTO Instances (Inventory_number, Date_of_taking, Availability_in_the_library, Return_date, Library_card_number, ISBN)
VALUES (4, '11.02.2023',1, '27.02.2023', 3, 811415676)
INSERT INTO Instances (Inventory_number, Date_of_taking, Availability_in_the_library, Return_date, Library_card_number, ISBN)
VALUES (5, '11.02.2023',1, '27.02.2023', 2, 811415676)
Рисунок 27 Заполнение таблицы Экземпляры
-
Заполнение таблице «Помещены в каталог».
use Library;
INSERT INTO Placed_in_the_catalog (Placement_code, ISBN, Knowledge_area_code)
VALUES (1,811115676,1)
INSERT INTO Placed_in_the_catalog (Placement_code, ISBN, Knowledge_area_code)
VALUES (2,811415076,3)
INSERT INTO Placed_in_the_catalog (Placement_code, ISBN, Knowledge_area_code)
VALUES (3,811415676,1)
INSERT INTO Placed_in_the_catalog (Placement_code, ISBN, Knowledge_area_code)
VALUES (4,812302022,2)
INSERT INTO Placed_in_the_catalog (Placement_code, ISBN, Knowledge_area_code)
VALUES (5,812675676,2)
Рисунок 28 Заполнение таблицы Помещены в каталог
-
Создание запросов
Вывести список книг указанного автора, имеющихся в библиотеке на указанную дату (на сегодня).
use Library;
SELECT * FROM Books INNER JOIN Instances
ON Books.ISBN=Instances.ISBN
WHERE Author = 'Аракин В. Д.' AND Availability_in_the_library = 1
Вывести список книг, выданных указанному читателю;
use Library;
SELECT * FROM Readers INNER JOIN Instances
ON Readers.Library_card_number=Instances.Library_card_number
WHERE Full_name = 'Сидоров С.С.'
Поиск книги по фрагменту названия.
use Library;
SELECT * FROM Books
WHERE Title Like '%лов%'
- 1 2 3 4 5 6 7
Разработка приложения для работы с базой данных
Для работы с базой данных в Access было создано приложение на C#. Структуру форм и код программы можно увидеть в Приложении 1.
Также было создано приложение на C# для работы с базой данных SQL-Server. Структуру форм и код программы можно увидеть в Приложении 2.
Для организации связи между C# и SQL-Server используется технология Change Tracking.
Обычно приложение имеет постоянное соединение с базой данных, но не всегда это возможно. Примерами таких ситуаций могут быть ненадежное соединение, периодически подключаемые пользователи или мобильные устройства. Обычно в такой ситуации приложение имеет легкий, но функциональный локальный кэш и периодическую одно или двухстороннюю синхронизацию с основной базой данных. Одной из самых главных проблем для разработчиков до выхода SQL Server 2008 была необходимость определить, какие данные были изменены в базе данных, чтобы произвести синхронизацию. Требовалось проектировать и реализовывать свое индивидуальное решение, что обычно означало использование триггеров на отслеживаемых таблицах, которые записывали бы данные об изменениях. Необходимо было написать код, который на основании этих данных отображал изменения, а также не забыть о периодической очистке старых ненужных данных. Спроектировать такое решение простым и в то же время не оказывающим тяжелого влияния на текущую нагрузку в базе данных это довольно тяжелая задача.
С появлением новой технологии Change Tracking решать такие задачи становится гораздо легче. Как только мы включаем Change Tracking на таблице он начинает отслеживать все DML операции и первичные ключи строк, которые они затронули. Мы можем определить, какая операция была произведена над строкой: вставка, изменение или удаление, а используя соединение с исходной таблицей по первичному ключу – получить актуальные данных в остальных столбцах.
Алгоритм для создания приложения с применением технологии Change Tracking:
-
Запускаем Visual Studio и создаем новый проект Windows Forms. -
В меню Project -> Add New Item выбираем Local Database Cache и добавляем его в текущий проект. -
В проект будет добавлен файл .sync и откроется окно Configure Data Synchronization. -
Для установки Server connection нажимаем кнопку New и создаем подключение с нашим локальным SQL Server.