Kreiranje Baze, tabela u njoj, popunjavanje podacima, i upiti ....

1 deo: Kreirati bazu na osnovu sledećeg dijagrama:

slika dijagrama baze - zadatak Б2 iz zbirke

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

Neki Upiti koje smo koristili na času (razmislite šta se dobija sa svakim od tih upita):

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)

Last modified: Friday, 26 February 2021, 6:56 PM