Файл: Отчет по учебной практике по пм. 11 Разработка, администрирование и защита баз данных.docx

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

Категория: Отчет по практике

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

Добавлен: 07.11.2023

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

Скачиваний: 78

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Рисунок 15 Таблица Экземпляры

  1. Заполнение таблице «Помещены в каталог».

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. 1   2   3   4   5   6   7

SQL-Server.




  1. Создание БД «Библиотека».

CREATE DATABASE Library;



Рисунок 17 Обозреватель объектов

  1. Создание таблицы «Книги».

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

  1. Создание таблицы «Каталог».

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

  1. Создание таблицы «Читатели».

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

  1. Создание таблицы «Экземпляры».

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

);

  1. Создание таблицы «Помещены в каталог».

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 Поля таблицы Помещены в каталог

  1. Создание Диаграммы БД




Рисунок 22 Создание диаграммы



Рисунок 23 Диаграмма

  1. Заполнение таблицы «Книги».

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 Заполнение таблицы Книги

  1. Заполнение таблицы «Каталог».

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 Заполнение таблицы Каталог

  1. Заполнение таблицы «Читатели».

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 Заполнение таблицы Читатели


  1. Заполнение таблицы «Экземпляры».

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 Заполнение таблицы Экземпляры

  1. Заполнение таблице «Помещены в каталог».

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 Заполнение таблицы Помещены в каталог

  1. Создание запросов

Вывести список книг указанного автора, имеющихся в библиотеке на указанную дату (на сегодня).

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. 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:

  1. Запускаем Visual Studio и создаем новый проект Windows Forms.

  2. В меню Project -> Add New Item выбираем Local Database Cache и добавляем его в текущий проект.

  3. В проект будет добавлен файл .sync и откроется окно Configure Data Synchronization.

  4. Для установки Server connection нажимаем кнопку New и создаем подключение с нашим локальным SQL Server.