Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako postaviti constraint

[es] :: MySQL :: Kako postaviti constraint

[ Pregleda: 3051 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bantu

Član broj: 38670
Poruke: 305
217.23.198.*



+27 Profil

icon Kako postaviti constraint04.09.2007. u 09:45 - pre 169 meseci
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.
 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
89.146.179.*



Profil

icon Re: Kako postaviti constraint05.09.2007. u 07:50 - pre 169 meseci
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
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Re: Kako postaviti constraint05.09.2007. u 14:26 - pre 169 meseci
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
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
89.146.171.*



Profil

icon Re: Kako postaviti constraint05.09.2007. u 14:48 - pre 169 meseci
@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
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Re: Kako postaviti constraint06.09.2007. u 13:31 - pre 169 meseci
OK, hvala, probao sam. To mi je trebalo. Pozz!
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

[es] :: MySQL :: Kako postaviti constraint

[ Pregleda: 3051 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.