Deti chodi na zajmove krouzky. Mam vice deti a chtel bych vedet, ktere ma kam dneska jit.
Krouzky jsou
celorocni, treba v pondeli v 15:00 a 17:00; ve stredu o 16:00.
mezi urcenymi datami bez roku, kde je priorita. Treba "pri letnim casu se stretame v pondeli o 15:30 a ve ctvrtek v 16:30".
v pevny datum jako 20.11.2022, co ma jeste vetsi prioritu nez urcene data bez roku.
Mam N deti, kazde ma M krouzku. Dnes je ctvrtek 17.11.2022 - jak najit, kdo ma jaky krouzek?
Muj navrh:
Dite - ID, jmeno, prijmeni.
Krouzek - ID, nazev, adresa.
DetiKrouzky - DiteID, KrouzekID
KrouzekCelorocni - ID, KrouzekID, DenVTydnu, Cas
KrouzekCelorocniDatumCas - KrouzekCelorocniID, DenVTydnu, Cas
KrouzekVyjimecny - ID, KrouzekID, StartDatum, StopDatum, NegaceIntervalu (T/F - to necht netreba resit zlom roku)
KrouzekVyjimecnyDatumCas - KrouzekVyjimecnyID, DenVTydnu, Cas
KrouzekJednoDatum - ID, KrouzekID, Datum
KrouzekJednoDatumDatumCas - KrouzekJednoDatumID, DenVTydnu, Cas
A vyber by byl v podstate veliky JOIN s LEFT JOINy a vybere se prakticky vsechno. Kdyz se nenajde JednoDatum, pouzije se Vyjimecny a kdyz se nenajde vyjimecny, pouzije se Celorocni.
Cleneni mam, nebot override muze byt i ze krouzek neni.
Mate napad, jestli to jde udelat lepe? Je to vice-mene akademicka debata, jen se nad tim zamyslim, delal bych to treba v MySQL; neznam specialni featury jinych DB.