egy tábla vs több tábla
Üdv mindenkinek!
Egy rövid kérdésem lenne, igazából a tapasztalatokra lennék kíváncsi a következővel kapcsolatban:
nem sok mennyiségű adat (egyenlőre 10 000 alatt) esetén, ha pl. egy fórumról van szó (tehát téma szerint csoportosítva), akkor melyik érdemesebb: 1 nagy táblában tartani az összes adatot és bejegyzést vagy inkább sok kicsire bontani?
Mivel lekérdezésileg sok különbség nincs, maximum kényelmi szempontok, ezért inkább a sebesség, veszélyek, stb. válaszok érdeklnének.
Előre is köszönöm,
Cadeyrn
■ Egy rövid kérdésem lenne, igazából a tapasztalatokra lennék kíváncsi a következővel kapcsolatban:
nem sok mennyiségű adat (egyenlőre 10 000 alatt) esetén, ha pl. egy fórumról van szó (tehát téma szerint csoportosítva), akkor melyik érdemesebb: 1 nagy táblában tartani az összes adatot és bejegyzést vagy inkább sok kicsire bontani?
Mivel lekérdezésileg sok különbség nincs, maximum kényelmi szempontok, ezért inkább a sebesség, veszélyek, stb. válaszok érdeklnének.
Előre is köszönöm,
Cadeyrn
több tábla
egy nagy tábla
bbalint
3NF
--
slink
http://20y.hu/
indexelés
Nekem az indexeléssel kapcsolatban lenne kérdésem...
Ha van egy központi "users" tábla amiben többek közt szerepel szerepel város, kerület és csapat mező és van külön város,kerület,csapat tábla is melyekben a lehetséges adatokat és egy auto_incrementes id-t tárolok.
a kérdésem az lenne hogy hogyan kell megadni a lekérdezést hogy a szöveges adatokat kapjam vissza, úgy hogy a useres táblában a fent említett mezőkben csak id-ket tárolok.. (a users táblában a többi mező text típusú és azoknak a tartalmára is szükségem lenne..)
A példa kicsit konkrétabban:
users tábla:
- user_id /smallint , auto_inc , kulcs
- nev /text
- nick /text
- varos_id /smallint
- kerulet_id /smallint
- csapat_id /smallint
varos tábla (kerület és csapat tábla hasonlóképpen)
- varos_id /smallint , auto_inc , kulcs
- varos /text
jah és még valami írtad hogy az eredményhalmaz gyorstárazzásával lehet gyorsítani a lekérdezést, ez mit takar? SESSIONN vagy valmi tök más..
elöre is köszi a helpet ..
LEFT JOIN
Gyulus
join muvelettel
SELECT users.nev, users.nick, varos.nev, kerulet.nev, csapat.nev
FROM users, varos, kerulet, csapat
WHERE users.varos_id = varos.varos_id AND
users.csapat_id = csapat.csapat_id AND
users.kerulet_id = kerulet.kerulet_id;
JOIN, AdoDB
Eredményhalmaz gyorstárazására számos lehetőség van, én többnyire az AdoDB beépített lehetőségét szoktam javasolni, de itt is van egy életképes megoldás.
--
slink
http://20y.hu/
köszi
hali
A LEFT JOIN mondjuk
szvsz
JOIN
-ok és a "kapcsolódási" feltételek kiírásával biztos úgy kapcsolja össze őket.aszem, legalábbis ennyi amire a PostgreSQL doksiból most így emlékszem.
bbalint
a join megoldással az userek
számokkal: ha userek tablában van 200 sor, varos ablaban 30, korzet tablaban 20 és csapat tablaban 40, akkor joinnal 200 rekor kerul listázásra, ha csak felsoroljuk akkor 200*30*20*40 sor..
a kevesebb jobb :)
ergo megegyezik mind három tábla id-je?
vagy mégsem?
viszont az én esetemben a users tábla egy amolyan központi tábla.. annál is igy kell sorba rakosgatni?
vagyis =>
bocsi hogy ennyit szenvedek de valahol el kell kezdenem..
bye Tomi
Pontosítás
A táblakapcsolatokat kétféle módon lehet létrehozni, vagy JOIN művelettel a FROM záradékban, vagy felsorolod a táblákat és a WHERE záradékban adod meg a kapcsolódási feltételeket. Ez az utóbbi megfelel a INNER JOIN műveletnek, ha INNER JOIN kapcsolatot akarsz alkalmazni, használhatod az INNER JOIN utasítást vagy a kapcsolódási feltételeket megadhatod a WHERE záradékban.
Egyébként a témaindító kérdésre nem lehet egyértelmű válaszolni, mert nem tartalmazza a kérdés, hogy milyen adatokat akar összevonni vagy külön tárolni.
Ezért lehet, hogy azt kéne ajánlani, hogy tárolja egyben, de lehet, hogy azt, hogy bontsa szét több táblára az adatokat. De nem tudjuk, hogy mit, csak azt tudjuk, hogy fórumadatokról van szó. Egy fórumnál lehetnek különböző fórumtipusok, a fórumtipusokon belül különböző témák, majd hozzászólások, vannak regisztrált felhasználók, stb. Melyik tábla adatait akarja kettébontani?
ahol a part szakad :)
viszont a ti javaslataitok alapján... én valahogy így kapcsolnám össze a dolgokat.. (ami szerintem nem jó..)
SELECT * FROM tabla1 INNER JOIN table2 INNER JOIN table3 INNER JOIN table4 ON table1.mezo1 = table2.mezo1, table1.mezo2 = table2.mezo1.... stb;
ez "ha" müködne akkor gondolom hogy az 1es táblához a kettest és a ketteshez a hármast a hármashoz meg a négyest kapcsolná.. ellenben azzal ami nekem kell (1 táblához kapcsolok 3 másikat)
remélem értitek, és javítsatok ki ha rosszúl gondolom, de nekem nem következik 2 tábla összekapcsolásából hogy megtudom csinálni ezt 4 esetében is...
mégegyszer bots ha sokat értetlenkedek de minden mysql-es manualban csak 2 táblát kapcsolnak össze viszont inner join -nál olvastam hogy 50 valahányat lehet elméletben összekapcsolni...
nah várom a reakciókat .. bye Tomi
left join
Tehát nem "felfűzésként" működik, hanem amit hozzácsatoltál, az bekerül az közösbe, és onnan bármelyik tábla bármelyik mezőjéhez csatolhatod a következőt.
THX
bye Tomi
left join