» »

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?

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,...)

Zgodovina sprememb…

  • spremenilo: Seadoo ()

kopernik ::

Jaz bi rekel, da je prvi primer pravilen

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...

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

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] - združitev glede na iste vrednosti

Oddelek: Programiranje
131352 (994) tx-z
»

Myslq index ne deluje???

Oddelek: Izdelava spletišč
172162 (1940) algo
»

MySQL Relacije

Oddelek: Izdelava spletišč
61073 (839) mkos2
»

[SQL] Insert

Oddelek: Programiranje
252045 (1647) greentech
»

php, mysql SELECT MAX(id)...

Oddelek: Programiranje
171248 (1144) Gre-Gor

Več podobnih tem