Jump to content
  • 0

Unieke waarde afhankelijk van datum maken?


Organeduc

Question

Posted

In een DB werk ik met een tabel Personen, een tabel Activiteiten en een tabel Koppelingen. In de laatste tabel voeg ik personen en activiteiten samen. De personen moeten daarin uniek zijn, want zij kunnen niet aan meer activiteiten deelnemen. De activiteiten vinden in bepaalde periodes plaats. Die periodes hebben allen hun eigen kenmerk, bijvoorbeeld 04-05-1-ste, 04-05-2-de, 05-06-1-ste, 05-06-2-de, enz.

Wanneer ik als eigenschap van personen meegeef dat ze uniek moeten zijn, kan ik ze niet meer invoeren in een andere periode, immers ik heb meegegeven dat ze uniek moeten zijn. Ik wil het graag zo hebben, dat de personen, op voorwaarde dat het om een andere periode gaat, toch weer ingevoerd kunnen worden, maar dan zo dat ze alleen voor dié periode uniek zijn.

Om het nog iets gecompliceerder te maken: bij sommige personen moet de activiteit binnen een periode wel eens afgebroken worden, omdat zij het daarin niet goed doen. Alléén dan wil ik ze in diezelfde periode toch nog weer bij een activiteit kunnen inzetten, immers zij doen dan geen activiteiten tegelijkertijd. En daar draait het eigenlijk allemaal om. Maar hoe doe ik dat?

12 answers to this question

Recommended Posts

  • 0
Posted

Je maakt het jezelf wel moeilijk!

Combineer de persoonsID met een periodeID en zorgt ervoor dat die uniek is. Dan kan je iemand inschrijven voor alle opeenvolgende periodes, zonder dat hij twee keer kan ingeschreven worden voor dezelfde periode. Dankuwel, ampersand!

  • 0
Posted

Maar als ik een persoonsId koppel aan een PeriodeId, dan krijg ik toch nog moeilijkheden wanneer ik soms binnen een bepaalde periode een persoon toch 2 x een activiteit wil laten doen? Kun je dan niet beter uitgaan van datumvelden waarbij je bepaalde voorwaarden maakt?

  • 0
Posted

Organeduc,

Ik denk dat er een fout zit in je datamodel.

Ik ben er namelijk niet van overtuigd dat de personen uniek moeten zijn in je tabel koppelingen.

Volgens mij heb je een tabel te kort : de tabel Periodes. Het is hier dat de combinatie personen/periode/activiteit uniek moet zijn. Een persoon kan tijdens een bepaalde periode niet aan twee activiteiten deelnemen.

 

HTH

  • 0
Posted

Een en ander heeft me verder aan het denken gezet en dat leidde tot de volgende vraag:

Kun je het wel of niet mogen invullen van een veld in een nieuw record binnen dezelfde tabel (bijv de naam van een leerling) afhankelijk maken van of er in een eerder record in dezelfde tabel in een boolianveld met drie opties nl. "Gewoon", "Afgebroken" of "Loopt door", de opties "Gewoon" of "Afgebroken" zijn ingevuld?

Met andere woorden: als de optie "Gewoon" of "Afgebroken" zijn ingevuld, dan moet het mogelijk zijn om wel een naam in te vullen, anders niet.

Hoe zou je dat kunnen doen?

  • 0
Posted

Ja dat kan.

Maak voor ieder record een boolean calculatie die 1 is indien "gewoon" of "afgebroken" ingevuld is.

Maak een selfjoinrelatie op basis van de leerling. Als één van die records uit de selfjoin in het boolean-calculatieveld niet de waarde 1 heeft staan, laat je invoer toe.

  • 0
Posted

Mis ik iets in dit bestand? Ik merk op geen enkele manier dat ik slechts onder voorwaarde een nieuwe record kan invullen. Of ligt het aan mij? zou best kunnen natuurlijk, heel gemakkelijkzelfs!

  • 0
Posted

Als je zo inlogt en een nieuwe record maakt kan dat gewoon, maar pas wanneer je in een eenmaal vastgelegde record met ID 1 iets wilt wijzigen krijg je de waarschuwing.

In het probleem dat ik schetste is het kwaad dan al geschied. Het gaat er immers juist om, een leerling weer in te kunnen voeren als de opties "Gewoon" of "Afgebroken" zijn geboold.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...