Имя таблицы
|
Поле
|
Тип поля
|
Описание полей
|
|
Абитуриент
|
ID_абитуриента
|
varchar (20)
|
Код абитуриента
|
|
Фамилия
|
varchar(60)
|
Фамилия
|
|
Имя
|
varchar(60)
|
Имя
|
|
Отчество
|
varchar(60)
|
Отчество
|
|
Дата_рождения
|
varchar (20)
|
д.р. абитуриента
|
|
Медаль
|
varchar(20)
|
Наличие медали
|
|
Код_специальности
|
varchar (20)
|
Специальность, на которую поступает абитуриент
|
|
Адрес
|
ID_абитуриента
|
varchar (20)
|
Код абитуриента
|
|
Индекс
|
varchar (20)
|
Его индекс
|
|
Территория
|
varchar(20)
|
Территория проживания
|
varchar(20)
|
Населенный пункт
|
|
Улица
|
varchar(20)
|
Улица
|
|
Номер_дома
|
varchar(20)
|
Номер дома
|
|
Телефон
|
varchar(10)
|
Номер телефона
|
|
ВУЗ
|
Код_специальности
|
varchar (20)
|
Код специальности
|
|
Дисциплина_1
|
varchar(20)
|
Первая дисциплина
|
|
Дисциплина_2
|
varchar(20)
|
Вторая дисциплина
|
|
Дисциплина_3
|
varchar(20)
|
Третья дисциплина
|
|
Дисциплина_4
|
varchar(20)
|
Четвертая дисциплина
|
|
Оконченное_ СУЗ
|
ID_абитуриентв
|
varchar (20)
|
Код абитуриента
|
|
Название
|
varchar(20)
|
Название СУЗ
|
|
Город
|
varchar(20)
|
Город, в котором находится СУЗ
|
|
Дата_окончанич
|
varchar (20)
|
Год окончания СУЗа
|
Для хранения адреса абитуриента сущаствует таблица Адрес.
Адрес имеет внешний ключ ID_абитуриента, который связан с ID_абитуриента в основной
таблице Абитуриенты.
Для хранения информации об оконченном, абитуриентом, СУЗ,
имеется таблица Оконченное_СУЗ. Она имеет внешний ключ ID_абитуриента, который
связан с ID_абитуриента в основной таблице Абитуриенты.
Для хранения имеющихся в ВУЗе специальностей и дисциплин,
необходимых для поступления на них, существует таблица ВУЗ. Таблица Абитуриенты
имеет внешний ключ Код_специальности, который связан Код_специальности таблицы
ВУЗ.
Рис. 1. Описание данных и инициализация БД
5. Описание
данных и инициализация БД
Занесение данных в таблицы и запросы к ним:
· заносятся данные о 5 специальностях (рис.
2);
· заносятся 5 записей об абитуриентах (рис.
3);
· заносятся 5 записей об адресах
абитуриентов (рис. 4);
· заносятся 5 записей об оконченных,
абитуриентами, СУЗ (рис. 5);
Рис. 3 Выборка данных из таблицы Абитуриент после занесения
начальных данных
Рис. 4 Выборка данных из таблицы Арес после занесения
начальных данных
Рис. 5 Выборка данных из таблицы СУЗ после занесения
начальных данных
6. Реализация
серверного приложения и демонстрация его работы
Процедуры добавления данных в таблицы:
Добавление Новой специальности, проверка ее существования
use test
procedure addSPEC
@Код_специальности varchar(20),
@Дисциплина_1 varchar(20),
@Дисциплина_2 varchar(20),
@Дисциплина_3 varchar(20),
@Дисциплина_4 varchar(20)nocount on((select COUNT(*) from ВУЗ where Код_специальности=@Код_специальности)!=0)
begin'Такая специальность уже имеется'(1)tryinto ВУЗ
(Код_специальности, Дисциплина_1, Дисциплина_2, Дисциплина_3, Дисциплина_4)
values (@Код_специальности,@Дисциплина_1,@Дисциплина_2,@Дисциплина_3,@Дисциплина_4)'Добавлено'scope_identity()trycatch(-1)
end catch
Рис. 5 Выборка данных из таблицы ВУЗ после внесения новых
данных
Добавление нового абитуриента. Проверка наличия абитуриента с
таким ID в базе, проверка наличия такой специальности в базе.
create procedure addABITUR
@ID_абитуриента varchar(20),
@Фамилия varchar(60),
@Имя varchar(60),
@Отчество varchar(60),
@Дата_рождения varchar(20),
@Медаль varchar(20),
@Код_специальности varchar(20),
@Индекс varchar(20),
@Территория varchar(20),
@Населенный_пункт varchar(20),
@Улица varchar(20),
@Номер_дома varchar(20),
@Телефон varchar(20),
@СУЗ varchar(20),
@Город varchar(20),
@Дата_окончания varchar(20)nocount on((select
COUNT(*) from Абитуриент where ID_абитуриента=@ID_абитуриента)!=0)
print 'Абитуриент с таким ID уже есть в базе'
return (1)try((select COUNT(*) from ВУЗ where
Код_специальности=@Код_специальности)=0)
print 'Такой специальности не существует'
return (1)
end
begin try
insert into Абитуриент (ID_абитуриента, Фамилия,
Имя, Отчество, Дата_рождения, Медаль, Код_специальности)
values
(@ID_абитуриента,@Фамилия,@Имя,@Отчество,@Дата_рождения,@Медаль,@Код_специальности) into Адрес (ID_абитуриента, Индекс,
Территория, Населенный_пункт, Улица, Номер_дома, Телефон)
values (@ID_абитуриента,@Индекс,@Территория,@Населенный_пункт,@Улица,@Номер_дома,@Телефон) into Оконченное_СУЗ (ID_абитуриента, Название,
Город, Дата_окончания)
values
(@ID_абитуриента,@СУЗ,@Город,@Дата_окончания)'Добавлено'scope_identity()trycatch(-1)catchtrycatch(-1)catch
Рис. 6 Выборка данных из таблиц, содержащих данные о
добавленном абитуриенте
представление данных об абитуриентах.
use testview Абитуриентыa.ID_абитуриента as 'ID', a. Фамилия
as 'Фамилия', a. Имя as 'Имя', a. Отчество as 'Отчество', a. Дата_рождения as
'Д.р.',. Медаль as 'Медаль', a. Код_специальности as 'Специальность',. Индекс
as 'Индекс', b. Территория as 'Территория',. Населенный_пункт as 'Город', b.
Улица as 'Улица', b. Номер_дома as 'Дом', b. Телефон as 'Телефон',. Город as
'Город_СУЗ', c. Дата_окончания as 'Дата_окончания'Абитуриент ajoin Адрес b on
a.ID_абитуриента = b.ID_абитуриентаjoin Оконченное_СУЗ c on a.ID_абитуриента =
c.ID_абитуриента
goVIEW ViewOfVoshogdenie
Рис. 7 Представление всей информации об абитуриентах.
use testview Абитуриенты_с_медальюa.ID_абитуриента as 'ID', a. Фамилия as 'Фамилия', a. Имя as 'Имя', a. Отчество as 'Отчество', a. Дата_рождения as 'Д.р.',
a. Медаль as 'Медаль', a. Код_специальности as
'Специальность',. Индекс as 'Индекс', b. Территория as 'Территория',.
Населенный_пункт as 'Город', b. Улица as 'Улица', b. Номер_дома as 'Дом', b.
Телефон as 'Телефон',. Город as 'Город_СУЗ', c. Дата_окончания as
'Дата_окончания'Абитуриент ajoin Адрес b on a.ID_абитуриента =
b.ID_абитуриентаjoin Оконченное_СУЗ c on a.ID_абитуриента = c.ID_абитуриентаa.
Медаль='да'
Рис. 8 Представление информации об абитуриентах с медалью
Удаление данных:
- Удаление специальности.
procedure delSPEC
@Код_специальности varchar(20)from ВУЗ where
Код_специальности=@Код_специальности'Удалено'
- Удаление абитуриента.
procedure delABITUR
@ID_абитуриента varchar(20)from Адрес where
ID_абитуриента=@ID_абитуриента;from Оконченное_СУЗ where
ID_абитуриента=@ID_абитуриента;from Абитуриент where
ID_абитуриента=@ID_абитуриента;'Удалено'
Коррекция данных:
- Изменение информации о специальности.
procedure editSPEC
@id varchar(20),
@Дисциплина_1 varchar(20),
@Дисциплина_2 varchar(20),
@Дисциплина_3 varchar(20),
@Дисциплина_4 varchar(20)nocount on((select COUNT(*) from ВУЗ
where Код_специальности=@id)=0)'Такой специальности не существует'(-1)tryВУЗ
set Дисциплина_1=@Дисциплина_1, Дисциплина_2=@Дисциплина_2,
Дисциплина_3=@Дисциплина_3,
Дисциплина_4=@Дисциплина_4Код_специальности=@id'Изменено'trycatcherror_message()(-1)catcheditSPEC
'10350', 'Химия', 'Физика', 'Биология', 'Русский'
Рис. 9 Выборка из таблицы ВУЗ после выполнения скрипта на
изменение
- Изменение информации об абитуриенте.
create procedure editABITUR
@ID_абитуриента varchar(20),
@Фамилия varchar(60),
@Имя varchar(60),
@Отчество varchar(60),
@Дата_рождения varchar(20),
@Медаль varchar(20),
@Код_специальности varchar(20),
@Индекс varchar(20),
@Населенный_пункт varchar(20),
@Улица varchar(20),
@Номер_дома varchar(20),
@Телефон varchar(20),
@СУЗ varchar(20),
@Город varchar(20),
@Дата_окончания varchar(20)nocount on((select
COUNT(*) from Абитуриент where ID_абитуриента=@ID_абитуриента)=0)
print 'Абитуриента с таким ID нет в базе'
return (-1)try((select COUNT(*) from ВУЗ where
Код_специальности=@Код_специальности)=0)
print 'Такой специальности не существует'
return (1)tryАбитуриент set Фамилия=@Фамилия,
Имя=@Имя, Отчество=@Отчество, Дата_рождения=@Дата_рождения, Медаль=@Медаль,
Код_специальности=@Код_специальностиID_абитуриента=@ID_абитуриентаАдрес set
Индекс=@Индекс, Территория=@Территория, Населенный_пункт=@Населенный_пункт,
Улица=@Улица, Номер_дома=@Номер_дома, Телефон=@Телефон ID_абитуриента=@ID_абитуриента
update Оконченное_СУЗ set Название=@СУЗ,
Город=@Город, Дата_окончания=@Дата_окончания
where ID_абитуриента=@ID_абитуриента
print 'Изменено'scope_identity()trycatch(-1)catchtrycatch(-1)catch
Приложение
create database АбитуриентыАбитуриенты
TABLE Абитуриент (ID_абитуриента varchar (20)
NOT NULL, Фамилия varchar (60),
Имя varchar (60),
Отчество varchar (60),
Дата_рождения varchar(20), Медаль varchar(20), Код_специальности
varchar(20))TABLE Адрес (ID_абитуриента varchar (20), Индекс varchar (20), Территория varchar(20), Населенный_пункт varchar (20),
Улица varchar (20),
Номер_дома varchar (20),
Телефон varchar
(10))TABLE Оконченное_СУЗ (ID_абитуриента varchar (20),
Название varchar (20),
Город varchar(20), Дата_окончания
varchar(20))TABLE ВУЗ (Код_специальности varchar(20) NOT NULL, Дисциплина_1 varchar
(20), Дисциплина_2 varchar
(20), Дисциплина_3 varchar
(20), Дисциплина_4 varchar
(20))
table Абитуриентconstraint k1 primary key
(ID_абитуриента)table ВУЗconstraint k2
primary key (Код_специальности)table Адресconstraint k3
foreign key (ID_абитуриента) references Абитуриент (ID_абитуриента)table Оконченное_СУЗconstraint k4
foreign key (ID_абитуриента) references Абитуриент (ID_абитуриента)table Абитуриентconstraint k5
foreign key (Код_специальности) references ВУЗ (Код_специальности)
into
ВУЗ (Код_специальности, Дисциплина_1, Дисциплина_2, Дисциплина_3, Дисциплина_4) values
('10500', 'Математика', 'Русский', 'Информатика', 'Физика')
insert into ВУЗ (Код_специальности, Дисциплина_1,
Дисциплина_2, Дисциплина_3, Дисциплина_4) values ('10350', 'Математика',
'Русский', 'Биология', 'Химия')into ВУЗ (Код_специальности, Дисциплина_1,
Дисциплина_2, Дисциплина_3, Дисциплина_4) values ('00182', 'Обществознание',
'Русский', 'История', 'Право')into ВУЗ (Код_специальности, Дисциплина_1,
Дисциплина_2, Дисциплина_3, Дисциплина_4) values ('48151', 'Рисунок',
'Русский', 'Математика', 'Иностранный')into ВУЗ (Код_специальности,
Дисциплина_1, Дисциплина_2, Дисциплина_3, Дисциплина_4) values ('62342',
'Иностранный', 'Русский', 'Обществознание', 'География')
into Абитуриент (ID_абитуриента, Фамилия, Имя, Отчество,
Дата_рождения, Медаль, Код_специальности) values ('1', 'Шабалин', 'Никита',
'Александрович', '24.03.1992', 'да', '10500')into Абитуриент (ID_абитуриента,
Фамилия, Имя, Отчество, Дата_рождения, Медаль, Код_специальности) values ('2',
'Немировский', 'Денис', 'Юрьевич', '17.10.1992', 'нет', '10500')into Абитуриент
(ID_абитуриента, Фамилия, Имя, Отчество, Дата_рождения, Медаль,
Код_специальности) values ('3', 'Тутубалин', 'Алексей', 'Сергеевич',
'08.02.1993', 'нет', '62342')into Абитуриент (ID_абитуриента, Фамилия, Имя,
Отчество, Дата_рождения, Медаль, Код_специальности) values ('4', 'Роскрут',
'Руслан', 'Батькович', '27.03.1991', 'да', '00182')into Абитуриент
(ID_абитуриента, Фамилия, Имя, Отчество, Дата_рождения, Медаль,
Код_специальности) values ('5', 'Крупская', 'Надежда', 'Константиновна',
'09.07.1992', 'да', '48151')
into Адрес (ID_абитуриента, Индекс, Территория,
Населенный_пункт, Улица, Номер_дома, Телефон) values ('1', '600025',
'Владимирская обл.', 'г. Владимир', 'Нижняя дуброва', '8', '424437')into Адрес
(ID_абитуриента, Индекс, Территория, Населенный_пункт, Улица, Номер_дома,
Телефон) values ('2', '600014', 'Владимиркая обл.', 'с. Красная Ушна',
'Ленина', '4', '352463')into Адрес (ID_абитуриента, Индекс, Территория,
Населенный_пункт, Улица, Номер_дома, Телефон) values ('3', '600028',
'Владимирская обл.', 'г. Владимир', 'Лакина', '147б', '249141')into Адрес
(ID_абитуриента, Индекс, Территория, Населенный_пункт, Улица, Номер_дома,
Телефон) values ('4', '600124', 'Ивановская обл.', 'г. Иваново',
'Красноармейская', '42', '421463')into Адрес (ID_абитуриента, Индекс,
Территория, Населенный_пункт, Улица, Номер_дома, Телефон) values ('5',
'600036', 'Владимирская обл.', 'г. Владимир', 'Суздальский пр-кт', '12',
'432412')
into Оконченное_СУЗ (ID_абитуриента, Название, Город,
Дата_окончания) values ('1', 'Школа №4', 'Владимир', '2007')into Оконченное_СУЗ
(ID_абитуриента, Название, Город, Дата_окончания) values ('2', 'Школа №1',
'Красная Ушна', '2007')into Оконченное_СУЗ (ID_абитуриента, Название, Город,
Дата_окончания) values ('3', 'Школа №2', 'Владимир', '2007')into Оконченное_СУЗ
(ID_абитуриента, Название, Город, Дата_окончания) values ('4', 'Школа №8',
'Иваново', '2008')into Оконченное_СУЗ (ID_абитуриента, Название, Город,
Дата_окончания) values ('5', 'Школа №24', 'Владимир', '2008')
go