Kezdőlap › Fórumok › Programozás › MySQL kezdõ
- This topic has 72 hozzászólás, 16 résztvevő, and was last updated 17 years, 4 months telt el by
balev.
-
SzerzőBejegyzés
-
2006-10-20-17:13 #2062855
Van egy forrásból fordított MySQL szerverem (4.1.21) és egy olyan problémám volna, hogy az adatbázisba tett ékezetes betűk elvesznek, pedig direct úgy fordítottam, hogy a default charset latin2 és a collation latin2_hungarian_ci. Ez mitől lehet?
2006-10-20-19:05 #2062856Hogyan hoztad létre az adatbázist?
Próbáld meg ezt:Code:mysql> show variables like ‘%char%’;Ez megmutatja a karakterkódolással kapcsolatos változókat
2006-10-21-12:59 #2062857chris19 wrote:Van egy forrásból fordított MySQL szerverem (4.1.21) és egy olyan problémám volna, hogy az adatbázisba tett ékezetes betűk elvesznek, pedig direct úgy fordítottam, hogy a default charset latin2 és a collation latin2_hungarian_ci. Ez mitől lehet?Lehet h butaságot mondok, de ha jól tudom 4.x-es MySql-től a latin2 csak úgy működik rendesen, ha a connect után kiadod a következő parancsot:
SET NAMES latin2Azt nem tudom, hogy pontosan melyik verziótól kezdve kell, de az biztos, hogy 5.0-nál nekem csak ezzel volt hajlandó rendesen kezelni az ékezeteket.
2006-10-30-11:48 #2062858Szia,
Igazad volt. SET NAMES latin2.
Mert enélkül ugyan ment, csak az „ű” „ő” betűk nem mentek.
Nagyon köszi a segítséget.2006-12-03-10:33 #2062859Szerbusztok!
Egy portálon belüli üzenetküldő rendszert csinálok, php a feldolgozó, MySQL az adatbázis. Azt akarom elérni, hogy a még nem olvasott leveleknél figyelmeztessen, ha én törlök egy levelet, az a feladónál megmaradjon, és fordítva.
Tulajdonképp az egész szkript annyi, hogy beírja a MySQL-be, ahonnan aztán olvassa a php.
A kérdés a következő: mi a gyorsabb? Ha a feladó, címzett, időpont, levél tartalma tábla mellé csinálok még egy oszlopot, ahol 0-7-ig lehetnek az értékek, ha 1 – küldő törölte, ha 2 – címzett törölte, ha 4 – még nem olvasta, tehát úgy megvalósítani, mint a UNIX-jogkör, vagy pedig nyitni 3 új oszlopot, küldő törölte, címzett törölte, címzett olvasta nevekkel, és csak 0-1 lehet az értékük?
Nem akarom úgy lekódolni, hogy utána átírhassam az egészet2006-12-03-12:55 #2062860Minek tennél hozzá több mezőt, ha elég egy is, amiben flag-eket tudsz beállítani, ahogy írtad? 🙂
Fontos mindig jól előre átgondolni a táblák szerkezetét, felépítését, mert később kevesebb gond van vele. Persze, ettől függetlenül nem lehet mindent előre látni. Ha állandóan csak a javításokkal, átírással foglalkozik az ember, akkor sohasem lesz „kész” a program.
Hiába gondoltam át én is az előző munkám tábláit, végül rengeteg módosítást kellett csinálnom rajtuk. No de ez nem gond, hiszen MySQL-ben nagyon könnyen lehet mezőket kivenni, beszúrni, átnevezni, tulajdonságot váltani, stb.
(egyébként szervusz: http://en.wikipedia.org/wiki/Servus)
2006-12-03-13:23 #2062861Köszönöm az infót!
(a b és v eset pedig megér egy misét… 🙂 )
2006-12-04-00:05 #2062862Wait wrote:Szerbusztok!Egy portálon belüli üzenetküldő rendszert csinálok, php a feldolgozó, MySQL az adatbázis. Azt akarom elérni, hogy a még nem olvasott leveleknél figyelmeztessen, ha én törlök egy levelet, az a feladónál megmaradjon, és fordítva.
Tulajdonképp az egész szkript annyi, hogy beírja a MySQL-be, ahonnan aztán olvassa a php.
A kérdés a következő: mi a gyorsabb? Ha a feladó, címzett, időpont, levél tartalma tábla mellé csinálok még egy oszlopot, ahol 0-7-ig lehetnek az értékek, ha 1 – küldő törölte, ha 2 – címzett törölte, ha 4 – még nem olvasta, tehát úgy megvalósítani, mint a UNIX-jogkör, vagy pedig nyitni 3 új oszlopot, küldő törölte, címzett törölte, címzett olvasta nevekkel, és csak 0-1 lehet az értékük?
Nem akarom úgy lekódolni, hogy utána átírhassam az egészetA 3 külön oszlop a jobb, elmondom miért. Az adatbázisoknál gyakran nem a sebesség a legfontosabb, hanem az áttekinhetőség és a redurancia (egy olyan adat ismétlődése, aminek csak egy értéke lehet; ha nem, akkor gubanc alakul ki) elkerülése. Ezért vannak az NF-ek (normálforma). Célszerű 3NF-ig legalább elmenni, ha nagyon szép, és tiszta adatbázist akarsz, akkor BCNF; az 5NF szerintem egy kicsit túlzás. (bővebb felvilágosítást erről a google tud adni).
Illetve, ha belegondolsz, akkor jobban kereshető, és ezzel gyorsabb. Ha pl nem akarod lekérni a címzett által törölteket, akkor csak beleraksz egy olyat, hogy „WHERE cimzett_torolt 1”, és kész. Nem kell $n rekorddal többet lekérni, aztán php-ben utólagosan szelektálni.Ha pedig nem hiszel nekem, akkor nézd csak meg phpmyadmin-ban, hogy a mysql hogyan tárolja el a jogokat (mysql tábla). Ugyanilyen módszerrel.
2006-12-04-00:11 #2062863Elhiszem, de az első megoldás több CPU-t, ez több HD-t eszik. Tudtommal pedig a CPU a gyorsabb 🙂
Van olyan szerencsém, hogy ezt csak egyszer kell megírnom, utána le van tudva, de asszem kétszer fogom megírni, tesztelek 😀
Amúgy 0-1 adathoz milyen típust adjak meg az oszlopnak?2006-12-04-00:28 #2062864Wait wrote:Elhiszem, de az első megoldás több CPU-t, ez több HD-t eszik. Tudtommal pedig a CPU a gyorsabb 🙂
Van olyan szerencsém, hogy ezt csak egyszer kell megírnom, utána le van tudva, de asszem kétszer fogom megírni, tesztelek 😀
Amúgy 0-1 adathoz milyen típust adjak meg az oszlopnak?valóban, de mégis a HDD-ból van több, főleg, ha normális szerverre rakod (és gondolom nem otthonra szánod, hanem ki akarod rakni vmi tárhelyre), mivel egy oldalnál sokkal fontosabb szempont az oldalgenerálási idő, mint az, hogy mekkora SQL tárhelyet foglal (szvsz, de szerintem vannak, akik osztják a véleményem).
próbálkozz BOOL-lal (phpmyadmin szerint van), ha az nincsen, akkor INT(1)
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz