· 6 years ago · Aug 20, 2019, 07:28 AM
1use master
2
3if exists (select * from sys.databases where name = 'SkoleDB')
4begin
5 print 'Dropper lige DB...'
6 drop database SkoleDB
7end
8go
9
10create database SkoleDB
11
12ON PRIMARY
13 ( NAME='SkoleDB_Primary',
14 FILENAME=
15 'C:\SQLRepository\Filegroups\SkoleDB_Prm.mdf',
16 SIZE=4MB,
17 MAXSIZE=10MB,
18 FILEGROWTH=1MB),
19FILEGROUP SkoleDB_FG1
20 ( NAME = 'SkoleDB_FG1_Dat1',
21 FILENAME =
22 'C:\SQLRepository\Filegroups\SkoleDB_FG1_1.ndf',
23 SIZE = 1MB,
24 MAXSIZE=10MB,
25 FILEGROWTH=1MB),
26 ( NAME = 'SkoleDB_FG1_Dat2',
27 FILENAME =
28 'C:\SQLRepository\Filegroups\SkoleDB_FG1_2.ndf',
29 SIZE = 1MB,
30 MAXSIZE=10MB,
31 FILEGROWTH=1MB),
32 --Start FG2
33FILEGROUP SkoleDB_FG2
34 ( NAME = 'SkoleDB_FG2_Dat1',
35 FILENAME =
36 'C:\SQLRepository\Filegroups\SkoleDB_FG2_1.ndf',
37 SIZE = 1MB,
38 MAXSIZE=10MB,
39 FILEGROWTH=1MB),
40 ( NAME = 'SkoleDB_FG2_Dat2',
41 FILENAME =
42 'C:\SQLRepository\Filegroups\SkoleDB_FG2_2.ndf',
43 SIZE = 1MB,
44 MAXSIZE=10MB,
45 FILEGROWTH=1MB)
46 --Slut FG2
47 LOG ON
48( NAME='SkoleDB_log',
49 FILENAME =
50 'C:\SQLRepository\Filegroups\SkoleDB.ldf',
51 SIZE=1MB,
52 MAXSIZE=10MB,
53 FILEGROWTH=1MB);
54GO
55ALTER DATABASE SkoleDB
56 MODIFY FILEGROUP SkoleDB_FG1 DEFAULT;
57GO
58
59-- Create a table in the user-defined filegroup.
60USE SkoleDB;
61create table Elev
62(
63 ElevID Int primary key identity,
64 Fornavn nvarchar(50) default '<NAVNEBESYTTET',
65 Efternavn nvarchar(50) default '<NAVNEBESKTYTTET>',
66 Adresse nvarchar(60) not null,
67 Email varchar(255) default 'Ingen mail oplyst',
68 Postnr int,
69 KlasseId nvarchar(30)
70)
71ON SkoleDB_FG1;
72GO
73
74-- Nu er databasen opretettet og kan køres med F5
75-- opret nu alle tabeller
76
77use SkoleDB
78alter database SkoleDB set recovery full -- HUSKE ligedette af hensyn til disasterrecoveryplan
79
80--create table Elev
81--(
82-- ElevID Int primary key identity,
83-- Fornavn nvarchar(50) default '<NAVNEBESYTTET',
84-- Efternavn nvarchar(50) default '<NAVNEBESKTYTTET>',
85-- Adresse nvarchar(60) not null,
86-- Email varchar(255) default 'Ingen mail oplyst',
87-- Postnr int,
88-- KlasseId nvarchar(30)
89--)
90create table Postnrby
91(
92 postnr int primary key check (postnr > 999 AND postnr <= 9999),
93 bynavn nvarchar(40) not null,
94)
95GO
96
97--ALTER DATABASE SkoleDB
98 -- MODIFY FILEGROUP SkoleDB_FG2
99--GO
100
101create table Laerer
102(
103 LaererID int primary key,
104 Fornavn nvarchar(30) not null check (fornavn <> 'Adolf') default '<NAVNEBESKYTTET>',
105 Efternavn nvarchar(30) not null check (efternavn <> 'Hitler') default '<NAVNEBESKYTTET>',
106 Adresse nvarchar(60) not null,
107 Postnr Int not null,
108 email varchar(255) default 'Ingen email registreret',
109)
110ON SkoleDB_FG2;
111GO
112 create table Klasse
113(
114 KlasseId nvarchar(30) primary key,
115 Klassenavn nvarchar(30) not null
116)
117 create table Underviser
118(
119 LaererId int not null,
120 KlasseId nvarchar(30) not null,
121 Fag nvarchar(25) not null,
122-- PeriodeStart date,
123-- PeriodeSlut date,
124)
125--indsæt nu data i de forskellige tabeller..
126--først elever
127Insert into Elev values
128('Lars Løkke','Rasmussen','VinderVej 12','llr@grisen.dk',3220,'1a'),
129('Mette','Frederiksen','Taberstrædet 86',default,2750,'1b')
130--Så indsætter vi et par lærer
131Insert into Laerer values
132(100, 'Gustav','Salinas','Bøsserup Strand',2000,'GSA@hoesserup.dk'),
133(110, 'Amalie','Zigerty','Gokkedal',4300,'amalie@nobrain.dk.dk')
134--indlæs postnr fra postDanmark eller lignende
135Bulk insert skoledb.dbo.postnrby
136from 'C:\SQLRepository\postnrby.txt'
137with
138(
139 codepage = 'ACP',
140 batchsize = 250,
141 datafiletype = 'CHAR' ,
142 fieldterminator = ',',
143 rowterminator = '\n',
144 maxerrors = 50,
145 tablock
146)
147SELECT * from Postnrby
148-- lav lige nogle klasser
149insert into Klasse values
150('1a','TaberKlassen'),
151('1b','VinderKlassen'),
152('12H','HjælpeKlassen')
153-- Undervisnings relationer.. Hvilke lærere har hvilke klasser..
154insert into Underviser values
155(110, '1a','Grundlæggende S&M'),
156--(110, '1a','Grundlæggende S&M',getdate(),getdate()),
157(110, '12H','Advanceret SQL'),
158(100,'1b','Næsepudsning')
159--tilføj nu referencer --add constraints
160alter table Elev --elevtabellen
161add constraint Elev_Post_check --check post nr
162foreign key (postnr) references Postnrby (postnr)
163--
164alter table Elev
165add constraint Elev_Klasse_check --Tjek klasseid
166foreign key (KlasseId) references Klasse (KlasseId)
167--
168alter table Laerer -- laerertabellen
169add constraint Laerer_Post_check --check post nr
170foreign key (postnr) references Postnrby (postnr)
171--
172alter table Underviser --undervisertabellen
173add constraint Underviser_Laerer_check --tjek laererid
174foreign key (LaererId) references Laerer (laererId)
175--
176alter table Underviser --undervisertabellen
177add constraint Underviser_Klasse_check --tjek laererid
178foreign key (KlasseId) references Klasse (KlasseId)
179--
180alter table Underviser
181add constraint UnderviserPK
182primary key (LaererId,KlasseId,Fag) --Primary key består af 3 kolonner
183
184--Lav nu et par selects
185select fornavn, efternavn,adresse,postnrby.postnr,bynavn from elev,postnrby
186where elev.postnr = postnrby.postnr
187
188select Fag, Underviser.LaererId, Underviser.KlasseID, Klasse.Klassenavn, Laerer.Fornavn as Laerer, Laerer.Efternavn
189from Underviser, Klasse, laerer, Elev
190where Laerer.Laererid = Underviser.laererid
191and Klasse.klasseId = Elev.KlasseId
192and Underviser.KlasseId = Klasse.KlasseId
193and fag like '%S&%'
194
195--begin transaction NytFag -- lav en navngivne transaction
196-- update underviser set fag = 'Sort magi' where fag like 'Grund%'
197
198select *
199from sys.filegroups
200go