Elakadtam, és úgy vélem azért, mert elvileg sem jól indultam el. muszály leírjam a körülbelüli helyzetet a jobb értelmezőséghez.Elnézést ha kicsit hosszú leszek.
- Létre kell hozzak egy olyan oldalt, ahol alkatrészeket lehet böngészni.
- Az alkatrészek azonosításához szükséges a gépkocsi gyártmánya, tipusa, évjárata és motortipusa. Ezeknek az adatoknak létrehoztam 1-1 külön szótárat.
- A 'Tipus' szótár entitásai(mezői) lettek a gyártmány, az évjárat és motortipus. Ide kerültek feltöltésre a különböző tipusú autók, amelyeket értelemszerüen azonosít a gyártmány(1 érték), az évjárat(több érték)illetve a motortipus(több érték).
- Mindezek egy 'Alkatrész' tartalomtipusba(node) kerülnek be, ahol majd azonosítani lehet velük a beküldött alkatrészeket.
- A Feltöltés: Mivel egy alkatrész több tipusba és azokon belül sok évjárathoz, és motortipushoz is jók, ezért itt többszörös kiválasztás kell,de egy alkatrész nem törvényszerüen jó egy tipus minden motorjához és évjáratához is, ezért itt is szelektálni kell, ráadásul az igény az, hogy ('bolondbiztos módon')a feltöltésnél kiválasztott tipus(okhoz) csak a hozzá tartozó évjáratból és motortipusból lehessen (multiple) módon megadni a paramétereket.
Már beleőszülök a helyzetbe, mivel az elv nem áll össze, hogy hogy lehetne mindezt bármilyen módon is megoldani.
(Ha minden tipushoz csinálok egy-egy újabb termet, ahol még külön megadom a gyártási éveket, a másikba pedig a motortipusokat, és mindezt az 'alkatrész' node-ba is beviszem mezőnként az maga a dráma.Ha egy hierarchikus szótárba rendezem, akkor rengeteg ismétlődés lesz....)
Ha nagyjából érthetően sikerült vázoljam a helyzetet és van bármi elképzelésetek, hogy ti milyen módon hoznátok mindezt létre, úgy kérem segítsetek benne!
Nem tudom mi a
megoldás, de tényleg rossznak tűnik a módszer amivel indulni szeretnél:
> A 'Tipus' szótár entitásai(mezői) lettek a gyártmány, az évjárat
> és motortipus. Ide kerültek feltöltésre a különböző tipusú autók,
> amelyeket értelemszerüen azonosít a gyártmány(1 érték), az
> évjárat(több érték)illetve a motortipus(több érték).
Ha beviszel egy kifejezést ebbe szótárba, akkor kb. így viszed be:
Itt már kavar van, mert nincs információ arról, hogy az évjáratok és motortípusok között milyen összerendelések lehetségesek, pl. 2002-ben lehet hogy csak 1360 cm3-s motor volt, 2005-ben viszont 1360 és 1600 cm3-s motor is volt. Szerintem így nem jó ez a szótár.
És mivel ez az igény:
> de egy alkatrész nem törvényszerűen jó egy tipus minden
> motorjához és évjáratához is, ezért itt is szelektálni kell,
> ráadásul az igény az, hogy ('bolondbiztos módon')
Így az hogy menjen a dolog, szerintem a gyártmány és az évjárat-motortípus párok között egy-a-többhöz kapcsolat kell.
Ez például megoldható úgy is talán, hogy:
- Van egy szótárad a csak a gyártmányokkal.
- És van egy tartalomtípusod az évjárat és motortípus mezőkkel, ehhez hozzá van rendelve a gyártmány szótár.
Amikor beviszel egy évjárat-motortípus tartalmat, nyilván több gyártmányhoz is hozzárendelheted (többszörös választás a gyártmány szótárból), pl. a 2002-1360cm3 tartalom bevitelekor megkaphatja Peugeot és Toyota kifejezést is.
--------------------------
Vegyük az egyszerűbb esetet (nálad sajnos nem ez van):
Ha egy alkatrészhez csak egy "gyártmány és évjárat-motortípus" összerendelés tartozhatna, akkor az alkatrész bevitelekor:
- Kiraksz egy lenyíló listát a gyártmányokkal (a szótáradat), amiből csak egy gyártmányt választhat. (Itt kiválasztja, hogy Peugeot)
- Ezután ajax-al megjelenítesz még egy beugró listát (többszörös választás), és ide betöltöd azokat a tartalmakat (évjárat-motortípus node-ok), amiket a Peugeot-hoz rendeltél. Így itt már több a Peugeot-hoz tartozó évjárat-motortípus-hoz is hozzá lehet rendelni az alkatrészt.
---------------
És most jön a bonyolultabb eset, nálad ez van:
Na de mi van ha az alkatrész nem csak a Peugeot-hoz való? Hanem más gyártmányhoz is?
- A fenti logikát követve ajax-al fel kellene dobnod mégegyszer a lenyíló listát a gyártmányokkal (amiből már hiányzik a Peugeot!!!), itt kiválasztja a Toyotát.
- Ezután ajax-al megjelenítesz még egy beugró listát (többszörös választás), és ide betöltöd azokat a tartalmakat (évjárat-motortípus node-ok), amiket a Toyotához rendeltél. Itt is választ néhányat.
... és így tovább a beugráló ajax-os listákkal...
Nagyon ronda megoldásnak tűnik, több sebtől vérzik.
Én is megkérdeznék mást (kíváncsi vagyok), hogyan kell jobban megcsinálni. :)
Mindenesetre jó volt gondolkodni a feladaton, meg legalább talán tisztább a probléma, ha egyáltalán jól értettem.
kis kiegészítés
>'évjáratok és motortípusok között milyen összerendelések lehetségesek..'
Mivel maga a megrendelő sem tudja, hogy melyik évben milyen motorok voltak(de vélhetően mind), ezért az eredeti 'halmazos' megoldás még nem okozna gondot.
Ezért -szerintem- nem is fontos összerendelni a motortipusokat és az évjáratokat(maradhat külön-külön 'halmaz').
Az alkatrész feltöltéskor ezek a évjárat és motortipus 'halmazok' hozzárendelődnek az alkatrészhez, a lekérdezéseknél(keresés) pedig mivel a gyártmányt, a tipust, az évjáratot és a motortipust adjuk meg keresési feltételeknek egyértelmüen le is válogatódnak.
(Amúgy köszönöm a közös gondolkozást.)