Forum » Programiranje » 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 :)
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 :)
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
http://goo.gl/2YuS2x
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8353 (5032) | BivšiUser2 |
» | PostgreSQL pomočOddelek: Programiranje | 2505 (1998) | Mato989 |
» | SQL pomočOddelek: Programiranje | 2390 (1804) | miko22 |
» | [SQL] Kako omejiti vrednost med parent in child tabelo?Oddelek: Programiranje | 1433 (1227) | MrStein |
» | SQL težavaOddelek: Programiranje | 5169 (4451) | joseti |