ugrás a tartalomhoz

Mysql táblák kapcsolata 'frissítés?'

Qkac · 2008. Jan. 13. (V), 06.17
Sziasztok!

Van egy mysql-es könyvem ami szépen leírja a táblák normalizálását és, hogy az elsődleges kulcs a táblák közti kapcsolatok kialakítására szolgál.

Most ha jól értem itt az a lényeg, ha több táblában ugyan az az adat van, akkor elég egyet frissíteni a többihez, vagy nem?

Leírok egy példát, és ahhoz szeretnék egy kis magyarázatot kérni:

van egy adatbázisom amiben vicceket tárolok.
A vicceket beküldhetik felhasználók is
tehát 3 táblám van (de csak a fontos oszlopokat írom)

Felhasználók (felhaszn_id <-primary, név stb..)
vicc_kat (kat_id <-primary, név stb...)
viccek (id <-primary, felhaszn_id, kat_id, vicc)

Minden primary id auto increment tulajdonságú, és azt szeretném megtudni, hogy lehet egyszerre változtatni őket

Egy új hír feltöltése esetén, ugye a felhaszn_id pl. nő eggyel, de az a szám hogyan kerül be a viccek tábla megfelelő oszlopába?

Php-t használok, előre is köszönök mindent :)
 
1

mysql_insert_id ()

razielanarki · 2008. Jan. 13. (V), 07.23
használd ezt a függvényt, az utolsó insert utasítás által létrehozott sor auto_incrementes értékének kinyerésére, és ezt az értéket használd a lekérdezésben. (manual)

bár a konkrét példában amit írtál a felhasználó id-t a jelenleg belépett felhasználó adataiból nyerném ki, a vicc kategóriáját pedig a beküldő formban pl egy select mező segítségével, vagy egy get-tel átadott kategória id vel (ujvicc.php?kat=42) állítanám be.

(továbbá egy kicsit kusza a kérdésed is... szerintem gondold át mégegyszer mert nem teljesen tiszta mit is szeretnél, de azért megpróbáltam válaszolni)
3

köszi megnézem

Qkac · 2008. Jan. 13. (V), 14.40
hm bocsi pixit későn írtam talán azért.. :)
Persze a kategóriát kiválaszthatja formról, de van egy kategóriák nevű tábla ami a kategóriákat tárolja és mind1iknek van egy auto increment id-je, amit a vicc tábla is tárol,
itt a kapcsolat

most meghatározhat új kategóriát is a felhasználó talán ezért nem értetted, de ha a másik táblát nézzük ott a viccet küldők vannak 'felhasznalo' tábla és azoknak is van id-jük amit felhaszn_id-ként szerepel a vicc mellett..

és igazából értelme tényleg nincs csak szeretnék elmélyülni a táblakapcsolatokban: nem az lenne ennek az egész normálformának a lényege, hogy ha ezekután pl. a felhasznalo táblában módosítom a felhasználó id-jét akkor az utána auto módosul a viccek táblában is? vagy ez csak hiú ábránd? mert akkor viszont nem értem mi értelme ennyit bajlódni a kapcsolatokkal, hogy a primary állt táblaösszekötő kulcs meg ilyenek nem tiszta ez nekem ennek mi értelme van akkor? :D
2

Idegen kulcsos moka?

Protezis · 2008. Jan. 13. (V), 10.43
En se ertem teljesen, hogy mit szeretnel. Ha az a celod, hogy pl. egy felhasznalo id modositasa/torlese a viccek tabla megfelelo soraira is valamilyen modon hatassal legyen, akkor ezt es ezt nezd meg. Es persze ezt.
4

ezlesz köszi

Qkac · 2008. Jan. 13. (V), 14.42
azért kb kiszűrted hogy mire gondolok :D aszem, de megnézem köcc!
5

A felhasználó_id a viccben nem módosul

foxmulder · 2008. Jan. 19. (Szo), 16.26
Az témaindító kérdésre:

...hogy az elsődleges kulcs a táblák közti kapcsolatok kialakítására szolgál.

Legelsősorban inkább a táblán belül a rekordok egyértelmű azonosítására. A kapcsolatokban "csak" felhasználjuk az azonosítókat (általuk teremtjük meg a kapcsolatot).
Egy új hír feltöltése esetén, ugye a felhaszn_id pl. nő eggyel, de az a szám hogyan kerül be a viccek tábla megfelelő oszlopába?

Mit jelent az új hír? Új vicc? A Felhasználók táblában a felhaszn_id csak akkor nő eggyel, ha új felhasználó regisztrál, a viccek tábla felhaszn_id mezője nem nő eggyel (semennyivel se nő), hanem azé a felhasználóé lesz, aki a cikket beküldte. Szerintem szerencsésebb volna a Felhasználók táblában egyszerűen csak "id"-nek nevezni az azonosítót (a vicc_kat táblában is)