TheClown Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Hei! Jeg har IT1 på skolen (vgs2), og siden jeg allerede er langt over pensum har jeg fått en spesialoppgave av læreren. 2 ganger i uka har skolen "studieøkter" hvor elevene selv kan velge hvilke rom de vil sitte i og jobbe med det faget de vil. I de forskjellige rommene sitter det forskjellige lærere med forskjellig fag-utdanning og fag-kunnskaper. Det mest av systemet er ferdig, men nå sliter jeg med å komme på en eller annen lur måte å lagre hvilke rom de forskjellige lærerne sitter i. Hvilke rom læreren sitter i kan være helt forskjellig fra uke til uke, noen uker kan det hende at læreren ikke sitter i et rom i det heletatt. Åssen skal jeg lagre dette i en database for å hente ut informasjonen enkelt mulig? Jeg tenkte på [ukenummer]:[tirsdag = 1 eller torsdager = 2] = [rom id],[ukenummer]:[tirsdag = 1 eller torsdager = 2] = [rom id]. Men denne metoden fører til at jeg må explode osv unødvendig mye. Så jeg vil veldig gjerne høre deres forslag. Åssen skal jeg lage informasjone om hvilke rom en lærer sitter i 2 ganger i uka (tirsdag og torsdag) i løpet av et helt år. Dagene må også kunne være tomme, dersom læreren ikke sitter i et rom. Romiden er en INT og veldig kort... Noen forslag? Diskusjonen er åpen, den med det beste forslaget får en e-klem! - Thomas Lenke til kommentar
JohndoeMAKT Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Du bruker en relasjonsdatabase? Har du en tabell med alle rommene og en tabell med alle lærerne? Lenke til kommentar
TheClown Skrevet 2. desember 2009 Forfatter Del Skrevet 2. desember 2009 (endret) Relasjonsdatabase? Bruker MySQL... Ja, og ja. Rom inneholder i enkelthet rom_id og rom_navn ++ litt unødvendig info Læreren inneholder learer_id, learer_navn ++ litt unødvendig info. Hadde i utgangspunktet tenkt til å legge til en text/varchar med en laaang string med mitt forslag ovenfor, bruke explode to ganger for å hente ut dagens/fremtidig rom. Men er det ingen enklere metode å gjøre det på? Endret 2. desember 2009 av TheClown Lenke til kommentar
JohndoeMAKT Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Jeg hadde nok løst dette med en join-tabell mellom de to med disse tre feltene: id for rom, usignert tiny eller medium int. id for lærer, en usignert medium int. dato, date_time. Du setter så date pluss lærer som primary key. Det gjør at en lærer vil bare kunne være i ett rom om gangen og du vil i INSERT-spørringene kunne bruke: INSERT INTO room_teacher ( date, teacher_id, room_id ) VALUES ( '{$dato}', {$teacherId}, {$roomId} ) ON DUPLICATE KEY UPDATE rom = {$romId}. Lenke til kommentar
TheClown Skrevet 3. desember 2009 Forfatter Del Skrevet 3. desember 2009 (endret) Er dette virklelig den beste metoden å gjøre det på? Selvfølgelig tenkt på det også, å bare ha en entry for hver dato, og hver lærer. I såfall blir det jo veldig mange entries til sammen... Selvfølgelig det aller enkleste, men er det så bra med tanke på plass? Ikke at jeg egentlig har problem med plass, men vil liksom at læren skal være fornød med fremgangsmåten min. Skal tenke litt over dette. Noen andre som har noen ideér? Endret 3. desember 2009 av TheClown Lenke til kommentar
JohndoeMAKT Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 Når det kommer til databaser må du ikke primært bry deg om plass, du må bry deg om hastighet. En CSL med datoer i et tekstfelt er f.eks en forferdelig løsning selv om det holder med én rad for hver lærer. Lenke til kommentar
Ernie Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 Er dette virklelig den beste metoden å gjøre det på? Selvfølgelig tenkt på det også, å bare ha en entry for hver dato, og hver lærer. I såfall blir det jo veldig mange entries til sammen... Selvfølgelig det aller enkleste, men er det så bra med tanke på plass? Ikke at jeg egentlig har problem med plass, men vil liksom at læren skal være fornød med fremgangsmåten min. Skal tenke litt over dette. Noen andre som har noen ideér? Jeg støtter løsningen skissert av JohndoeMAKT. Å snakke om plass her er bare bortkastet. Med 2xmediumint og datetime blir hver rad på 14byte. Mao., du skal ha endel lærerer og uker før det er blir noen datamengder å snakke om i det heletatt. Dessuten er det langt bedre enn å måtte herje med explode og en string som sannsynligvis uansett blir i nærheten av, om ikke større enn, 14byte. Etter min mening er det en enkel og hensiktsmessig løsning på problemet hvor man har en klar koblingen mellom rom, lærer og tid. Skal det dyttes inn i en string i stedet blir det straks mer komplisert og lite klart hvor en lærer til en gitt tid. Si at du f.eks. ønsker å vite hvilket rom en gitt lærerer er på torsdag om x uker, eller at du ønsker å vite hvilken lærer som sitter på et gitt rom tirsdag om x uker. I hvilken løsning er det enklest å komme frem til svaret? Lenke til kommentar
TheClown Skrevet 3. desember 2009 Forfatter Del Skrevet 3. desember 2009 Takk for svar. Denne enkel metoden viste seg å redde meg fra masse arbeid, det er oppe og går nå Takk skal dere ha Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå