[OPGELOST] Véél-op-véél relatie

Bespreek het databaseprogramma
tuxy
Berichten: 115
Lid geworden op: do okt 29, 2009 11:53 am
Locatie: Adinkerke, België
Contacteer:

[OPGELOST] Véél-op-véél relatie

Bericht door tuxy »

Hallo,

Ben bezig met een database om weblinks te beheren, waarbij deze worden gegroepeerd per land en/of categorie.
Daarbij gebruik ik een externe database-server MySQL, die een connectie maakt met ooBase.

Hieronder de opstelling vd tabellen:

Code: Selecteer alles

Links: - ID (PK)
          - Titel
          - Omschrijving
          - URL
          - id_categorie_land (FK)

Categorieën: - ID (PK)
                    - Categorie

Landen: - ID (PK)
             - Land

Categorie_Land: - ID (PK)
                         - id_categorie (FK)
                         - id_land (FK)
Zoals je kan zien, zit er een véél-op-véél relatie in deze database.
Ieder land beschikt over verschillende categorieën, maar ook kan iedere categorie voorkomen in verschillende landen.

Voorlopig heb ik de tussentabel (Categorie_Land) voorzien van een 'ID'.
Er is ook een mogelijkheid om deze 'ID' weg te laten, en een combinatie te maken van 'id_categorie' en 'id_land' in de tussentabel, daar deze combinatie uniek is.

Ik zou verschillende formulieren ontwerpen, met bijhorende velden, nl.:

- Beheer Landen: invoeren naam vh land.

- Beheer Categorieën: invoeren naam categorie.

- Beheer Categorie per land: dit via twee keuzemenus nl: 'Land' en 'Categorie', waarbij een combinatie van beide gegevens dan worden opgeslagen in de tussentabel.

-Beheer Links: titel, omschrijving, url, keuzemenu land, keuzemenu categorie.

Dus in het formulier 'Beheer Links', kan men klikken op een land, en dan via een subformulier worden de aanwezige categorieën van dit land gepresenteerd.
Zo wordt de 'ID' van de tabel 'Categorie_Land' toegevoegd aan de tabel 'Links'.

Hopelijk is dit te verwezelijken :?


Mijn vragen:

- Is dit een ideale opstelling om zo weinig mogelijk redundantie te bekomen?
- Hoe wordt een combinatie van beide velden in de tussentabel 'Categorie_Land' dan opgeslagen in de tabel 'Links'?
- Hoe kan ik ervoor zorgen dat een combinatie van beide gegevens in de tussentabel 'Categorie_Land' uniek is?

Heb al één en ander gevonden, maar helaas in het engels.

Wie kan mij verder helpen?

Christophe
Laatst gewijzigd door tuxy op zo jun 06, 2010 10:23 pm, 1 keer totaal gewijzigd.
OpenOffice 3.1 / Vista / Ubuntu Linux 10.04
eremmel
Berichten: 670
Lid geworden op: di sep 01, 2009 10:11 am
Locatie: Barneveld, Nederland

Re: Véél-op-véél relatie

Bericht door eremmel »

Ik heb snel door uw vragen heen gelezen en denk dat u het uzelf onnodig lastig maakt door die many-to-many relatie te introduceren voor categorieën en landen. Beide velden hebben niet zo veel met elkaar te maken en in het slechtste geval kunnen alle combinaties voorkomen lijkt me. Ik zou u willen adviseren om de tabel 'Links' een veld te geven voor categorie en en een veld voor land.

Een many-to-many relatie wordt belangrijk als de combinatie extra informatie bevat. Denk aan een bestelling van producten. De bijbehorende many-to-many relatie is dan een bestel-regel die bestelling aan product koppelt met extra informatie over hoeveel van dat product besteld is, kortingen en de prijs van het product op moment van bestellen enz.
W11 21H2 (build 22000), LO 7.4.1.2(x64)
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
tuxy
Berichten: 115
Lid geworden op: do okt 29, 2009 11:53 am
Locatie: Adinkerke, België
Contacteer:

Re: Véél-op-véél relatie

Bericht door tuxy »

Eremmel,

Héél hartelijk dank voor je wijze raad!!!
:) :) :)

Zal uw raad opvolgen, en mijn database aanpassen!

Zal inderdaad iets eenvoudiger zijn op deze manier.

Ik ben eigenlijk bezig met het opzetten van een webproject, door middel ve MySQL-database.
Als back-office-GUI wordt ooBase gebruikt, die connecteert met de MySQL-server.

Zo bespaar ik mezelf véél werk om een GUI te maken in php.
De 'publieke' kant vh project, wordt dan uiteraard wel geschreven in php.

Ongeloofelijk wat je allemaal kan met ooBase ;)

Christophe
OpenOffice 3.1 / Vista / Ubuntu Linux 10.04
Plaats reactie