Toon posts:

[DB] Probleem met koppeltabel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Content Management System

Voor een website wil ik een CMS opzetten. Het betreft een site voor een voetbalverniging. De uitslagen en standen laat ik buiten beschouwing, dit is al opgelost.
Ik ben tot nu tot de volgende entiteiten gekomen: Functie, Persoon, Team, Bericht, BerichtSoort, Linkgroep, Link. Het nieuws en link gedeelte laat ik buiten beschouwing want dat is wel op te lossen. Het probleem zit hem echter in Persoon-Team-Functie.

Het volgende is het geval.
Een Persoon kan meerdere Functies hebben. Hij kan immers speler, leider, trainer enz. zijn. Een Functie wordt door meerdere Personen beoefend. Dus tussen Persoon en Functie een n:m relatie. Oplossing koppeltabel.
Een Persoon kan bij meerdere Teams horen. Een Team bestaat uit meerdere Personen. Dus tussen Persoon en Team een n:m relatie. Oplossing koppeltabel.
Per Team zijn er verschillende Functies. Een Functie hoort bij verschillende teams maar dit hoeft niet. Een Team heeft spelers, leider(s), trainer(s). Maar ook voorzitter en penningmeester zijn functies. In het laatste geval hoort er geen Team bij. Desalniettemin Bestaat er tussen Team en Functie een n:m relatie.
Toen dacht ik, ik koppel Persoon en Functie (de koppeltabel van Persoon en Functie). Maar een bepaald persoon kan trainer van meerdere teams zijn. Dan gaat dit dus weer niet op.
Als ik dan de 3 tabellen koppelen dan wil het dus zeggen dat bepaalde personen bv 4 keer in de koppeltabel komen. Bv.:

Persoon A - Speler - Team 1
Persoon A - Lieder - Team 6
Persoon A - Leider - Team A2
Persoon A - Penningmeester

Is dit een geode oplossing of moet dit anders gedaan worden.
Dan komt er nog iets bij kijken. De doelpuntenmakers worden ook bijgehouden. Een bepaald Persoon is speler van 1 team. Speler wil zeggen dat bij Team overzicht de betreffende persoon weergegeven wordt. Maar het kan wel zo zijn dat een persoon tijdelijk een keer met een ander team mee moet. Hij is dan geen speler van dat team maar kan wel doelpuntenmaker van dat team zijn. Is dit op te lossen door een functie ‘Doelpuntenmaker’ toe te voegen. Of moet ik hier aparte tabellen voor gaan maken? Of zelfs doelpunten een attribuut maken van de grote koppeltabel (Persoon/Team/Functie)

Persoon A - Speler - Team 1
Persoon A - Doelpuntenmaker - Team 1
Persoon A - Doelpuntenmaker - Team 2

Wie geeft mij raad?

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Je 1e probleem heb je volgensmij wel redelijk goed opgelost, zou zo nix beters weten...
Kan je niet voor elk persoon een uniek ID maken, en vervolgens de volgende tabel:

Persoon_ID - Team_ID - Doelpunten

Dus dat je bijhoud hoeveel doelpunten een persoon voor een team heeft gemaakt.

Verwijderd

Een totaal overwogen reactie kan ik je neit zo 1 2 3 geven maar dat 'doelpunten' gebeuren kun je dus wel op een betrekkelijk simpele wijze oplossen:

De wedstrijden tabel 'koppel' je een tabel waar de doelpunten in staan dei gemaakt zijn ... in deze doelpunten tabel koppel je de doelpunt maker rechtstreeks aan de personen/leden tabel.
Dat probleem is dan denk ik opgelost.

Verwijderd

Topicstarter
Owkee een aparte tabel voor doelpunten. PersoonID en TeamID en dan het aantal doelpunten. Dat kan.
Maar dan even terug. Laten we zeggen dat het datamodel zo een beetje klopt. Hoe moet ik de invoer van de gegevens in het CMS dan zien. Een functie en team is zo toegevoegd, geen probleem. Maar hoe benader ik een persoon. Bij toevoegen persoon alleen de betreffende attributen ??? Op deze manier maak je dus een unieke persoon aan. Maar hoe verzorg ik vanuit mij CMS dan de koppeling met een team, een functie en ook nog eens de doelpuntenmakers???
Want een persoon die 5 keer voor komt is niet echt ideaal denk ik ?

Verwijderd

Uhm ... je hebt een aparte tabel voor personen, en daar komt ieder persoon maar 1 keer voor. Vervolgens ga je die persoon koppelen aan andere gegevens door zijn ID.

Wat handig werkt is gebruik te maken van listview/entryview schermen. Een listview is een overzicht, bijv. van alle personen. Een entryview is dan de weergave van 1 persoon. In de listview kan je op een persoon klikken, en dan kom je in de entryview van die persoon. Je kunt daar de gegevens zien en evt. wijzigen. Ook kan je vanaf het listview scherm personen verwijderen, en een nieuw persoon toevoegen, waarbij je bij dat laatste op een leeg entryview scherm uitkomt.

Natuurlijk moet je ook zoiets hebben voor functietoewijzingen. Hier ga je dus de koppeltabel vullen. Ook hier kun je een listview en entryview maken. In de listview kan je dan uit een combobox de naam van een speler, naam van een team, en functie kiezen. Het is helemaal mooi als je deze schermen vanuit een speler entry view kan bereiken (knop: 'functies'), waarbij je een overzicht met alleen functies voor die speler ziet, en op het entry view ook geen naam van de speler kan kiezen.

HTH :)

Verwijderd

Topicstarter
Owkee dus de tabel Persoon/Functie/Team voor de koppeling van de 3 tabellen. Daarnaast een tabel Doelpunten met Team/Persoon eraan. Nu krijg ik dus wel gegevens vaker in mijn database. Maar toch is het de beste oplossing denk ik.

PFT tabel:
Persoon A - Speler - Team 1
Persoon A - Leider - Team 6
Persoon A - Leider - Team A1

Doelpunten tabel:
Persoon A - Team 1 - 6 (doelpunten)
Persoon A - Team 2 - 1 (doelpunt)

Persoon A is dus speler van Team 1 maar heeft een keer met Team 2 meegedaan en gescoord.

Is dit de oplossing?
Pagina: 1