Adatok kategóriákba-alkategóriákba szervezése hogyan? (bővebben lent)
Van egy szövegfájl, adatokkal.
Az adatok programmal jól feldolgozhatóak, kezelhetőek, rekordokba szervezhetőek.
Minden adatról a következő van:
- név
- gyártó
- Főkategória és alkategóriák, esetenként több is
Alkategóriából több is lehet, nagyon sok.
Olyan adatbázist szeretnék építeni ezekből, amelyekben az adatok kategóriánként és alkategóriánként is lehívhatóak.
Az lenne a jó, ha a beolvasás során lenne feltöltve és kialakítva az adatbázis.
Az adatok száma tízezernél is több.
Ki miképpen állna neki ennek?
Gondolok itt adatmodellre stb...
Én - csak Pascal-ban tudok - de a feladat megoldható, a Free Pascal semmit sem limitál.
Egy tömböt hoztam létre a kategóriáknak.
Másik tömbben pedig lenne az adott termék neve, gyártója meg - valamiféle mutatók - amelyek a "megfelelő kategóriákra és alkategóriákra mutatnak"...
Erre nem igazán van ötletem.
Az adatmodellt ezek alapján felvázolnátok (mondatszerű leírással, csak a rekord-szerkezetet), miképpen csinálnátok?
Én egy egyszerű sqlite adatbázist javasolnék négy táblával.
Kategóriák
Alkategóriák (kapcsolva a kategóriákhoz)
Termék
Alkategória-termék kapcsolatok
A legfontosabbat kifelejtetted.
1. Hány adat, hány rekord várható? Kétszáz, ezer, tízezer?
2. Milyen műveletek végrehajtása esedékes az adatbázison?
A rekordszerkezet meg,
név: string
gyártó: string
kategoriák: array of string // dinamikus tomb
De sztem, ha magas a rekordok száma, akkor jobban járnál egy (relacios) adatbázis kezelővel.
Köszönöm a válaszokat.
Több mint tízezer rekord várható. Húszezer azért nem lesz.
A lekérdezések például: adott kategóriában és alkategóriákban milyen termékek találhatóak, adott termék neve alappján a hozzátartozó főkategóriák és alkategóriák lekérdezése.
Én is így álltam neki (kategoriak "array of string" csak külön táblába tettem.
Amit 1. hozzászóló javasolt: Biztosan SQL segítségével könnyebben-gyorsabban-szebben oldható meg, csak nem értek hozzá. :)
Ha a tízezer rekordra nem jut túl sok egyidejű lekérdezés, akkor adatbázis kezelő nem is feltétlenül fog kelleni.
Létre kell hozz egy tipust (rekordszerkezetet). Ebből a tipusból kell deklarálnod egy statikus tömböt (mivel a dinamikus esetleg enné a procit meg a RAM-ot).
A műveleteket (keresés, szűrés, törlés, stb) meg magadnak kellene megírni, de nem egy eget rengető feladat ez, még egy kezdőnek sem.
A string tipusát is meg kell válaszd, hogy mondjuk short string, ansistring, widestring, vagy vmi más. Nem tom, ékezet kell-e?
A lekérdezés/törlés/stb nem probléma.
A termékekhez tartozó kategóriák-alkategóriák "hozzákapcsolása", a táblák egymáshoz történő viszonya/összekapcsolása tehát az adatok "táblázatba szervezése" aminél úgymond elakadtam.
Ékezetek kellenek, de ezt Free Pascal probléma nélkül oldja meg.
"A termékekhez tartozó kategóriák-alkategóriák "hozzákapcsolása", a táblák egymáshoz történő viszonya/összekapcsolása tehát az adatok "táblázatba szervezése" aminél úgymond elakadtam."
Ha jól sejtem, szerintem neked nem a táblákba szervezéssel, hanem a relációk kialakításával van gondod. Sajnos ehhez konkrétumok ismerete nélkül (mit szeretnél mihez hozzákapcsolni) nem tudok hozzászólni.
Igen, igazad lehet, valóban, a táblák közti relációk a probléma.
Vannak termékek és főkategóriák és alkategóriák. Minden termék esetén van ilyen.
Olyan termék is van, melynek csak egy főkategóriája és egy alkategóriája van, de olyan is, melynek egy főkategóriája és 3 alkategóriája.
Egy relációs adatbázisban lenne egy kapcsoló tábla, aminek két oszlopa lenne, kategória ID és termék ID, ez egy több-több összerendelés lenne a kettő között. Pl:
34 | 54
34 | 67
stb. És lenne külön tábla a kategóriáknak, ahol lenne a kategória neve és az ID-je, meg a termékeknek, ahol lenne a termék tulajdonságai meg az ID-je. Amikor a fájlt beolvasod, akkor dinamikusan tudnád az ID-ket létrehozni, és kitölteni a kategória-termék összerendelést.
Egy lekérdezés, hogy pl. az egyik kategóriában milyen termék van úgy nézne ki, hogy először kiszeded a ketegória ID-jét, majd a kapcsolótáblában kiszeded az összes olyan sort, ahol bal oldalt ez az ID van, és azok jobb oldalából visszakeresek a terméket
Ezt meg tudod csinálni kézzel is, de adatbázis kezelővel is.
Illetve ez egy megoldásfajta, van más is, ha ez nem tetszik
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!