0% found this document useful (0 votes)
83 views9 pages

Microsoft SQL Management Studio Pgadmin: DB - Elonen Abiturient Abiturient

This document describes the creation of tables and relationships between tables in a database for student applications and results. It includes: 1. Creating tables for student applications, exam results, personal details, chosen study programs and more. 2. Adding primary keys, foreign keys and other constraints to define relationships between tables and validate data. 3. Adding a calculated field to a table to store the average exam score for each student. The full document provides the SQL commands to generate this database structure and model the entities and relationships for managing information about applicants, their exams, chosen fields of study and application details.

Uploaded by

Ilja Elonen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views9 pages

Microsoft SQL Management Studio Pgadmin: DB - Elonen Abiturient Abiturient

This document describes the creation of tables and relationships between tables in a database for student applications and results. It includes: 1. Creating tables for student applications, exam results, personal details, chosen study programs and more. 2. Adding primary keys, foreign keys and other constraints to define relationships between tables and validate data. 3. Adding a calculated field to a table to store the average exam score for each student. The full document provides the SQL commands to generate this database structure and model the entities and relationships for managing information about applicants, their exams, chosen fields of study and application details.

Uploaded by

Ilja Elonen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Microsoft SQL Management Studio pgAdmin

1.Создайте необходимые таблицы 1.Создайте необходимые


