Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Svrha Foreign Key kada se koristi MyIsam (PHP)

[es] :: MySQL :: Svrha Foreign Key kada se koristi MyIsam (PHP)

[ Pregleda: 3632 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zgas

Član broj: 74613
Poruke: 334
*.ptt.yu.

Sajt: odbrojavanje.com


Profil

icon Svrha Foreign Key kada se koristi MyIsam (PHP)19.06.2007. u 15:45 - pre 204 meseci
Nisam neki strucnjak za baze. Doduse napravio sam vise baza i to dosta velikih.

Malo me muci sto nigde nisam koristio Foreigne Key! Imao sam baze sa mnogo tabela koje su logicki povezane, ali ja nikada skoro nisam koristio Foreigne Key.

Koja je svrha upste Foreigne Key-a!?

Oprostite na pitanju, ali ja nisam nikada imao potrebu da ga koristim iako su mi tabele bile logicki povezane.

Sada pravim vecu bazu pa me interesuje... da ne propustim Foreigne Key ako je bitan.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.it-austria.net.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Svrha Foreign Key kada se koristi MyIsam (PHP)19.06.2007. u 16:19 - pre 204 meseci
MyISAM engine ne podrzava Foreign Key, tako da nisi nista propustio. :)

Jedino ako budes koristio InnoDB, onda mozes ubaciti foreign keys ...
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

kostas_bgd
Konstantin Simić
Beograd

Član broj: 7967
Poruke: 115
*.dynamic.sbb.rs.

Jabber: kostas85@gmail.com
ICQ: 345746817


Profil

icon Re: Svrha Foreign Key kada se koristi MyIsam (PHP)24.09.2009. u 06:51 - pre 176 meseci
Svrha foreign keya (spoljnog ključa) u sistemu za upravljanje bazama podataka jeste obezbeđenje referencijalnog integriteta. Šta to znači? Dakle, pomoću spoljnih ključeva, definišemo relacije između tabela u bazi, odnosno kako su te tabele međusobno povezane. Referencijalni integritet se odnosi na operacije UPDATE i DELETE. On nam omogućava da pri brisanju nekog zapisa iz jedne tabele ne narušimo integritet zapisa u drugoj tabeli. Na primer, imamo dve tabele:

Film (filmid, nazivFilma, reziserid)
Reziser (reziserid, imeRezisera, prezimeRezisera)

Tabela Film je povezana sa tabelom Reziser pomoću spoljnog ključa reziserid. Ako želimo da dodamo film "Jurassic Park" koji je režirao Steven Spielberg, najpre dodajemo režisera u tabelu Režiser:

Code:
INSERT INTO Reziser (reziserid, imeRezisera, prezimeRezisera) VALUES (100, 'Steven', 'Spielberg')


Sada dodajemo novi film u tabelu Film:

Code:
INSERT INTO Film (filmid, nazivFilma, reziserid) VALUES (1, 'Jurassic Park', 100)


Ovde problem nastaje ako želimo da izbrišemo Spielberga iz tabele Reziser. Ukoliko sistem za upravljanje bazom podataka ne podržava spoljni ključ, tada
će brisanje Spielberga uspešno proći. Problem će se ispoljiti u samom programu (ili web aplikaciji) koji koristi bazu. Recimo, pri listanju filmova, u koloni Reziser ćemo umesto Spielbergovog imena dobiti poruku o grešci.

Ukoliko pak sistem za upravljanje bazom podataka podržava spoljne ključeve, moguće mu je zadati na koji način da rešava problem referencijalnog integriteta pri izvršavanju operacije UPDATE i DELETE. To može biti CASCADE (brisanje oba povezana zapisa, u našem primeru će se izbrisati i Spielberg i Jurassic Park), RESTRICT (neće se dozvoliti brisanje Spielberga ukoliko u povezanoj tabeli Film postoji makar jedan film koji je on režirao) i SET NULL (Spielberg će se izbrisati, ali će vrednost atributa reziserid za zapis Jurassic Park biti postavljen na NULL vrednost, umesto nekadašnje vrednosti 100).

Kod MySQL sistema za upravljanje bazom, samo InnoDB engine podržava spoljne ključeve, ostali engine-i to ne podržavaju. Međutim, i u tom slučaju se može rešiti problem referencijalnog integriteta, ali taj problem rešava programer aplikacije, postavljanjem dodatnih uslova za brisanje i ažuriranje zapisa. Naravno, to znači i više posla za programera.

Prednost InnoDB engine-a jeste prisustvo spoljnih ključeva, ali su njegov glavni nedostatak performanse, koje su neuporedivo bolje kod engine-a MyISAM (koji za sada ne podržava spoljne ključeve). Razlika u performansama se neće primetiti kod malih baza podataka, ali kod većih baza, sa mnoštvom tabela i zapisa to može predstavljati veliki problem.
 
Odgovor na temu

[es] :: MySQL :: Svrha Foreign Key kada se koristi MyIsam (PHP)

[ Pregleda: 3632 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.