Forum » Programiranje » tuji ključi pri kreiranju tabel
tuji ključi pri kreiranju tabel

Lisa ::
Imam tri entitete z relacijami:
ENTITETA1 - ENTITETA2 (ena proti mnogo)
ENTITETA2 - ENTITETA3 (ena proti mnogo)
zanima me, ko kreiras tabele, kako je z prenasanjem tujih kljucev:
Ali je pravilno tako:
CREATE TABLE ENTITETA1 (id1,...)
CREATE TABLE ENTITETA2 (id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,id1,...)
Ali tako:
CREATE TABLE ENTITETA1 (id1,...)
CREATE TABLE ENTITETA2 (id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,...)
Malo sem že pozabila kako je s tem.... ali se kdo spomni?
ENTITETA1 - ENTITETA2 (ena proti mnogo)
ENTITETA2 - ENTITETA3 (ena proti mnogo)
zanima me, ko kreiras tabele, kako je z prenasanjem tujih kljucev:
Ali je pravilno tako:
CREATE TABLE ENTITETA1 (id1,...)
CREATE TABLE ENTITETA2 (id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,id1,...)
Ali tako:
CREATE TABLE ENTITETA1 (id1,...)
CREATE TABLE ENTITETA2 (id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,...)
Malo sem že pozabila kako je s tem.... ali se kdo spomni?

darh ::
Zakaj ne vidim razlike med primeroma? Kje boš to uporabila (Access? Oracle?)?
Excuses are useless! Results are priceless!

Seadoo ::
Verjetno te zanima, kateri stolpci so primarni in kateri tuji ključi v vsaki od treh teh tabel?
V prvi je primarni ključ ID1, tujega ni (ker ni parent tabele).
V drugi je primarni ključ ID2, tuj pa ID1 (ker je ta parent).
V tretji je primarni ključ ID3, tuj pa ID2, in samo ID2, ne pa tudi ID1 (ker je samo druga tabela parent).
V tretji tabeli bi imela dva tuja ključa, v kolikor bi tabela imela dve nadrejeni tabeli.
x-bite: razlika je v tretji tabeli:
CREATE TABLE ENTITETA3 (id3,id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,...)
V prvi je primarni ključ ID1, tujega ni (ker ni parent tabele).
V drugi je primarni ključ ID2, tuj pa ID1 (ker je ta parent).
V tretji je primarni ključ ID3, tuj pa ID2, in samo ID2, ne pa tudi ID1 (ker je samo druga tabela parent).
V tretji tabeli bi imela dva tuja ključa, v kolikor bi tabela imela dve nadrejeni tabeli.
x-bite: razlika je v tretji tabeli:
CREATE TABLE ENTITETA3 (id3,id2,id1,...)
CREATE TABLE ENTITETA3 (id3,id2,...)
Zgodovina sprememb…
- spremenilo: Seadoo ()

Seadoo ::
Kopernik: po mojem pa drugi. Sicer tega nisem eksplicitno povedal, se pa upam da vidi iz mojega posta.

kopernik ::
Očitno imam narobe
Eh, v bazah nisem kaj preveč doma...

Eh, v bazah nisem kaj preveč doma...
Zgodovina sprememb…
- spremenil: kopernik ()

BigWhale ::
Glede na to, da neposredne povezave med E3 in E1 nimas, potem je drugi primer, nekako bolj smiselen. S prvim primerom pa si najbrz malo olajsas delo pri iskanju elementov v E3.
Ce hoces za nek E1.id dobiti ven nek E3.column pride do tega:
SELECT E3.Column FROM E3, E1 WHERE E1.id1 = E3.id1
vs
SELECT E3.Column FROM E3, E2, E1 WHERE E1.id1 = E2.id1 AND E2.id2 = E3.id2
Ce hoces za nek E1.id dobiti ven nek E3.column pride do tega:
SELECT E3.Column FROM E3, E1 WHERE E1.id1 = E3.id1
vs
SELECT E3.Column FROM E3, E2, E1 WHERE E1.id1 = E2.id1 AND E2.id2 = E3.id2

Lisa ::
O.k. hvala za odgovore - tudi meni je bila bližje ta druga varianta, ampak nisem bila prepričana.

dudi ::
Bolj pravilen je drugi primer. V prvem primeru brez potrebe v tretjo tabelo vlečeš še ključ prve tabele (pravila normalizacije)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] - združitev glede na iste vrednostiOddelek: Programiranje | 1450 (1092) | tx-z |
» | Myslq index ne deluje???Oddelek: Izdelava spletišč | 2303 (2081) | algo |
» | MySQL RelacijeOddelek: Izdelava spletišč | 1165 (931) | mkos2 |
» | [SQL] InsertOddelek: Programiranje | 2115 (1717) | greentech |
» | php, mysql SELECT MAX(id)...Oddelek: Programiranje | 1316 (1212) | Gre-Gor |