13/17.09. Zadatak - Kreiranje baze i tabela u njoj (SA REŠENJIMA)
Za potrebe organizacije i registrovanja rezultata golf mečeva tokom nadmetanja na međunarodnom turniru u ovom sportu potrebno je da se kreira baza podataka.
Dijagram baze je dat na slici:

Rešavanje zadatka - kao na času (12.09.2005) - koristićemo MS SQL Server i SQL Server Management Studio:
(1) Kreiranje baze:
CREATE DATABASE Golferi;
(2) Da bi se radilo sa datom bazom koristimo:
USE Golferi;
(3) Kreiranje prve tabele - po izboru učenika to je Partija:
CREATE TABLE Partija
(
PartijaID INT PRIMARY KEY IDENTITY,
TerenID INT,
Datum DATE,
VremePocetka TIME,
VremeZavrsetka TIME,
PrviIgracID INT,
DrugiIgracID INT
);
Dodatno objašnjenje:
IDENTITY - koristi se za automatsko unošenje brojeva prilikom unosa podataka u MS SQL SERVERU
(u MySQL je to AUTO_INCREMENT, a u Access-u je to AUTOINCREMENT)
foreign key se ne postavlja jer još nismo kreirali tabele koje su nam za to potrebne (Teren i Igrac)
(4) Kreiranje sledeće tabele - Grad:
CREATE TABLE Grad
(
GradID INT PRIMARY KEY IDENTITY,
Grad nVARCHAR(100),
PozivniBroj VARCHAR(10),
PostanskiBroj INT,
BrojStanovnika INT
);
Dodatno objašnjenje:
VARCHAR(100) - za unos slova, engleski alfabet, maksimalno 100, ali u memoriji zauzima samo onoliko slova koliko je uneto od strane korisnika
*Pozivni broj je ovog tipa jer počinje sa nulom, koja bi bila odsečena ako bi se koristio numerički tip podataka
*obično koriatimo za email, brojevi telefona i slično
nVARCHAR(10) - za unos slova, unicode, ćitrilica, dijakritici č, ć, š, ..., maksimalno 100, ali u memoriji zauzima samo onoliko slova koliko je uneto od strane korisnika
CHAR(100) - za unos slova, engleski alfabet, u memoriji zauzima 100 slova bez obzira koliko je slova uneto od strane korisnika
(5) Kreiranje sledeće tabele - Teren:
CREATE TABLE Teren
(
TerenID INT PRIMARY KEY IDENTITY,
Teren nVARCHAR(200),
Adresa nVARCHAR(255),
GradID INT,
KontaktTelefon VARCHAR(200),
CONSTRAINT fk_Teren_Grad FOREIGN KEY (GradID) REFERENCES Grad(GradID)
);
Dodatno objašnjenje:
CONSTRAINT - za unos ograničenja, standardni način bez obzira da li se koristi MS SQL Server, MySQL, Access, ...
-
- mora da ima naziv koji je jedinstven na nivou kompletne baze
- nakon toga se navodi koja je vrsta ograničenja - foreign key u ovom slučaju
- nakon toga se u zagradama navodi naziv dela tabele koji je u pitanju i koji je pre toga definisan imenom i tipom - GradID u ovom slučaju
- pošto je u pitanju strani ključ, navodi se na šta se odnosi - na koju tabelu i koji deo u njoj - naziv tabele i omah pored je u zagradi naziv kolone - Grad(GradID)
(6) Kreiranje sledeće tabele - Igrac:
CREATE TABLE Igrac
(
IgracID INT PRIMARY KEY,
Ime nVARCHAR(200),
Prezime nVARCHAR(200),
Adresa nVARCHAR(200),
GradID INT,
Email VARCHAR(100),
Telefon VARCHAR(100),
CONSTRAINT fk_Igrac_Grad FOREIGN KEY (GradID) references Grad(GradID)
);
Dijagram baze i tabela koje smo do sada kreirali:

Ovde se vidi - slika dijagrama baze - ali tabela Partija nije povezana sa ostalima jer nisu definisani strani ključevi u njoj.
Sada ćemo da izmenimo tabelu Partija da bi definisali ključeve u njoj:
(7) Izmena tabele - Partija:
ALTER TABLE Partija
ADD CONSTRAINT fk1 FOREIGN KEY (PrviIgracID) REFERENCES Igrac(IgracID);
ALTER TABLE Partija
ADD CONSTRAINT fk2 FOREIGN KEY (DrugiIgracID) REFERENCES Igrac(IgracID);
ALTER TABLE Partija
ADD CONSTRAINT fk3 FOREIGN KEY (TerenID) REFERENCES Teren(TerenID);
Napomena:
Server baze podataka ne radi automatsko osvežavanje postavki, već u nekim vremenskim intervalima.
Prilikom izmena tabela u bazi, postoji mogućnost da se treba malo sačekati ili uraditi refresh
Šta je radila Suprotna grupa (17.09) ?
ISTI ZADATAK KAO ZA PRETHODNU GRUPU - SAMO SE NAZIV BAZE RAZLIKUJE I POSTOJI MALA VARIJACIJA OKO TIPOVA PODATAKA U REŠENJU.
Za potrebe organizacije i registrovanja rezultata BILIJARSKIH mečeva tokom nadmetanja na međunarodnom turniru u ovom sportu potrebno je da se kreira baza podataka.
- slika dijagrama baze je ista
- rešenje se razlikuje samo u malim detaljima, pa neće biti posebno objašnjavano, već je postavljena slika table - klik da se prikaže ili sakrije
