[Access] Projecten met verschillende statussen en testtypes

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Beste mensen,

Ik ben bezig om een geheel generieke database in Access te maken voor het registreren van fouten. Ik zal eerst de mini uitgangssituatie even geven:

tbl_project
- project_id autonummering
- project_datum datum/tijd
- status_id numeriek
- testtype_id numeriek

tbl_status
- status_id autonummering
- status_naam tekst

tbl_testtype
- testtype_id autonummering
- testtype_naam tekst

Nou hebben alle projecten verschillende statussen en testypes (maar je moet deze wel op een plek kunnen beheren) en deze kan je bij een nieuw project aanvinken, bijv.:

project1
- status2
- status3
- testtype1
- testtype3

project2
- status1
- status4
- testtype2
- testtype3

Is het nou makkelijker om tussentabellen te maken zodat je een hele grote tabel tbl_project krijgt, of is het makkelijker om de status_id komma gescheiden in de tabel tbl_project neer te zetten (en zou het misschien nog weer anders kunnen)?

Carpenter

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Tussentabel.

Een van de regels van normaliseren en een goed datamodel : sla geen meerdere waarden in 1 veld op. (Dus geen komma-separated values in een veld).
Waarom zou je dat trouwens willen doen? Je haalt je alleen maar problemen op de hals. Stel je eens voor:
- hoe ga je makkelijk een status verwijderen van een project? Of toevoegen? of kijken of een project een bepaalde status heeft, etc....

https://fgheysels.github.io/


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
tnx voor het snelle reply btw :D

maar stel ik maak er nog een tabel bij, nl:

tbl_bevinding
- bevinding_id autonummering
- project_id numeriek
- status_id numeriek
- testtype_id numeriek

Als eerste maak je een nieuw project aan en hier voeg je de gewenste testtypes en statussen aan toe. Daarna wil je de bevindingen aanmaken en wil je hieraan het testtype en de status toevoegen (maar alleen een van degenen die je in het project hebt aangevinkt), maar dan krijg je een "rondje" in de relaties. Mag dit wel en zo niet hoe moet je dit oplossen? 8)7

[ Voor 3% gewijzigd door Carpenter op 24-09-2003 13:14 ]


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Ik weet dat je zelf je eigen topics niet omhoog mag schoppen, maar ik heb echt een antwoord nodig want dit is een belangrijk project voor stage. Dus ... iemand?

  • bigben04
  • Registratie: December 2001
  • Laatst online: 05-08 22:33
Maak twee koppeltabellen, bijv. tbl_project_status en tbl_project_testtype, beiden met een auto-id en een project id en status/testtype id. Op deze wijze zitten er volgens mij geen rondjes in de relaties.
Overigens, topic omhoog schoppen mag op zich wel, maar na minimaal 24 uur.

  • Harmen1975
  • Registratie: Juli 2002
  • Laatst online: 17-11-2025
Voor de andere tweakers:
Volgens mij bedoeld Carpenter met het rondje de 'veel kant' van een '1-op-veel'-relatie.

Voor Carpenter:
Geef eens wat meer info: jouw "rondje" is volgens mij een '1-op-veel'-relatie. Een '1-op-veel'-relatie is in Access niet vreemd en mag van Access zal er in de meeste gevallen niet moeilijk over doen :) Of jij er blij van gaat worden weet ik niet....uit je tekst kan ik niet opmaken wat wel en niet mag in je applicatie.

Geef eens wat meer info

If you don't succeed at first, redefine succes.


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Ik kan hier geen plaatjes uploaden omdat ik hier achter een gesloten werkplek zit dus ik probeer het zo duidelijk mogelijk uit te leggen (probeer anders zelf even uit te tekenen).

tbl_project
- project_id autonummering
- project_datum datum/tijd
- status_id numeriek
- testtype_id numeriek

tbl_project_status
- project_id numeriek
- status_id numeriek

tbl_status
- status_id autonummering
- status_naam tekst

tbl_project_testtype
- project_id numeriek
- testtype_id numeriek

tbl_testtype
- testtype_id autonummering
- testtype_naam tekst

