ID za dve tabele
Pocetnik sam u PHP-u i do sada sve je islo, pa moglo bi se reci, glatko.Ali dosao sam do jednog dela koji nikako nemogu resiti.
Naime hocu da napravim naprimer skriptu za registraciju, ali takvu da username i password upisuje u tabelu "podaci", a email i lokaciju u tabeli "razno".Ja mogu da napravim upis (normalno), ali ne znam kako da napravim da id iz prve tabele bude isti kao id iz druge tabele, da bi posle mogao posle logovanja da napravim ispis iz obe tabele Nadam se da ste razumeli sta hocu da kazem |
Ако свака табеле креће од нуле, односно, раније није имала података, ID-еви ће ти бити исти уколико истовремено уписујеш податке у табелу.
Мада, далеко боље решење је да прво упишеш податке у табелу "podaci", нађеш ID последње уписаног слога па затим урадиш упис података у "razno" и ручно поставиш ID који си претходно сазнао. |
takav 'match' primarnih kljuceva uopste nije preporucljiv za rad.
ako to vec hoces da uradis, u tabeli "razno" dodaj jedno polje koje ti je ustvari spoljasnji kljuc za ovu bitniju tabelu. evo konkretno na sta mislim: tabela PODACI: user_id | int, PK, autoincrement username | varchar(32) password | varchar(32) tabela RAZNO: item_id | int, PK, autoincrement user_id | int email | varchar(32) lokacija | varchar(32) i ti sada uvek mozes da vezujes sve 'razne' podatke za usera kojeg god oces, nepogresivo. ovo ti je mnogo bolji koncept, nego da prosto pokusavas da matchujes primarne kljuceve, razni hororicni scenariji bi mogli da se dese. :| a ako oces da vidis kako najlakse da izvuces last-mysql-inserted-ID, pogledaj ovu komandu: "mysql_insert_id()" link: http://www.php.net/mysql_insert_id znaci cim ubacis nekog novog baticu na svoj sajt, samo mazni poslednji ID, npr: Kôd:
$query = "INSERT INTO users (username, password) VALUES ('dule', 'sifra')"; poz |
uzgred ne postoji valjani razlog da pravis ovakvu 1:1 relaciju, sem eventualno vezbe radi.. u prakticnoj primeni stavi sve u istu tabelu i uzivaj...
|
Citat:
P.S. Dobro si me podsetio ivanhoe sta da pitam.Znaci, da li je bolje kad imas dosta podataka koji se cuvaju u bazu staviti sve u jednoj tabeli ili rasporediti po vise tabela |
Citat:
Citat:
Ne vredi ovako, jednostavno moras da procitas neko stivo o normalizaciji i denormalizaciji podataka u bazi http://en.wikipedia.org/wiki/Database_normalization http://dev.mysql.com/tech-resources/...alization.html |
Znaci neam pojma gde sam ziveo :)
Ja se vec par dana mucim kako da organizujem bazu, i na kraju ukapiram (tacnije vi mi kazete) da je to apsolutno nebitno...Hvala puno |
nije nebitno, veoma je bitno kako ces organizovati bazu, ali ne optimizujes strukturu baze za ljude, nego za software. Zanima te iskljucivo da ubrzas i pojednostavis rad sa podacima (querije, joinove, i ostale operacije na bazi), a da pritom izbegnes svako dupliranje podataka (taj se proces zove normalizacija). Postoje tu neke razne normalne forme, odnosno nivoi optimizacije, mada je u praksi sasvim dovoljno malo logicnog (programerskog) razmisljanja i malkice iskustva da dodjes do istog (ali poznavanje teorije svakako ne skodi).
|
Vreme je GMT +2. Trenutno vreme je 16:30. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.