[MYSQL]Op zoek naar goede tabellenstructuur+query

Pagina: 1
Acties:

  • OCTheEagle
  • Registratie: April 2005
  • Laatst online: 15-04 12:54
Hoi,

Ik heb de volgende situatie:
In een bedrijf heb je 3 processen, elk proces bevat 3 activiteiten die verschillen per proces. Elke activiteit kan maar uitgevoerd worden door een beperkt aantal personen. Henk kan bijv activiteit 2 van proces 2, maar Jan weer niet.

Dit wil het bedrijf:
Het bedrijf wil nu weten welke activiteiten bepaalde medewerkers kunnen uitvoeren en andersom, dat je per proces de activiteiten ziet met daarbij de persoon die het kan uitvoeren.

Het makkelijkste zou zijn 1 tabel met daarin de velden 'medewerker', activiteit1vanproces1, activiteit2vanproces1, activiteit3vanproces1,activiteit1vanproces2 etc etc. Daarentegen wordt dit onoverzichtelijk om in te vullen als het bedrijf over een jaartje (bijvoorbeeld) 60 processen en 180 activiteitein heeft. Let er op dat de huidige processen en activiteiten niet zullen veranderen.

Mijn idee was het volgende, zie daarvoor het volgende plaatje:
Afbeeldingslocatie: http://home.wanadoo.nl/wjnijhof/bf2/123.jpg

(de reden dat er bij elk proces een 'int' staat is omdat het een checkbox is, daarbij is aangecheckt een 1 en niet gecheckt een 0)

Voordelen:
- Overzicht blijft gehandhaaft
- De activiteiten die een medewerker kan verrichten kunnen snel worden gewijzigd
- Een nieuw proces kan gemaakt worden mbv een nieuwe tabel aanmaken.

Nu is de vraag, je kunt nu dmv een query achterhalen welke medewerker(s) een bepaalde activiteit kan/kunnen verrichten, maar hoe kun je nu achterhalen wat een medewerker allemaal kan? Ook vraag ik mij af of er een betere tabellenstructuur oplossing is voor mijn probleem.

[ Voor 4% gewijzigd door OCTheEagle op 12-12-2005 11:54 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je kunt toch vrij eenvoudig terug naar 1 tabel?

Proces
-Procesnr
-MedId
-Act1
-Act2
-Act3

Indien aan 1 proces meerdere medewerkers kunnen zitten en 1 medewerker aan meerdere processen, dan kun je overwegen om een koppeltabel erbij in het leven te roepen. Je verwijdert medewerkerid dan uit tabel proces

ProcesMedewerker
-Procesnr
-MedId

En als je toch nog 3 "tabellen" wil hebben voor elk procesnr 1, dan kun je eventueel views definieren (kan dat in mysql?).

[ Voor 67% gewijzigd door bigbeng op 12-12-2005 12:00 ]


  • OCTheEagle
  • Registratie: April 2005
  • Laatst online: 15-04 12:54
hmm

Gewoon ff om wat inzicht te verschaffen:
Als je nu van medewerker henk wilt zien welke activiteiten hij kan verrichten, wat zou jouw query dan zijn?

[ Voor 215% gewijzigd door OCTheEagle op 12-12-2005 12:27 . Reden: Ff de formulering aangepast ]


  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Ik vraag me af of je activiteiten wel erin moet zetten. Kan alleen als ieder proces er ook echt maar 3 heeft..

Ik denk dat je iets moet gaan lezen over databaseontwerp & normaliseren..

  • Glorificationer426
  • Registratie: November 2001
  • Laatst online: 20-04 22:50

Glorificationer426

come we hero rush yes?

het is bijna 1,5 jaar geleden dat ik iets met databases heb gedaan, maar als het aantal processen en/of actions variabel is, waarom zou je dan steeds de hele tabel moeten aanpassen als er een nieuw proces of activiteit bijkomt? Lijkt me niet nodig.

Medewerkers
MedId

Processes
ProcessId

Actions
ActId
ProcessId

Access
AccId
MedId
ActId

en dan met foreign keys die dingen aan elkaar koppelen enzo :)

[ Voor 4% gewijzigd door Glorificationer426 op 12-12-2005 12:12 ]

(@DiscWout) omg
(@DiscWout) bijna over mn nek :D
(@DiscWout) echt zo een boer laten, hele mond vol kots :D


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
OCTheEagle schreef op maandag 12 december 2005 @ 12:01:
hmm

Als je nu van medewerker henk wilt zien welke activiteiten hij kan verrichten, wat zou jouw query dan zijn?
SQL:
1
2
3
4
5
SELECT procesnr, act1, act2, act3
FROM Proces p, ProcesMedewerker pm, Medewerker m
WHERE p.procesnr = pm.procesnr
AND pm.medId = m.medId
AND m.naam = 'Henk'

Zoiets?

Als je activiteiten los wilt kunnen zien van processen, dan zul je die ook los moeten koppelen. Dan kun je dus beter doen wat flashin zegt.

De suggestie van Glorificationer zou ik niet zondermeer overnemen, omdat zijn voorstel Access bepalend maakt voor welke activiteiten bij een process horen. Ik zou dit eerder in een koppeltabel tussen Proces en Activiteit stoppen.

[ Voor 32% gewijzigd door bigbeng op 12-12-2005 12:14 ]


  • Glorificationer426
  • Registratie: November 2001
  • Laatst online: 20-04 22:50

Glorificationer426

come we hero rush yes?

bigbeng schreef op maandag 12 december 2005 @ 12:09:
De suggestie van Glorificationer zou ik niet zondermeer overnemen, omdat zijn voorstel Access bepalend maakt voor welke activiteiten bij een process horen. Ik zou dit eerder in een koppeltabel tussen Proces en Activiteit stoppen.
Ja ik had ff te snel getikt, het is al aangepast :Y)

(@DiscWout) omg
(@DiscWout) bijna over mn nek :D
(@DiscWout) echt zo een boer laten, hele mond vol kots :D


  • OCTheEagle
  • Registratie: April 2005
  • Laatst online: 15-04 12:54
Bedankt voor jullie reacties allemaal.

Ik ga weer eens het een en ander uitproberen aan de hand van jullie tips en ideeën. Volgens mij is de oplossing van Glorificationer de goede oplossing voor mijn situatie. Daarmee krijg je namelijk gewoon de lijst waarme je kan filteren op medewerker, activiteit etc

[ Voor 43% gewijzigd door OCTheEagle op 12-12-2005 12:26 . Reden: Niet te snel jullie posts wijzigen, mijn reacties kloppen telkens niet meer! :) ]

Pagina: 1