tbl_bevinding
- bevinding_id autonummering
- project_id numeriek
- status_id numeriek
- testtype_id numeriek

Als eerste maak je een nieuw project aan en hier voeg je de gewenste testtypes en statussen aan toe. Daarna wil je de bevindingen aanmaken en wil je hieraan het testtype en de status toevoegen (maar alleen een van degenen die je in het project hebt aangevinkt). Doordat bijv. de tabel tbl_status een (indirecte)relatie heeft met tbl_project en tbl_bevinding en vervolgens de tabel tbl_project weer met tbl_bevinding, krijg je het "rondje" in de relaties.

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Misschien toch een plaatje :D

Afbeeldingslocatie: http://email.carpenter.nl/jmailbox/attachments/rolf_carpenter_nl/25092003111651/Outlook..bmp

  • bigben04
  • Registratie: December 2001
  • Laatst online: 05-08 22:33
Wat is een 'bevinding' ? Het is me nou niet bepaald duidelijk wat nou op welke manier aan wat gekoppeld kan worden. Een project heeft een status en een bevinding, en die bevinding heeft zelf ook weer een status??

[ Voor 4% gewijzigd door bigben04 op 25-09-2003 11:50 . Reden: typo ]


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Nee bij een nieuw project kun je zelf de gewenste testtypes en statussen aanvinken. Bij ditzelfde project worden er bevindingen (een fout bij het testen) gedaan, maar deze bevinding mag alleen een status hebben die je in het project aangevinkt hebt.

project1
- status2
- status3
- testtype1
- testtype3

-- bevinding
--- status3
--- testtype 3

project2
- status1
- status4
- testtype2
- testtype3

-- bevinding
--- status1
--- testtype 2

  • bigben04
  • Registratie: December 2001
  • Laatst online: 05-08 22:33
Dan is het denk ik het mooiste om in de tabel tbl_project_status een veld project_status_id te maken, en in de tabel bevinding zet je dan geen status_id maar een project_status_id. Dit kan je analoog doen voor testtype.

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Tnx ik denk dat dit zeker een goede oplossing zal zijn. Ik zal het zeker even overleggen met de bigg boss :D

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Ik heb zelf een enorme fout gemaakt zie ik :( In de tabel tbl_project moet helemaal geen testtype_id en status_id staan.

tbl_project
- project_id autonummering
- project_datum datum/tijd
- project_omschrijving memo

tbl_project_status
- project_id numeriek
- status_id numeriek

tbl_status
- status_id autonummering
- status_naam tekst

tbl_project_testtype
- project_id numeriek
- testtype_id numeriek

tbl_testtype
- testtype_id autonummering
- testtype_naam tekst

tbl_bevinding
- bevinding_id autonummering
- project_id numeriek
- status_id numeriek
- testtype_id numeriek

Ik denk niet dat het veel verschilt maar toch...
Carpenter schreef op 25 september 2003 @ 12:13:
Nee bij een nieuw project kun je zelf de gewenste testtypes en statussen aanvinken. Bij ditzelfde project worden er bevindingen (een fout bij het testen) gedaan, maar deze bevinding mag alleen een status hebben die je in het project aangevinkt hebt.

project1
- status2
- status3
- testtype1
- testtype3

-- bevinding
--- status3
--- testtype 3

project2
- status1
- status4
- testtype2
- testtype3

-- bevinding
--- status1
--- testtype 2
Bovenstaande uitleg blijft hetzelfde :P

[ Voor 33% gewijzigd door Carpenter op 25-09-2003 14:04 ]


Verwijderd

Volgens mij kun je "mooier" een relatie op 2 velden leggen.
Elke Status-project combinatie moet in de tabel tbl_project_status voorkomen.

In het relaties-scherm kun je van de tabel tbl_bevindingen met de shift-toets zowel project_id als status_id selecteren en deze combinatie naar de tabel tbl_project_status slepen.

(Plaatje lukt ff zo snel nie)

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Dat snap ik ff niet... 8)7 Ik dacht dat je maar een veld naar een ander veld mocht slepen in een relatie. Waarom zou je meerdere velden willen gebruiken dan?

