Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema: relatii intre tabele ..
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
crytek



Data înscrierii: 18/Iul/2007
Mesaje: 23

Trimis: Dum Noi 25, 2007 11:26 pm    Titlul subiectului: Problema: relatii intre tabele ..  

Am si eu o nedumerire.Vreau sa mi se explice la obiect pentru ce exista relatiile intre tabele.
Deci.. spre exemplu..ai un tabel cu numele unor CD-uri si inca un tabel cu CAsa discuri.Fiecare CD poate avea o sg casa de discuri ..dar o casa de discuri poate avea mai multe cd-uri.
Deci va fi astfel ..Pimary key din casa de discuri va fi foreign key in tabelul cu CD-uri.Asta inteleg pentru ce imi trebuie,ca sa pot disinge ce casa de discuri are fiecare CD ..si in caz ca am gresit casa de discuri la vreo 25 de CD-uri o modific rapid din tabela casa de discuri.

Dar eu vreau sa stiu la nivel de cod de ce trebuie sa fac relatiile intre tabele.
Adica eu nu pot pur si simplu sa fac o tabela cu CD-uri si una casa de discuri,fiecare avand primary id-ul sau (fiind autoincrement)...Si mai fac un camp in tabela cu CD-uri,,denumit casa_discuri_id (aici ! e problema ! ..de ce trebuie sa fac acest camp neaparat foreign_key ? ...pe cand il creez pur si simplu fara sa il fac foreign...si cand introduc date in baza de date cd si casa de discuri dintr-un formular, introduc doar ce am de introdus ..si apoi scriu insert in tabela CD ,la campul casa_discuri_id , id-ul primar din tabela casa de discuri ..Deci asta nu inteleg ..de ce ar trebui sa ii dau foreign key la casa_discuri_id ..!?)
Poate ca o sa-mi explice careva..cu exemple de cod daca se poate ..
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Lun Noi 26, 2007 2:47 am    Titlul subiectului:  

Daca in definitia tabelei ai doar FOREIGN KEY, diferenta se simte in viteza cu care se executa interogarile bazate pe JOIN intre cele doua tabele.

Da' ia fi atent la sintaxa :
ALTER TABLE tbl_name
ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]

Folosind FOREIGN KEY ai o serie de avantaje, ca :
- stergerea, actualizarea in casacada
- impiedicarea inserarii inregistrarilor fara parinte

In cazul dat de tine nu te-ar lasa sa adaugi un disc fara sa-i precizezi casa, nu te-ar lasa sa stergi casa pentru ca tabela cealalta are discuri care fac referire la ea.
Mai multe citeste aici http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
Sus  
crytek



Data înscrierii: 18/Iul/2007
Mesaje: 23

Trimis: Lun Noi 26, 2007 1:57 pm    Titlul subiectului:  

Imi puteti da un tutorial complet si accesibil,pentru incepatori chiar ..poate in limba romana ..despre relatii dintre tabele .. ?
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Mar Noi 27, 2007 1:41 am    Titlul subiectului:  

Pe site-ul mysql nu-i destul?
Pentru teorie pura vezi manualele universitare. Cred ca sunt si pe net da' nu stiu.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community