[ bantu @ 04.09.2007. 09:45 ] @
Kako postaviti constraint da mi se prilikom inserta u tabelu gradjanin ne desava problem sa nekoegzistencijom podataka DrzavaID i GradID?
Da li je potrebno redizajnirati bazu?

Code:

DRZAVA
DrzavaID    Naziv
001    Spania
002    Italija

GRAD
GradID    DrzavaID    Naziv
001    001    Barselona
002    001    Madrid
003    002    Rim

GRADJANIN
GradjaninID    GradID    DrzavaID    Ime_i_Prezime
00000001    001    001    Ime Prezime
00000002    003    001    Ime1 Prezime1



Pozdrav.
[ mb_sa @ 05.09.2007. 07:50 ] @
Da bi mogao korstiti constrainate u MySQL-u tabela mora biti u INNO_DB enginu (što po defaultu nije, jer je MYISAM).

Vise infomracija o INNO DB na http://dev.mysql.com/doc/refman/5.0/en/innodb.html.

Tebi u biti trebaju:

1. PRIMARY KEY na DrzavaID, GradID i GradjaninID
2. FOREIGN KEY na DrzavaID (tabela GRAD) i na GradID, DrzavaID (tabela GRAĐANIN)
3. eventulano UNIQUE KEY na sve tri tabele po uslovima koje smatras najpodesnijim

O svemu ovome možeš čitati u mySQL-om manulau na www.mysql.com

I vjerovano ti nije potrebna kolona drzavaID u tabeli GRADJANIN jer ako znas u kojem gradu živi gradjanin, znas i u kojoj državi, jer znas koji grad pripada kojoj državi. Ako je izbacis onda ces iamti malo vise spajanja u upitima dok budes dohvato rezultate
[ mika @ 05.09.2007. 14:26 ] @
Ajd da ne postavljam ponovo temu, imam i ja jedno pitanjce. Ako imamo sledeću test-bazu (innoDB engine je u pitanju::)




Code:
Create table Projekti (
    idProjekta Bigint NOT NULL,
    nazivProjekta Char(20),
 Primary Key (idProjekta)) ENGINE = InnoDB;

Create table Dokumenti (
    idDokumenta Bigint NOT NULL,
    idProjekta Bigint NOT NULL,
    nazivDokumenta Char(20),
 Primary Key (idDokumenta)) ENGINE = InnoDB;

Alter table Dokumenti add Foreign Key (idProjekta) references Projekti (idProjekta) on delete  restrict on update  restrict;


Interesuje me sledeće: da li je moguce da se u tabeli Dokumenti postavi takvo pravilo, da je moguce upisati samo ID validnog Projekta (tj. onog koji postoji u tabeli Projekti) ili ne upisati uopšte idProjekta (NULL)? Da li je dovoljno u definiciji tabele Dokumenti staviti samo ...idProjekta Bigint NULL,, ili je potrebno jos nesto ?

Pozz
[ mb_sa @ 05.09.2007. 14:48 ] @
@mika
TO sto tebi treba vec je uradjeno u tabelama koji si naveo, sto je i jedna od svrha PRIMARY i FOREIGN KEY constrainta!

I ako vec iz nekgo razloga želiš da u nekim slucajveima idProjekta bude NULL, onda prilikom definicije tabele i to dozvolis na nacin koji si naveo
[ mika @ 06.09.2007. 13:31 ] @
OK, hvala, probao sam. To mi je trebalo. Pozz!