Kezdőoldal » Számítástechnika » Programozás » Logikai változó tömböt hogyan...

Logikai változó tömböt hogyan tárolhatnék a legpraktikusabban MySQL adatbázisba?

Figyelt kérdés

Készítek egy játékot és arra gondoltam, hogy nem lokálisan, hanem távoli adatbázisban tárolnám a játékoshoz tartozó megszerzett mérföldköveket. A kérdés, hogyan lenne ezt praktikus tárolni?


Arra gondoltam, hogy a tömb elemeit integerként, vagy stringként tárolnám, és valahogy így nézne ki: "00110101", 0 jelenti a még nem teljesített feladatot, az 1-es pedig a teljesítettet.



Másik gondolatom, ami ebből származik, hogy ezt a bináris láncot átalakítom 10-es számrendszerbe és úgy mentem az adatbázisba, majd visszaolvasáskor kettesbe alakítva megkapom a mentett adatokat. Csak az aggaszt, hogy ha úgy mérföldköveket programozok a játékba, akkor több logikai érték lesz, így a lánc hossza is változik és ezáltal a korábbi változatban mentett értékek elcsúszhatnak.


Nincs erre valami elegáns, praktikus és egyszerű megoldás?



2014. márc. 4. 23:51
 1/8 anonim ***** válasza:
Nyugodtan vegyél fel külön oszlopokat, melyeket elnevezel - azok nem fognak elcsúszni. A logikai értéket TINYINT(1) típusú oszlopban szokták tárolni.
2014. márc. 4. 23:55
Hasznos számodra ez a válasz?
 2/8 Tengor ***** válasza:
83%

Az SQL adatbázis nem egy memória tömb. Az elgondolásod több szempontból is problémás.


Egy lehetőség: 3 tábla (séma). Egy amiben a felhasználóid vannak. Egy amiben a lehetséges mérföldkövek és egy amiben azt tárolod, hogy melyik felhasználó, melyik érföldkövet teljesítette már.

2014. márc. 4. 23:55
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

Azt hiszem ezt nevezik "0. normálformának": nem atomiak adattípusok.

Szerintem két táblád legyen, egyben az achievmenteket tárolod (ezt ugye idővel szabadon bővítheted), másikban pedig a játékos-achievment összerendeléseket. Többet tárhelyet foglal, de egyszerűbb, és szebb.

2014. márc. 4. 23:57
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
...én meg azt hiszem megtanulhatnám már helyesen is leírni: achievement.
2014. márc. 4. 23:59
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
Első normálformának hívják és magával az adattípussal még nem is lenne baj, de ez teljesen felesleges logikai nehezítés lenne. Nyugodtan csináld azt, amit előttem tanácsoltak. Az a megszokott, jó módszer.
2014. márc. 5. 00:07
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
51%

Vagy, ha mindenképpen egy rubrikába akarod tárolni, akkor (ahogy már ajánlották) hozz létre egy táblát, ahol tárolod az achievement-ket - kapjanak egy kettő hatványa alapú ID-t (1, 2, 4, 8, 16, 32, stb).


Majd a felhasználóknál bináros OR-al vedd egybe az értékeket, és mint INT tárold el a táblában.


Kiolvasáskor: ÉRTÉK AND ELLENŐRIZENDŐ == ELLENŐRIZENDŐ akkor azt már elérte a felhasználó. És ebben tudsz is keresni SQL-en keresztül is. Illetve, a jövőben bármikor adhatsz hozzá újabbakat és újabbakat, hiszen a régiek értéke nem fog változni.


Hátránya: az achievement száma korlátozott, hiszen nem tudsz bármekkora számot eltárolni egy INT-ben.

2014. márc. 5. 06:53
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

"Arra gondoltam, hogy a tömb elemeit integerként, vagy stringként tárolnám, és valahogy így nézne ki: "00110101", 0 jelenti a még nem teljesített feladatot, az 1-es pedig a teljesítettet."


Ha a játék során csak arra vagy kíváncsi, hogy egy adott játékos hol tart, akkor ez is teljesen jó. Javaslom, hogy int-ként tárold és a megfelelő bitet maszkold ki belőle. (Bár ennek a fajta helyspórolásnak már nincs nagyon értelme, hacsak nem többezer játékosod van.)


De ha azt is használnád, hogy pl. melyik mérföldkövet ki teljesítette, akkor a fenti kapcsolati tábla lehet jó, a játékosok és az eredmények között.

2014. márc. 5. 10:07
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Köszönöm az eddigi ötleteket! Végül is eddig a saját elgondolásomat valósítottam meg és remekül működik, de valószínűleg ki fogom próbálni a többit is, érdekes elgondolások születtek, a legtöbb eszembe sem jutott volna. Jó, hogy egy ilyen dologra ennyiféle ötlet született!
2014. márc. 11. 14:22

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!