Gå til innhold

[Løst]Lagring/Behandling av info for 2 dager i uka, gjennom året


Anbefalte innlegg

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
Videoannonse
Annonse

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 av TheClown
Lenke til kommentar

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

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 av TheClown
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...