[Database design] ontwerpissue

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
Hallo medetweakers,

Ik heb jullie hulp nodig met een database ontwerp kwestie waar ik zelf nog over twijfel. Ik ben met het volgende bezig: Voor mijn werk moet ik een relationele database ontwerpen voor MSSQL Server 2005. Ik ben begonnen met een aantal dingen op papier uit te tekenen waarbij ik gebruik maak van de "ERD" methode. Ik zal even kort proberen uit te leggen wat ik tot nu toe heb:

- Een tabel/entiteit Medewerker met gegevens van alle medewerkers.
- Een tabel/entiteit Werkdoel met daarin Werkdoelen waarop de medewerkers uren moeten schrijven.
- Een (koppel)tabel/entiteit WerkdoelMedewerker met daarin de medewerkers per werkdoel.
- Een (koppel)tabel/entiteit TrimesterPlanning met daarin de planning van alle medewerkers per trimester. Een trimester bestaat uit 4 maanden: {jan, feb, mrt, apr}, {mei, jun, jul, aug} en {sep, okt, nov, dec}. Een jaar heeft dus in totaal 3 trimesters.

Dit zijn de relevante tabellen waar mijn vraag over gaat. Dan even wat relationele dingen:

- Een medewerker heeft per Werkdoel 1 of meerdere Trimesterplanning(en). Dat wil dus het volgende zeggen: Medewerker A heeft voor Werkdoel 1020, trimesterplanning 1, 2 en 3. Voor trimester 1 moet hij dus uren inplannen voor de maanden jan, feb, mrt en apr. Voor trimesterplanning 2 de maanden mei, jun, jul en aug. Voor trimesterplanning 3 de maanden sep, okt, nov en dec.

Nu heb ik in de tabel TrimesterPlanning de volgende kolommen opgenomen: "trimestercode (codes 1, 2 en 3)" "uren_maand1", "uren_maand2", "uren_maand3" en "uren_maand4". Ik twijfel alleen of dit een goede en mooie oplossing is. Ik ben namelijk gistermiddag al een tijd bezig geweest om dit uit te zoeken en ik twijfel aan de oplossing die ik gevonden heb. Ik ben benieuwd of jullie dit op dezelfde manier zouden oplossen of dat jullie eventueel mooiere en betere oplossingen hiervoor kunnen bedenken.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:01
rickjehh schreef op donderdag 16 juli 2009 @ 10:11:
Nu heb ik in de tabel TrimesterPlanning de volgende kolommen opgenomen: "trimestercode (codes 1, 2 en 3)" "uren_maand1", "uren_maand2", "uren_maand3" en "uren_maand4".
Zoiets doet bij mij toch altijd de nodige alarmbellen afgaan.

Ik denk dat ik de notie 'trimester' niet in mijn database zou opnemen, maar eerder met 'maanden' zou werken.
In je applicatie/business logic kan je dan het 'trimester' gedoe introduceren, door de juiste maanden samen te nemen.
In dat geval zou ik dus een tabel 'medewerker' , een tabel 'werkdoel', een tabel 'maanden' hebben, en een koppeltabel 'planning'.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
whoami schreef op donderdag 16 juli 2009 @ 10:22:
[...]
Zoiets doet bij mij toch altijd de nodige alarmbellen afgaan.

Ik denk dat ik de notie 'trimester' niet in mijn database zou opnemen, maar eerder met 'maanden' zou werken.
In je applicatie/business logic kan je dan het 'trimester' gedoe introduceren, door de juiste maanden samen te nemen.
In dat geval zou ik dus een tabel 'medewerker' , een tabel 'werkdoel', een tabel 'maanden' hebben, en een koppeltabel 'planning'.
Klopt, ik heb zelf ook het gevoel dat het niet helemaal juist is op deze manier. Maar het is wel zo dat een medewerker per trimester zijn uren moet plannen, dus telkens op 4 maanden (maar dat is in de applicatielaag op te lossen). Jij zou dus de WerkdoelMedewerker koppeltabel laten vallen en deze opnemen in de planning tabel? Jij zou dus in de tabel planning per maand records gaan toevoegen? Iets als:

werkdoelcode, medewerker, maand, uren

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:01
rickjehh schreef op donderdag 16 juli 2009 @ 10:27:
[...]


Klopt, ik heb zelf ook het gevoel dat het niet helemaal juist is op deze manier. Maar het is wel zo dat een medewerker per trimester zijn uren moet plannen, dus telkens op 4 maanden (maar dat is in de applicatielaag op te lossen). Jij zou dus de WerkdoelMedewerker koppeltabel laten vallen en deze opnemen in de planning tabel?
Dat weet ik niet.
Zowiezo kan je die informatie idd afleiden uit je planning tabel, maar ik ken jouw probleem niet voldoende om hierover te oordelen.
Jij zou dus in de tabel planning per maand records gaan toevoegen? Iets als:

werkdoelcode, medewerker, maand, uren
Ja. In je applicatie kan je dan wel, als de medewerker zijn planning moet invullen, ervoor zorgen natuurlijk dat je per trimester de juiste maanden gaat gaan tonen, waarvoor hij dus uren moet ingeven.

waarom zet jij steeds 'per' in bold ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19-09 10:08

Haan

dotnetter

Trimister opnemen in de database lijkt me ook een slecht idee, misschien wordt volgend jaar opeens besloten om per kwartaal of per 2 maanden te plannen, dan ga je helemaal nat met je ontwerp ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:01
Haan schreef op donderdag 16 juli 2009 @ 10:31:
Trimister opnemen in de database lijkt me ook een slecht idee, misschien wordt volgend jaar opeens besloten om per kwartaal of per 2 maanden te plannen, dan ga je helemaal nat met je ontwerp ;)
Idd, ook één van de redenen waarom ik het 'per maand' zou gaan doen. :)
Je bent gewoon flexibeler.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • chime
  • Registratie: Januari 2005
  • Laatst online: 09-09 12:46
rickjehh schreef op donderdag 16 juli 2009 @ 10:27:
[...]


Klopt, ik heb zelf ook het gevoel dat het niet helemaal juist is op deze manier. Maar het is wel zo dat een medewerker per trimester zijn uren moet plannen, dus telkens op 4 maanden (maar dat is in de applicatielaag op te lossen).

werkdoelcode, medewerker, maand, uren
Dat kan je best niet in de database steken.
Want wat als ze het later per maand moeten kunnen invullen, of per half jaar, ...

Slaag het, zoals voorgesteld, per maand op.
Je applicatie kan vervolgens gebruikt worden om het per trimester te laten zien / invullen.

Je bent dan ook ineens een stuk flexibeler naar de toekomst toe.

Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
whoami schreef op donderdag 16 juli 2009 @ 10:29:
Dat weet ik niet.
Zowiezo kan je die informatie idd afleiden uit je planning tabel, maar ik ken jouw probleem niet voldoende om hierover te oordelen.
Daar twijfel ik zelf ook aan, aangezien een medewerker per werkdoel een aantal "begrote_uren" per jaar heeft. Een medewerker krijgt bijvoorbeeld voor werkdoel 1020 voor het jaar 2009 80 uur begroot. Deze informatie moet ook ergens opgeslagen worden en die kan je niet in de Planning tabel op gaan slaan. In dat geval zou de WerkdoelMedewerker tabel blijven bestaan met daarin alle medewerkers per werkdoel en de begrote_uren per medewerker.

