Цикл Лабораторных работ по дисциплине
“
Технология Баз Данных”
Для больших баз данных с множеством пользователей используются базы данных на платформе клиент/сервер. В этом случае доступ к базе данных для группы клиентов выполняется специальными компьютером
– сервером. Клиент дает задание серверу выполнить те или иные операции поиска или обновления базы данных. И мощный сервер, ориентированный на операции с запросами самым оптимальным способом, выполняет их и сообщает клиенту результаты своей работы. При таком подходе возникает дополнительная проблема – спроектировать приложение так, чтобы оно максимально использовало возможности сервера и минимально нагружало сеть, передавая через нее только минимум информации.#Создание таблиц
CREATE TABLE Graduate (
GID smallint,
GName varchar(20),
GPatronymic varchar(20),
GSurname varchar(20),
GYear datetime,
Primary Key(GName, GSurname));
CREATE TABLE GrWork (
ID smallint,
GWork varchar(50),
Primary Key(GWork));
#Задание - создание вида.
Create View UserView
As
Select GName, GPatronymic, GSurName, GYear, GWork
from Graduate, GrWork
Where Graduate.GID = GrWork.ID
1. Для вставки
create procedure InsertStr
( @id smallint = 0,
@Na varchar(20) = 0,
@Pa varchar(20) = 0,
@Su varchar(20) = 0,
@Da datetime = null)
as
insert into Graduate
Values(@id, @Na, @Pa, @Su, @Da);
2. Изменение в строке с уникальным полем
create procedure EditStr
( @UniqID smallint = 0,
@id smallint,
@Na varchar(20),
@Pa varchar(20),
@Su varchar(20),
@Da datetime)
as
update Graduate set GID=@id, GName=@Na, GPatronymic=@Pa,
GSurname=@Su, GYear=@Da
where @UniqID = Graduate.GID
3. Удаление по уникальному
create procedure DelStr
( @UniqID smallint )
As
delete from Graduate where @UniqID=Graduate.GID
(все процедуры должны быть параметризованными).
4. Выдача инфо из таблцы.
create procedure ViewStr
(@UniqID smallint = 0)
as
select GName,GPatronymic,GSurname,GYear
from Graduate
where @UniqID = Graduate.GID
CREATE TABLE LogTable(
Id int IDENTITY,
Date datetime,
TabName varchar(30),
Oper varchar(20),
Surname varchar(80))
6. Создание триггеров
6.1. На удаление
CREATE TRIGGER TrDel
ON Graduate
FOR DELETE
As
insert into LogTable select
GETDATE(),
'Graduate',
'Delete',
'запись '+del.GSurname+' '+del.GName+' удалена'
from deleted del
6.2. На добавление
CREATE TRIGGER TrIns
ON Graduate
FOR INSERT
As
insert into LogTable select
GETDATE(),
'Graduate',
'Insert',
'запись '+ins.GSurname+' '+ins.GName+' добавлена'
from inserted ins
6.3. На изменение
CREATE TRIGGER TrUp
ON Graduate
FOR UPDATE
As
insert into LogTable select
GETDATE(),
'Graduate',
'UPDATE',
'запись '+del.GSurname+' '+del.GName+' изменена на '+
ins.GSurname+' '+ins.GName
from deleted del, inserted ins
Результаты выполненной работы после проверки подтвердились.
Над таблицами:
И
После добавления, изменения и удаления некоторых записей таблица логов приняла вид:
Что говорит о верной работе как триггеров, так и верном ведение таблицы логов.
Необходимо было создать
“просмоторщик” таблиц на одном из языков программирования. Был выбран BorlandC++ Builder.Результат работы показан на рисунке ниже:
Связь двух таблиц ведется по поля
GID (Graduate) и по полю ID(GrWork)