[ milig @ 08.10.2005. 14:55 ] @
Da li neko moze da mi objasni razliku izmedju PRIMARY KEY i UNIQUE KEY ?
[ SmilieBG @ 08.10.2005. 16:08 ] @
Generalno:

primary - uvek jednistven i sluzi za identifikaciju reda u bazi;
unique - 'jedno od' polja u tabeli, koji ima extra osobinu - da bude jedinstveno.

U prakticnom smislu, lakse je da:

select * from baza where userid = 1;

u ovom slucaju je userid primary; Odavde mozes da vadis i baratas sa ostalim podacima iz baze, koji su vezani za tog usera.

Sa druge strane, da nema primary ili ako ne zelis da ga definises, onda bi radio sledece:

select * from baza where ime = neko_ime, prezime=neko_prezime, brojcarapa=broj_carapa, vrstapsa = vrsta_psa, bojaociju=boja_ociju itd itd itd

Razlog ovome je, sto nemas nijedan primary (jedinstven) zapis za korisnika, po kojem bi mogao da ga definises, nego mi morao da napravis spoj 'detalja' koji grupisani definisu jednog usera ;)

Kada razmislis o recimo, nekom velikom magacinu, sa 150.000 proizvoda, onda mos' misliti koliki bi posao bio da programer identifikuje jedan od 150.000 proizvoda, da nema primary ;) E, pa isto toliko posla bi bilo i za samu bazu da barata tolikim podacima.

Znaci primary spasava :)

Poz,
Sale
[ SmilieBG @ 08.10.2005. 16:10 ] @
Ah, da zaboravio sam jos...

Primary je najcesce jos i auto_increment + integer... Da bi prilikom svakog novog zapisa u bazu, sam MySQL odredio koji je sledeci broj za ID... ;)

Poz,
Sale
[ misk0 @ 08.10.2005. 17:55 ] @
I jos jedna relacija
Primary Key je obavezno Unique, a Unique nije obavezno Primary.
Primjera radi, jedna tabela moze imati samo JEDAN Primary ali zato moze imati vishe Unique Key-ova.

Ako ne kontas ovo sve pitaj ponovo, ali objasni sta ne kontas:)
[ _owl_ @ 09.10.2005. 00:01 ] @
Koliko se secam kolona koja je UNIQUE moze sadrzati NULL vrednosti dok ona koja je PK ne moze.
[ milig @ 09.10.2005. 08:18 ] @
Hvala na iscrpnim odgovorima. Ako sam dobro razumeo, UK je samo jedna dodatna osobina koja se moze dodeliti svakom polju (nista spektakularno).
Citat:
misk0: I jos jedna relacija
Primary Key je obavezno Unique, a Unique nije obavezno Primary.
Primjera radi, jedna tabela moze imati samo JEDAN Primary ali zato moze imati vishe Unique Key-ova.

komentar : matematicki receno, PK implicira UK, a obrnuto ne vazi :>

Da malo pojasnim situaciju ...
Pravim PHP/MySQL aplikaciju za vodjenje maticnih knjiga, pa npr. imam tabelu MKR (Maticna Knjiga Rodjenih). U toj tabeli polje maticni broj bi moglo biti UK, ali to je manje vazno.
Primarni kljuc u MKR je polje tekuci_broj koje je oblika :
tekuca_godina / redni_broj_upisa_u_tekucoj_godini
primer: 2004/36

Da li je moguce da ovakav PK bude Autoincrement (s'obzirom da nije integer) ?
[ _owl_ @ 09.10.2005. 10:51 ] @
autoincrement je samo jos jedna osobina koju kolona koja je tipa integer moze da ima (pod uslovom da je ta kolona i PK a mozda i UNIQUE).
Ti u svojoj tabeli imas kompozitni PK (koji se sastoji od vise polja), tako da je odgovor na tvoje pitanje ne. Takodje sto se tvog problema tice imas dva kandidata za primarni kljuc :
1 tekuca_godina, redni_broj_upisa_u_tekucoj_godini
2 maticni broj
U zavisnosti sa kojim tabelama je ova povezana treba da izvrsis izbor kolona koje cine PK.