[ Voor 10% gewijzigd door rickjehh op 16-07-2009 10:40 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:01
rickjehh schreef op donderdag 16 juli 2009 @ 10:36:
[...]


Daar twijfel ik zelf ook aan, aangezien een medewerker per werkdoel een aantal "begrote_uren" per jaar heeft. Een medewerker krijgt bijvoorbeeld voor werkdoel 1020 voor het jaar 2009 80 uur begroot. Deze informatie moet ook ergens opgeslagen worden en die kan je niet in de Planning tabel op gaan slaan. In dat geval zou de WerkdoelMedewerker tabel blijven bestaan met daarin alle medewerkers per werkdoel en de begrote_uren per medewerker.
Daar moet je dus niet aan twijfelen, die tabel blijft dan idd bestaan. (Met waarschijnlijk nog een extra tabel aan gekoppelt, nl die begroting, want een project kan misschien wel meer dan één jaar in beslag nemen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
whoami schreef op donderdag 16 juli 2009 @ 10:47:
Daar moet je dus niet aan twijfelen, die tabel blijft dan idd bestaan. (Met waarschijnlijk nog een extra tabel aan gekoppelt, nl die begroting, want een project kan misschien wel meer dan één jaar in beslag nemen.
Ahh juist, dat ik daar zelf niet eerder aan gedacht heb! Soms heb je even de hulp van anderen nodig om je eigen beeld weer helder te maken! Ik maak ook nog een extra koppeltabel "WerkdoelBegroting" waarin dus per jaar het aantal begrote uren en zelfs de financien opgeslagen kunnen worden! Daarnaast maak ik nog een extra koppeltabel met daarind de begrote uren per medewerker per jaar.

Bedankt voor jullie hulp, ik denk dat het nu wel gaat lukken!

[ Voor 7% gewijzigd door rickjehh op 16-07-2009 10:52 . Reden: typo's ]


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
rickjehh schreef op donderdag 16 juli 2009 @ 10:11:
Een trimester bestaat uit 4 maanden: {jan, feb, mrt, apr}, {mei, jun, jul, aug} en {sep, okt, nov, dec}. Een jaar heeft dus in totaal 3 trimesters.
Even een beetje off topic, maar een trimester is per definitie een periode van 3 maanden (tri = drie mensis (de Griekse wortel van mester) = maanden), als je dus vast blijft houden aan een periode van 4 maanden, gebruik dan een andere term, aangezien het ooit wel tot verwarring gaat leiden.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19-09 10:08

Haan

dotnetter

Remus schreef op donderdag 16 juli 2009 @ 16:15:
[...]

Even een beetje off topic, maar een trimester is per definitie een periode van 3 maanden (tri = drie mensis (de Griekse wortel van mester) = maanden), als je dus vast blijft houden aan een periode van 4 maanden, gebruik dan een andere term, aangezien het ooit wel tot verwarring gaat leiden.
offtopic:
ik zou toch ook hebben durven zweren dat met een trimester een derde deel van een jaar werd bedoeld, net als kwartaal een kwart jaar is, maar het blijkt dus dat trimester en kwartaal synoniemen zijn 8)7 Omdat scholen dus drie trimesters per jaar hebben onstaat de verwarring denk ik. Correcte term voor vier maanden zou tertiaal of quadrimester moeten zijn

[ Voor 7% gewijzigd door Haan op 16-07-2009 16:50 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
tri·mes·ter het; o -s (ond) periode van drie maanden
Rocket science :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
Remus schreef op donderdag 16 juli 2009 @ 16:15:
[...]

Even een beetje off topic, maar een trimester is per definitie een periode van 3 maanden (tri = drie mensis (de Griekse wortel van mester) = maanden), als je dus vast blijft houden aan een periode van 4 maanden, gebruik dan een andere term, aangezien het ooit wel tot verwarring gaat leiden.
Haha oh dat wist ik helemaal niet! Hier op mijn werk spreken ze van trimesters, en dat dat periodes van 4 maanden zijn dus vandaar dat ik dat gewoon over had genomen :p ik zal dat eens ff doorgeven! ;)
Pagina: 1