 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|