Provera znanja (primeri sa časa)
Imamo dve grupe i u skladu sa tim imamo 2 primera:
Do ocene 3 se treba uraditi sledeće:
- Kreirati bazu (u 1. grupi naziv baze je Jkveri, a u drugoj Tom)
- Kreirati tabele i ključeve u njima
- Popuniti obe tabele sa po bar 5 redova
Za 1. grupu je šema baze Jkveri:

(vodite računa o sledećem: pas može da ima samo jednog vlasnika, a jedan vlasnik može da ima više pasa - ovo vam je potrebno da biste ispravno kreirali FOREIGN KEY)
za ocenu 4 : kreirati upit kojim se prikazuju imena svih pasa, njihove težine i njihovi vlasnici, i to poređano po rastućem redosledu imena vlasnika
za ocenu 5: Kreirati pogled (VIEW) kojim se ispisuju imena i prezimena vlasnika pasa i broj pasa koje imaju
****************************************
a za 2 grupu je šema baze Tom:

(vodite računa o sledećem: RADNIK može da radi u samo jednoj firmi, a jedna firma može da ima više radnika - ovo vam je potrebno da biste ispravno kreirali FOREIGN KEY)
za ocenu 4: kreirati upit kojim se vrši ispis svih imena i prezimena radnika i naziva odeljenja u kojima rade i to poređano u rastućem redosledu prezimena radnika
za ocenu 5: Kreirati pogled (VIEW) kojim se ispisuju nazivi firmi, mesta u kojima su i broj radnika u njima
*****
Da bi se učenicima olakšalo, Internet je bio ostavljen uključen, MOODLE je ostavljen uključen,
ali...
ako profesor posumnja u razumevanje učenika, briše se istorija u browseru i od datog učenika traži da ponovo napiše upit (ili nešto drugo što je pod pitanjem) ... u prisustvu profesora
Pokušajte da samostalno uradite ove primere.
U nastavku je jedan od nacina kako je to moglo da se uradi:
1 GRUPA:
CREATE DATABASE Jqveri;
--
USE Jqveri;
--
--
CREATE TABLE Vlasnik (
VlasnikID INT PRIMARY KEY,
Ime VARCHAR(25),
Prezime VARCHAR(25),
JMBG CHAR(13)
);
--
CREATE TABLE Pas (
PasID INT PRIMARY KEY,
Ime VARCHAR(25),
Tezina DECIMAL(5,2),
VlasnikID INT,
CONSTRAINT fk1 FOREIGN KEY (VlasnikID) REFERENCES Vlasnik(VlasnikID)
);
--USE Jqveri;**************************INSERT INTO Vlasnik(VlasnikID, Ime, Prezime, JMBG) VALUES (1, 'Pera', 'Pap', '0101999155155'), (2, 'Sima', 'Pap', '0201999155155'), (3, 'Ana', 'Pap', '1101999155155'), (4, 'Mika', 'Ave', '2101999155155'), (5, 'Pera', 'Beli', '0112999155155'), (6, 'Vlada', 'Crveni', '1101998155155'), (7, 'Dunja', 'Baranovski', '2101999155154'), (8, 'Aleksa', 'Miler', '2101997155153'), (9, 'Herman', 'Papuga', '1101998155158');--
USE Jqveri;
INSERT INTO Pas(PasID, Ime, Tezina, VlasnikID)
VALUES (1, 'Cezar', 5.2, 1),
(2, 'Sima', 15.2, 1),
(3, 'Meda', 25.2, 2),
(4, 'Loptica', 3.2, 3),
(5, 'Pudla', 5.4, 3),
(6, 'Maza', 3.5, 4),
(7, 'Cezar', 35.2, 4),
(8, 'Sima', 25.4, 4),
(9, 'Maza', 15.2, 5),
(10, 'Fifi', 5.5, 6);
--
SELECT pas.Ime AS 'ime psa', pas.Tezina AS 'Tezina', vlasnik.Ime
FROM pas INNER JOIN vlasnik USING (VlasnikID)
ORDER BY vlasnik.Ime;
-- 1. nacin, i to nepotpun, jer prikazuje samo vlasnike koji imaju pse:
CREATE VIEW vw_ko_ima_i_koliko_pasa AS
SELECT vlasnik.Ime AS 'ime', vlasnik.Prezime AS 'prezime', COUNT(pasID) AS 'broj pasa'
FROM vlasnik INNER JOIN pas USING (VlasnikID)
GROUP BY vlasnik.Ime;
-- provera>
SELECT * FROM vw_ko_ima_i_koliko_pasa;
-- 2. nacin: gde se prikazuju i vlasnici koji imaju pse i oni koji nemaju pse:
CREATE VIEW vw_koliko_pasa AS
SELECT vlasnik.Ime AS 'ime', vlasnik.Prezime AS 'prezime', COUNT(pasID) AS 'broj pasa'
FROM vlasnik LEFT JOIN pas USING (VlasnikID)
GROUP BY vlasnik.Ime;
--provera:
SELECT * FROM vw_koliko_pasa;
2 GRUPA:
CREATE DATABASE Tom;
--
USE Tom;
--
CREATE TABLE Firma(
SifraOD INT PRIMARY KEY,
Naziv VARCHAR(25),
Mesto VARCHAR(100),
Adresa VARCHAR(100)
);
CREATE TABLE Radnik(
RadnikID INT PRIMARY KEY,
Ime VARCHAR(25),
Prezime VARCHAR(25),
SifraOD INT,
CONSTRAINT fkFR FOREIGN KEY (SifraOD) REFERENCES Firma(SifraOD)
);
--
INSERT INTO firma(SifraOD, Naziv, Mesto, Adresa)
VALUES (1, 'Alba', 'Novi Sad', 'Industrijska zona b.b.'),
(2, 'Gigatron', 'Beograd', NULL),
(3, 'Trgovina', 'Zrenjanin', 'Titova 55'),
(4, 'Novkabel', 'Novi Sad', 'Industrijska zona Sever'),
(5, 'Lir', 'Novi Sad', NULL),
(6, 'Pobeda', 'Petrovaradin', NULL);
--
INSERT INTO radnik(RadnikID, Ime, Prezime, SifraOD)
VALUES (1, 'Pera', 'Papiga', 1),
(2, 'Sima', 'Zec', 1),
(3, 'Sanja', 'Crveni', 1),
(4, 'Sima', 'Pap', 2),
(5, 'Pera', 'Piga', 2),
(6, 'Sima', 'Pap', 3),
(7, 'Sale', 'Crveni', 4),
(8, 'Una', 'Rep', 5);
--
SELECT radnik.Ime, radnik.Prezime, firma.Naziv
FROM radnik INNER JOIN firma USING (sifraOD)
ORDER BY radnik.Prezime;
-- 1. nacin, i to nepotpun, jer trazi samo broj radnika u firmama gde rade neki radnici:
CREATE VIEW vw_koliko_radnika_gde_radi AS
SELECT firma.Naziv AS 'Firma', firma.Mesto, COUNT(radnik.RadnikID) AS 'Broj radnika'
FROM firma INNER JOIN radnik USING (sifraOD)
GROUP BY firma.Naziv;
-- a za proveru:
SELECT * FROM vw_koliko_radnika_gde_radi;
-- 2. nacin > ako cete da prikazete sve firme, i gde ima radnika i gde nema:
CREATE VIEW vw_koliko_radnika AS
SELECT firma.Naziv AS 'Firma', firma.Mesto, COUNT(radnik.RadnikID) AS 'Broj radnika'
FROM firma LEFT JOIN radnik USING (sifraOD)
GROUP BY firma.Naziv;
-- a za proveru>
SELECT * FROM vw_koliko_radnika;