24/25.februar - PONAVLJANJE - Zadatak sa časa
Kreiranje Baze, tabela u njoj, popunjavanje podacima, i upiti ....
1 deo: Kreirati bazu na osnovu sledećeg dijagrama:

- Prvo treba da se kreira baza podataka
CREATE DATABASE Izlozba_pasa_svih_rasa;
- Zatim se treba voditi računa da se navede koja baza se koristi:
USE Izlozba_pasa_svih_rasa;
- Kreirati tabele pomoću CREATE TABLE, ali vodite računa: prvo kreirati tabele koje ili nemaju nikakva ograničenja ili imaju samo primarne ključeve:
CREATE TABLE Duzina_Dlake (
DDID int PRIMARY KEY,
Duzina int
);
CREATE TABLE Boja (
BojaId int,
Boja VARCHAR(20),
CONSTRAINT pk_Boja PRIMARY KEY (BojaId)
);
CREATE TABLE Rasa (
RasaId int,
NazivRase VARCHAR(40),
CONSTRAINT pk_Rasa PRIMARY KEY (RasaId)
);
**
- Tabela koja u sebi ima FOREIGN KEY može da se kreira tek kada su kreirane tabele u kojima su kolone na koje FOREIGN KEY pokazuje
CREATE TABLE Pas (
PasId int,
Ime VARCHAR(50),
Tezina DOUBLE(7,3),
DDID INT,
BojaId INT,
RasaId INT,
Ostenjen DATE,
CONSTRAINT pk_Pas PRIMARY KEY (PasId),
CONSTRAINT fk_Pas_DuzinaDlake FOREIGN KEY (DDID) REFERENCES Duzina_Dlake(DDID),
CONSTRAINT fk_Pas_Boja FOREIGN KEY (BojaId) REFERENCES Boja(BojaID),
CONSTRAINT fk_Pas_Rasa FOREIGN KEY (RasaId) REFERENCES Rasa(RasaId)
)
- Na isti način kreirati sledeće tabele u redosledu navođenja: Izlozba, Kategorija, (to uradite sami kod kuće) a poslednju tabelu treba posebno objasniti:
CREATE TABLE Rezultat (
IzlozbaID int,
KategorijaID int,
PasID int,
Rezultat varchar(30),
Napomena text,
constraint pk_Rezultat primary key (IzlozbaID, KategorijaID, PasID),
constraint fk_Rezultat_Izlozba foreign key (IzlozbaID)
references Izlozba (IzlozbaID),
constraint fk_Rezultat_Pas foreign key (PasID)
references Pas (PasID),
constraint fk_Rezultat_Kategorija foreign key (KategorijaID)
references Kategorija (KategorijaID)
);
Obratite pažnju da u ovoj poslednjoj tabeli imamo kompozitni primarni ključ pa u tom slučaju ograničenje mora da se piše na kraju. U toj tabeli su 3 kolone koje su svaka za sebe FOREIGN KEY. Kombinacija te tri kolone je u stvari primarni ključ.
Unošenje podataka u tabele:
Redosled po kojem se unose podaci je isti kao i redosled u kojem su tabele kreirane.
Prvo se unose podaci u tabele koje nemaju oganičenja i u tabele koje imaju samo primerne ključeve.
Tek posle toga se unose podaci u tabele koje imaju strane ključeve.
Pažnja: Ne može se uneti vrednost stranog ključa ako ta vrednost već ne postoji na mestu gde taj strani ključ pokazuje!
U prevodu: Ako nemate unesene rase pasa, nećete moći da u tabeli pas unesete RasaID ...
Podaci koje smo koristili na času:
INSERT INTO kategorija
VALUES (1, 'Pero laka kategorija'),
(2, 'Mladi kucici'),
(3, 'Srednji'),
(4, 'Stariji'),
(5, 'Sampion mladih');
insert into Boja values (1, 'crna');
insert into Boja values (2, 'bela');
insert into Boja values (3, 'oker');
insert into Rasa values (1, 'Labrador');
insert into Rasa values (2, 'Staford');
insert into Rasa values (3, 'Vucjak');
insert into Rasa values (4, 'Sarplanianac');
Dalje podatke ostavljamo da sami unesete .... (kod kuće, za vežbu)
SELECT * FROM Pas;
SELECT Duzina AS "Dužina dlake"
FROM Duzina_Dlake;
SELECT Ime, Duzina AS "Dužina dlake"
FROM Pas, Duzina_Dlake;
SELECT Ime, Duzina AS "Dužina dlake"
FROM Pas CROSS JOIN Duzina_Dlake;
SELECT Ime, Duzina AS "Dužina dlake"
FROM Pas INNER JOIN Duzina_Dlake USING (DDID);
SELECT Ime, Duzina AS "Dužina dlake"
FROM Pas INNER JOIN Duzina_Dlake USING (DDID);
SELECT p.Ime, d.Duzina AS "Dužina dlake"
FROM Pas p INNER JOIN Duzina_Dlake d USING (DDID);
SELECT d.Duzina AS "Maza ima dužinu dlake"
FROM Pas p INNER JOIN Duzina_Dlake d USING (DDID)
WHERE p.Ime='Maza'; --------------------
SELECT Ime, Duzina AS "Duzina dlake"
FROM Pas INNER JOIN Duzina_Dlake USING (DDID)
where Ime='Maza'
UNION
SELECT Ime, Duzina AS "Duzina dlake"
FROM Pas INNER JOIN Duzina_Dlake USING (DDID)
where ime LIKE 'R%';
(kompletno rešenje zadatka uraditi u svesku i pokazati nastavniku, kada se to od vas bude tražilo)