[ zorrome @ 26.08.2005. 17:39 ] @
Što je tu Surrogat ključ ili polje(nisam siguran što sam čuo) u bazama podataka - ili ja nisam dobro čuo? Nikad prije to nisam čuo.
[ antix @ 26.08.2005. 17:59 ] @
surrogate key je drugi naziv za vještački ključ koji dodijeliš određenom podatku... znači umjesto npr. JMBG ti koristiš neki ID da bi identifikovao neku osobu.
[ Riste Pejov @ 27.08.2005. 11:36 ] @
Surogatni kljucevi ti trebaju kada:
1. Tabela nema dobrog kandidata za PK.
2. PK je kompozitni sa veliki broj kolona i je kompliciran za upotrebu.
3. Kandidat za PK se koristi u FK relacije i svaka promena bi zahtevala cascade update

Primer koji apsolutno zadovoljava potrebe za surogatnim kljucem,

Tabele:
Code:

MASTER
------------
naziv  char(50)
tip      int
datum datetime
--------------
PRIMARY KEY (naziv,tip,datum)

DETAIL
------------
naziv    char(50)
tip        int
datum   datetime
ex_data char(100)
--------------
PRIMARY KEY (naziv,tip,datum,ex_data)
FOREIGN KEY fk1 ON naziv,tip,datum REFERENCES MASTER(naziv,tip,datum)


Ako se koriste surogatni klucevi onda bi tabele izgledale ovako:
Tabele:
Code:

MASTER
------------
MASTER_ID      int (sequence, autoinc, whatever ...)
naziv  char(50)
tip      int
datum datetime
--------------
PRIMARY KEY (MASTER_ID)

DETAIL
------------
DETAIL_ID      int (sequence, autoinc, whatever ...)
MASTER_ID      int
naziv    char(50)
tip        int
datum   datetime
ex_data char(100)
--------------
PRIMARY KEY (DETAIL_ID)
FOREIGN KEY fk1 ON MASTER_ID REFERENCES MASTER(MASTER_ID)


I polja koja su bili PK u prvom slucaju sada mogu imati samo UNIQUE constraint.