Mysql táblák kapcsolata 'frissítés?'
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 :)
■ 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 :)
mysql_insert_id ()
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)
köszi megnézem
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
Idegen kulcsos moka?
ezlesz köszi
A felhasználó_id a viccben nem módosul
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).
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)