Цикл Лабораторных работ по дисциплине

Технология Баз Данных

 

 

Для больших баз данных с множеством пользователей используются базы данных на платформе клиент/сервер. В этом случае доступ к базе данных для группы клиентов выполняется специальными компьютером сервером. Клиент дает задание серверу выполнить те или иные операции поиска или обновления базы данных. И мощный сервер, ориентированный на операции с запросами самым оптимальным способом, выполняет их и сообщает клиенту результаты своей работы. При таком подходе возникает дополнительная проблема спроектировать приложение так, чтобы оно максимально использовало возможности сервера и минимально нагружало сеть, передавая через нее только минимум информации.

  1. Создать базу данных.
  2. Создать таблицы в базе данных, объединив их нужным образом.
  3. #Создание таблиц

    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));

  4. На основе каких-либо двух связанных таблиц создать вид.
  5. #Задание - создание вида.

    Create View UserView

    As

    Select GName, GPatronymic, GSurName, GYear, GWork

    from Graduate, GrWork

    Where Graduate.GID = GrWork.ID

  6. Для какой-либо одной выбранной таблицы, содержащей уникальное поле, сделать 4 хранимых процедуры, выполняющие следующие действия:

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

  1. Создать таблицу – аналог LOG-файла, содержащую следующую информацию:
  2. CREATE TABLE LogTable(

    Id int IDENTITY,

    Date datetime,

    TabName varchar(30),

    Oper varchar(20),

    Surname varchar(80))

  3. Для какой-либо одной выбранной таблицы создать 3 триггера (на события update, insert и delete), выполняющие запись информации в LOG-таблицу о выполненной операции. (Для создания триггеров используется оператор CREATE TRIGGER.)
  4. 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

  5. Проверить работу триггеров, произведя вставку, изменение и удаление информации в таблице, для которой были созданы триггеры и просмотрев после этого содержимое LOG-таблицы, используя оператор SELECT.

 

 

 

Результаты выполненной работы после проверки подтвердились.

Над таблицами:

И

 

 

 

После добавления, изменения и удаления некоторых записей таблица логов приняла вид:

Что говорит о верной работе как триггеров, так и верном ведение таблицы логов.

Необходимо было создать просмоторщик таблиц на одном из языков программирования. Был выбран BorlandC++ Builder.

Результат работы показан на рисунке ниже:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Связь двух таблиц ведется по поля GID (Graduate) и по полю ID(GrWork)

Hosted by uCoz