use db_Elonen таблицы
create schema abiturient create schema abiturient
go
create table abiturient.tRiigieksam
create table
(
ID int not null primary key, abiturient.triigieksam
Abiturient int not null, (
Eksam varchar(40) not null, id integer not null primary key,
Pallid tinyint not null abiturient int not null,
)n
eksam varchar(40) not null,
pallid smallint not null
go
create table abiturient.tAbiturient )
(
Abitkood int identity primary key not null, create table
Isikukood char(11) not null, abiturient.tabiturient
Eesnimi varchar(50) not null,
Perenimi varchar(50) not null,
(
Kodakonsus char(3) not null, abitkood int not null primary
Aadress varchar(100), key,
Elamisluba bit, isikukood char(11) not null,
Linn_Kula int not null, eesnimi varchar(50) not null,
Telnr varchar(20),
Epost varchar(50),
perenimi varchar(50) not null,
EestiKeeleTase char(2) kodakonsus char(3) not null,
) aadress varchar(100),
elamisluba bit,
create table abiturient.tAvaldus linn_kula int not null,
(
ID int identity not null primary key, telnr varchar(20),
Abiturient int not null, epost varchar(50),
Valik varchar(8) not null, eestikeeletase char(2)
Eelistus int not null, )
Koormus varchar(50) not null,
Staatus varchar(20),
Kuupaev date create table abiturient.tavaldus
) (
id int not null primary key,
create table abiturient.tTulemus abiturient int not null,
( valik int not null,
ID int not null primary key,
eelistus varchar(50) not null,
Abiturient int not null,
Medal char(4), koormus varchar(50) not null,
_5arv tinyint, staatus varchar(20),
_4arv tinyint, kuupaev date
_3arv tinyint, )
Oppeasutus int not null,
LopetAasta date
) create table
abiturient.ttulemus
create table abiturient.tOppeasutus (
( id int not null primary key,
ID int not null primary key,
Nimetus varchar(70) not null,
abiturient int not null,
Linn varchar(50) not null, medal char(4),
Riik varchar(50) not null _5arv smallint,
) _4arv smallint,
_3arv smallint,
create table abiturient.tLinn
(
oppeasutus int not null,
LinnID int not null primary key, lopetaasta date
Linn varchar(70) not null, )
Maakond varchar(50),
Riik varchar(50)
) create table
abiturient.toppeasutus
create table abiturient.tEriala (
( id int not null primary key,
ErialaKood char(8) not null primary key,
Nimetus varchar(70) not null, nimetus varchar(70) not null,
Keel varchar(20) not null, linn varchar(50) not null,
Kirjeldus text not null, riik varchar(50) not null
Aastat tinyint not null default 4, )
Oppevorm varchar(15) not null,
Riigikohti smallint not null,
Oppetase varchar(30) not null) create table abiturient.tlinn
(
3. Установите необходимые ограничения для linnid int not null primary key,
атрибутов таблиц (NOT NULL, CHECK, UNIQUE, linn varchar(70) not null,
DEFAULT) maakond varchar(50) not null,
alter table [abiturient].[tTulemus] riik varchar(50) not null
add constraint unique_abiturient unique ([Abiturient])
)
2.Создайте диаграмму связей между таблицами
alter table [abiturient].[tRiigieksam] create table abiturient.teriala
add constraint FK_Abiturient foreign key (Abiturient) (
references [abiturient].[tAbiturient](Abitkood) erialakood char(8) not null
primary key,
alter table [abiturient].[tAvaldus]
add constraint FK_Abiturient_Avaldus foreign key nimetus varchar(70) not null,
(Abiturient) keel varchar(30) not null,
references [abiturient].[tAbiturient](Abitkood) kirjeldus text not null,
aastat smallint not null,
alter table [abiturient].[tTulemus]
add constraint FK_Abiturient_Tulemus foreign key
oppevorm varchar(40) not null,
(Abiturient) riigikohti smallint not null,
references [abiturient].[tAbiturient](Abitkood) oppeaste char(1) not null
)
alter table [abiturient].[tTulemus] 2.Создайте диаграмму
add constraint FK_Oppeasutus_Oppeasutus связей между таблицами
foreign key (Oppeasutus)
references [abiturient].[tOppeasutus](ID)
alter table
alter table abiturient.tAbiturient abiturient.triigieksam
add constraint FK_Linn_Kula_tLinn add constraint fk_abiturient
foreign key(Linn_Kula) foreign key (abiturient)
references [abiturient].[tLinn] (LinnID)
references
alter table [abiturient].[tAvaldus] abiturient.tabiturient
add constraint FK_Abiturient_Abiturient (abitkood)
foreign key(Abiturient)
references [abiturient].[tAbiturient] (Abitkood) alter table abiturient.tavaldus
alter table [abiturient].[tAvaldus] add constraint
add constraint FK_Valik_Eriala fk_abiturient_avaldus foreign
foreign key(Valik) key (abiturient)
references [abiturient].[tEriala] (ErialaKood) references
abiturient.tabiturient
6. Добавьте для таблицы tTulemus вычисляемое
(abitkood)
поле KeskBall (средний балл аттестата)
alter table [abiturient].[tTulemus]
add KeskBall decimal(18,4) alter table abiturient.ttulemus
add constraint
select fk_abiturient_tulemus foreign
KeskBall=convert(decimal(2),([_5arv]*5+[_4arv]*4+[_3arv
]*3))/convert(decimal(2),
key (abiturient)
([_5arv]+[_4arv]+[_3arv])) references
from [abiturient].[tTulemus] abiturient.tabiturient
(abitkood)
7. Добавьте для таблицы tEriala поле Oppetase с
возможными значениями rakenduskõrgharidusõpe, alter table abiturient.ttulemus
bakalaureuseõpe, magistriõpe, doktoriõpe add constraint
alter table [abiturient].[tEriala]
add Oppetase varchar(25) fk_oppeasutus_oppeasutus
check (Oppetase in ('rakenduskorgharidusope', foreign key (oppeasutus)
'bakalaureuseope', 'magistriope', 'doktoriope')) references
abiturient.toppeasutus (id)
8.добавьте полям соответствующие ограничения (CHECK)
для контроля данных полей epost и isikukood
alter table [abiturient].[tAbiturient] alter table
add constraint CK_Epost abiturient.tabiturient
check (Epost like '%@%.(com|ru|ee|eu|co.uk|net|org)') add constraint
fk_kula_linn_tlinn foreign key
(linn_kula)
9.Установите ограничения полям erialaKood, Oppevorm references abiturient.tlinn
(statsionaarne, kaug, stats+kaug), (linnid)
-- avalduse staatus (koostamisel, esitatud, vastu
võetud, tagasi lükatud), ... alter table abiturient.tavaldus
alter table abiturient.tEriala
add constraint CK_ErialaKood
add constraint
check (ErialaKood like 'RD[A-Z]R[0-9][0-9][0-9][0-9]') fk_abiturient_abiturient foreign
key (abiturient)
alter table [abiturient].[tEriala] references
add constraint CK_Oppevorm abiturient.tabiturient
check (Oppevorm in('stats','kaug','stats+kaug'))
(abitkood)
alter table [abiturient].[tAvaldus]
add constraint CK_Avalduse_staatus alter table abiturient.tavaldus
check (Staatus in ('koostamisel','esitatud','vastu add constraint fk_valik_eriala
võetud','tagasi lükatud')) foreign key (valik)
references
abiturient.teriala(erialakood)

3. Установите
необходимые ограничения
для атрибутов таблиц
(NOT NULL, CHECK,
UNIQUE, DEFAULT)
alter table abiturient.ttulemus
add constraint
unique_abiturient unique
(abiturient)

5.Добавьте для
таблицы tEriala поле Oppe
vorm (форма обучения)
типа массив (PostgreSQL).
alter table abiturient.teriala
alter column oppevorm type
varchar(40)[]
using
array[oppevorm]::varchar[]

7. Добавьте для таблицы


tEriala поле Oppetase с
возможными значениями
rakenduskõrgharidusõpe,
bakalaureuseõpe,
magistriõpe, doktoriõpe
alter table abiturient.teriala
add oppetase varchar(25)
check (oppetase in
('rakenduskorgharidusope',
'bakalaureuseope',
'magistriope', 'doktoriope'))

8. Создайте и
используйте домены для
контроля данных полей epost
и isikukood
create domain email as text

alter table
abiturient.tabiturient
add constraint ck_isikukood
check (isikukood like '[3-9][0-
9][0-9]](1[0-2]|0[1-9])[0-9]{2}')

alter table
abiturient.tabiturient
add constraint CK_epost
check (epost like '%@[a-z|A-
Z].(com|ru|ee|eu|co.uk|net|o
rg)')

Установите ограничения
полям erialaKood, Oppevorm
(statsionaarne, kaug,
stats+kaug),
-- avalduse staatus
(koostamisel, esitatud,
vastu võetud, tagasi
lükatud), ...

ALTER TABLE abiturient.teriala


ADD CONSTRAINT
ck_erialakood
CHECK(erialakood SIMILAR TO
'RD[A-Z](R|M)[0-9]{2}[0-9]{2}')
alter table abiturient.tavaldus
add constraint
CK_avalduse_staatus
check (staatus in
('koostamisel','esistatud','vastu
voetud','tagasi lykatud'))

4. Создайте диаграмму связей между таблицами (MS SQL Server)

Microsoft SQL Management Studio pgAdmin


1. Количество абитуриентов на каждой специальности
(учитывать только первое предпочтение)

create view abiturient.AbiturientideArv AS


select Valik as Eriala, count(Valik) "Abiturientide arv"
from abiturient.tAvaldus
where Eelistus = 1
group by Valik

2. Предметы, которые сдавали как гос.экзамен


абитуриенты с медалью

create view abiturient.MedalistideAined AS


select distinct Eksam
from abiturient.tRiigieksam inner join abiturient.tTulemus
on tRiigieksam.Abiturient=tTulemus.Abiturient
where Medal ='kuld' or Medal='hobe'
--group by Eksam

3. Специальности, на которые претендует более 2


медалистов

create view abiturient.YleKaheMedalisti AS


select Valik
from abiturient.tAvaldus join abiturient.tTulemus on
tAvaldus.Abiturient = tTulemus.Abiturient
where Medal='kuld' or Medal='hobe'
group by Valik
having count(Medal)>2

4. Найдите абитуриентов, которые не сдавали


гос.экзамены (у которых нет оценок в
таблице riigieksam)
a. Используя LEFT JOIN

create view abiturient.PoleEksamit_LeftJoin AS


select
tRiigieksam.Eksam,tAbiturient.Eesnimi,tAbiturient.Perenimi
from abiturient.tAbiturient left join
abiturient.tRiigieksam on tAbiturient.Abitkood =
tRiigieksam.Abiturient

a. where Eksam is nullИспользуя вложенный


запрос

create view abiturient.PoleEksamit_SubQuerry AS


select Abitkood, Eesnimi, Perenimi
from abiturient.tAbiturient
where Abitkood not in (
select Abiturient
from abiturient.tRiigieksam )

Используя одну из операций над множеством

create view abiturient.PoleEksamit_Mnowestvo AS


select Abitkood as'Tudengi kood kes ei sooritanud eksamit'
from abiturient.tAbiturient
Except
select Abiturient
from abiturient.tRiigieksam

5. Определите, если абитуриенты-однофамильцы,


которые поступают
a. на одну специальность

create view abiturient.OneSurname_OneSpeciality AS


select Valik, Perenimi
from abiturient.tAbiturient join abiturient.tAvaldus on
tAbiturient.Abitkood=tAvaldus.Abiturient
--where
group by Valik, Perenimi having count(Perenimi)>1
a. на разные специальности

6. Список абитуриентов, содержащий их балл поступления


(ход вычисления:
средний балл документа о среднем образовании,
к которому может быть добавлен
1 балл для закончивших школу с золотой или серебряной
медалью и
0,5 балла для имеющих оценку госэкзамена по математике
выше 70% от максимально возможного результата.

create view abiturient.SisseastumisPall AS


select distinct tTulemus.Abiturient, Eesnimi, Perenimi,
case when Medal <>'' then KeskBall+1 when Pallid>70 then
KeskBall+0.5 else KeskBall end as 'Konkursipunktid'
from abiturient.tAbiturient join abiturient.tTulemus on
tAbiturient.Abitkood = tTulemus.Abiturient
left join abiturient.tRiigieksam on tAbiturient.Abitkood =
tRiigieksam.Abiturient
where Eksam like 'Lai matemaatika'
--order by 2

7. Абитуриенты, у которых наивысший балл при поступлении


(учесть, что таких может быть несколько)

create view abiturient.Highest_Score AS


select tTulemus.Abiturient, Eesnimi, Perenimi, KeskBall
from abiturient.tAbiturient join abiturient.tTulemus on
tAbiturient.Abitkood = tTulemus.Abiturient
where Keskball=(select max(KeskBall) from
abiturient.tTulemus)

8. fdsfds

9. Определите конкурс по каждой специальности

a. учитывать только первое предпочтение

create view abiturient.Konkurss as


select ErialaKood,
convert(real,subquery.arv)/convert(real,tEriala.Riigikohti)
as 'Konkurss'
from (select distinct tAvaldus.Valik, count(*) as 'arv'
from abiturient.tAvaldus --join abiturient.tEriala on
tAvaldus.Valik = tEriala.ErialaKood
where Eelistus = 1
group by Valik) as subquery join abiturient.tEriala on
subquery.Valik = tEriala.ErialaKood
b. не учитывать предпочтения

create view abiturient.Konkurss2 as


select ErialaKood,
convert(real,subquery.arv)/convert(real,tEriala.Riigikohti)
as 'Konkurss2'
from (select distinct tAvaldus.Valik, count(*) as 'arv'
from abiturient.tAvaldus --join abiturient.tEriala on
tAvaldus.Valik = tEriala.ErialaKood
--where Eelistus = 1
group by Valik) as subquery join abiturient.tEriala on
subquery.Valik = tEriala.ErialaKood

10. Статистику, отображающую общее количество


специальностей, абитуриентов, заявлений (учитывать все
предпочтения), абитуриентов с различным уровнем
эстонского языка.

create view abiturient.Statistika as


select count(tEriala.ErialaKood) as 'Arv', 'Erialade arv'
as 'Kategooriad' from abiturient.tEriala
union
select count(tAbiturient.Abitkood), 'Abiturientide arv'
from abiturient.tAbiturient
union
select count(tAvaldus.Valik), 'Avalduste arv' from
abiturient.tAvaldus
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase A1'
from abiturient.tAbiturient
where EestiKeeleTase ='A1'
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase A2'
from abiturient.tAbiturient
where EestiKeeleTase ='A2'
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase B1'
from abiturient.tAbiturient
where EestiKeeleTase ='B1'
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase B2'
from abiturient.tAbiturient
where EestiKeeleTase ='B2'
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase C1'
from abiturient.tAbiturient
where EestiKeeleTase ='C1'
union
select count(tAbiturient.EestiKeeleTase), 'Keele tase C2'
from abiturient.tAbiturient
where EestiKeeleTase ='C2'
use [db_Elonen]
go

--Определите на каждой специальности


--по одному лучшему абитуриенту (при равных баллах учитывать результаты госэкзаменов
по математике и родному языку)

--select distinct ErialaKood, Nimetus--,Eesnimi, Perenimi


--from abiturient.tAvaldus join abiturient.tEriala on tAvaldus.Valik =
tEriala.ErialaKood
--join --abiturient.tAbiturient on tAvaldus.Abiturient = tAbiturient.Abitkood

----abiturient.Highest_Score on tAvaldus.Abiturient = Highest_Score.Abiturient


----where KeskBall = abiturient.Highest_Score.KeskBall
--abiturient.SisseastumisPall on tAvaldus.Abiturient = SisseastumisPall.Abiturient

--where ErialaKood = (select abiturient.SisseastumisPall from


abiturient.SisseastumisPall where SisseastumisPall.Konkursipunktid

--select distinct tAvaldus.Valik, Riigikohti/count(abiturient.tAvaldus.Valik) as


Konkurss
--from abiturient.tAvaldus join abiturient.tEriala on tAvaldus.Valik =
tEriala.ErialaKood
--where Eelistus = 1
--group by Valik

--create view abiturient.Konkurss2 as


--select ErialaKood, convert(real,subquery.arv)/convert(real,tEriala.Riigikohti) as
'Konkurss2'
--from (select distinct tAvaldus.Valik, count(*) as 'arv'
--from abiturient.tAvaldus --join abiturient.tEriala on tAvaldus.Valik =
tEriala.ErialaKood
----where Eelistus = 1
--group by Valik) as subquery join abiturient.tEriala on subquery.Valik =
tEriala.ErialaKood

You might also like