[ Voor 76% gewijzigd door Carpenter op 25-09-2003 14:47 ]


Verwijderd

Een relatie op basis van meer dan 1 veld wordt gebruikt wanneer een combinatie van velden in tabel A in dezelfde combinatie in tabel B moet voorkomen.

Een relatie tussen tbl_project_status en tbl_bevindingen die gebaseerd is op de velden project_id en status_id, zorgt er dus voor dat in de tabel tbl_bevindingen alleen records kunnen bestaan waneer de combinatie project_id en status_id ook bestaat in de tabel project_status.

Dit werkt op precies dezelfde manier als het toevoegen van een veld ProjectStatusId aan de tabel tbl_project_status en dit veld relateren aan de bevindingen tabel. scheelt 1 veld.


In beide gevallen kun je je afvragen of je wel in je database wilt aangeven dat een status eerst aan een project gekoppeld moet zijn voordat de combinatie in de tabel tbl_bevindingen gebruikt mag worden.

Bijvoorbeeld:
- STATUS_2 is aan PROJECT_A gekoppeld (aangevinkt) en er is een bevinding aangemaakt voor PROJECT_A met STATUS_2.
- Nu wil je dat STATUS_2 niet langer gebruikt mag worden bij PROJECT_A
- Het record in tbl_projectstatus mag nu niet verwijderd worden omdat er nog gerelateerde records in tbl_bevindingen bestaan.

Het afdwingen van dergelijke combinaties, wanneer een gebruiker eerst de toegestane combinaties aangeeft en deze later mag gebruiken, kun je meestal beter afdwingen in de schermen van een applicatie. Bijvoorbeeld door de gebruiker bij een nieuwe bevinding een keuzelijst voor te schotelen waarin alleen de statussen te zien zijn die zijn aangevinkt.
Dat voorkomt ook dat een gebruikt een melding krijgt als "Cannot add or Change record because a related record. ......."

PFff. wat een lap tekst. Hopelijk heb je er wat aan.

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Dank je voor je uitleg, het is denk ik wel duidelijk. Alleen nou heb ik nog een klein vraagje. Er is nog steeds een "rondje" in de relaties tussen de tabellen tbl_bevinding, tbl_release en tbl_release_status. Mag dit wel?

Verwijderd

Ik neem even aan dat release een nieuwe naam voor project is(??)

Volgens mij heb je geen "rondje". De tabellen status en project zijn op 2 manieren aan elkaar verbonden nl. via tbl_project_status en via tbl_bevindingen.
Om te kijken of je een "rondje" hebt moet je in je relatieschema pijlen tekenen van de 1 naar de n-kant van alle relaties (bijv: van tblStatus naar tbl_project_status).
Je ziet dan dat niet van een tabel kunt vertrekken en bij dezelfde tabel uit te komen door de pijlen te volgen.

(bovendien is een "rondje" niet altijd verkeerd)

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
ja sorry khad het hier al veranderd in release maar het is hetzelfde :D. Het ging mij hier dus meer om het rondje tussen de tabellen tbl_bevinding, tbl_project en tbl_project_status (zoals te zien op het plaatje)

Hm... plaatje is niet goed, zal er wel even een nieuwe op zetten

Hier dan:

Afbeeldingslocatie: http://email.carpenter.nl/jmailbox/attachments/rolf_carpenter_nl/25092003170420/Outlook..bmp

[ Voor 32% gewijzigd door Carpenter op 25-09-2003 17:07 ]


Verwijderd

Zoals ik zei: er is volgens mij geen sprake van een rondje.

project -> projectstatus -> bevinding
project -> bevinding
status -> projectstatus -> bevinding

Dit zijn alle mogelijke paden...geen rondje dus.

Toch lijk me je eerste ontwerp beter omdat je dan een project-status kunt verwijderen zonder alle bijbehorende bevindingen te verwijderen; maargoed dat is een kwestie van persoonlijke voorkeur. beide ontwerpen zijn goed.

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 00:46
Ok tnx voor het oplossen van deze kwestie :D
Pagina: 1