» »

Podatkovna baza - foreign key

Podatkovna baza - foreign key

abyssus ::

Imam vprašanje glede tujih ključev v podatkovni bazi. Upam, da ne zveni preveč butasto, vendar me zanima, v čem je razlika, če ustvarim foreign key oz. če ga ne. Primer: imam dve tabeli, kjer ima tabela2 stolpec ID_tabela1 - tukaj imam shranjen ID iz tabele1. Normalno tukaj povežemo potem foreign key, ampak zakaj? Če naredimo potem SELECT stavek, recimo
SELECT * FROM tabela2 WHERE ID_tabela1 = 5; se bo stavek normalno izvedel in izpisal rezultate za tisti ID. Upam, da razumete kaj mislim. Torej, stolpec, ki naj bi predstavljal id z druge tabele imamo vseeno, vendar ne nastavim na ta stolpec foreign keya, vnašam pa ga tako, kot da je foreign key. Vse dela, vendar vseeno vprašanje sedaj, zakaj postavit foreign key? Kaj pridobimo? Sam sem pri vsaki bazi sedaj naredil foreign keye vendar sem sedaj pri enem preprostem primeru preprosto pozabil in nato ugotovil, da dela in se udaril po glavi, ker je logično da dela, ni pa mi sedaj logično, kaj pridobim z ustvarjanjem foreign keya.

Prosim za vljudno razlago :)

para! ::

Za zagotavljanje referenčne integritete podatkov.
Death before dishonor!

drola ::

Če imaš nastavljene foreign keye, ti RDBMS prepreči storiti nekatere neumnosti, npr. vstavljati vrstice, ki kažejo na neobstoječo vrstico v drugi tabeli ali pa izbrisati vrstico na katero se sklicujejo druge vrstice. Torej, če narediš napako v aplikaciji, ki uporablja to bazo ali pa pri direktnem urejanju baze, ti je potem RDBMS dodatna zaščita, da se v bazi ne pojavijo reference na neobstoječe vnose = referenčna integriteta.
https://drola.si

Invictus ::

Foreign key to tudi kaskadno pobriše vse reference v drugih tabelah, če originalno zbrišeš.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

drola ::

Ja, če tako nastaviš. Lahko pa ti samo vrže error in ne izvede ničesar.
https://drola.si

abyssus ::

Hvala vam vsem!


Vredno ogleda ...

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

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
688413 (5092) BivšiUser2
»

PostgreSQL pomoč

Oddelek: Programiranje
162523 (2016) Mato989
»

SQL pomoč

Oddelek: Programiranje
132412 (1826) miko22
»

[SQL] Kako omejiti vrednost med parent in child tabelo?

Oddelek: Programiranje
71465 (1259) MrStein
»

SQL težava

Oddelek: Programiranje
365252 (4534) joseti

Več podobnih tem