Omdat ik een jaar of 6 geleden op het MBO het een en ander over relationele databases heb gehad dacht ik wel even een productcatalogus in MS Access uit m'n mouw te schudden.. het is toch een beetje roestig geworden...
Wat wil ik bereiken? Een productcatalogus waar van alle producten de relevante gegevens vermeldt staan, welke ik later eventueel ga uitbreiden om ook voorraadbeheer etc. mee te doen.
Een product maakt deel uit van een productserie, dus bijvoorbeeld de productserie Coca-Cola, met als producten blikje, kleine fles en grote fles. Een productserie maakt weer deel uit van een productgroep (dus in dit voorbeeld Frisdrank, maar in mijn geval potten, vazen en beeldjes en dergelijke).
Nu kan ik behalve de tabel Products ook een tabel Series aanmaken, en dan middels lookup wizard een drop down box maken, maar als ik dit ook doe met Groups (productgroep) dan krijg ik het niet voor elkaar dat deze twee selecties elkaar uitsluiten. Dus nu kun je, als je een nieuw product invoert, kiezen voor productserie Coca-Cola in de productgroep Graafmachines. Terwijl de bedoeling juist is dat als je aangeeft dat het nieuwe product in de serie Coca-Cola valt dat er dan automatisch Frisdrank bij komt te staan.
(want, Coca-Cola zit maar in 1 productgroep en dat is frisdrank)
Met behulp van de voorbeelden uit de hulpfunctie van Access kom ik er ook niet uit, want die beperken zich alleen tot een one-to-many relatie met 1 andere tabel, terwijl ik er volgens mij 2 heb (groups & series) die bovendien ook een onderlinge afhankelijkheid hebben.
Verder heb ik geprobeerd om net zoals in de hulpfunctie tussenliggende tabellen te maken om te voorkomen dat er many-to-many relaties ontstaan, dus ik heb inmiddels 5 tabellen (products, series, groups, productseries, seriesgroups) met relaties daartussen. Maar ook dit is volgens mij niet zoals het hoort, in ieder geval krijg ik er geen formulier mee aan de praat.
Wie ziet de denkfout en kan mij even de goede kant op duwen?
Aanvulling:
Ik heb nog maar eens even de normalisatie regels van Cobb doorgelezen en ik kom langzamerhand al wel een stukje verder.
Zoals ik het nu begrijp heb ik helemaal geen 5 maar 3 tabellen nodig (Products, Series, Groups). Dit omdat een product slechts in 1 serie thuishoort, en 1 serie slechts in 1 groep. Ik hoef dus helemaal niet in de Products tabel aan te geven in welke groep dit product zit als ik al heb aangegeven in welke serie deze zit.
Mijn database relaties zien er nu als volgt uit:

Het lukt mij echter nog niet om een formulier te maken waarbij middels een combo box de groep kan worden gekozen, waarna met de volgende combo box uit een van de series in die groep kan worden gekozen. Qua relaties zou het nu volgens mij moeten kunnen aangezien Products.Products_Series_ID gekoppeld is aan Series.Series_ID en Groups.Group_ID is gekoppeld aan Series.Group_ID.
Wat wil ik bereiken? Een productcatalogus waar van alle producten de relevante gegevens vermeldt staan, welke ik later eventueel ga uitbreiden om ook voorraadbeheer etc. mee te doen.
Een product maakt deel uit van een productserie, dus bijvoorbeeld de productserie Coca-Cola, met als producten blikje, kleine fles en grote fles. Een productserie maakt weer deel uit van een productgroep (dus in dit voorbeeld Frisdrank, maar in mijn geval potten, vazen en beeldjes en dergelijke).
Nu kan ik behalve de tabel Products ook een tabel Series aanmaken, en dan middels lookup wizard een drop down box maken, maar als ik dit ook doe met Groups (productgroep) dan krijg ik het niet voor elkaar dat deze twee selecties elkaar uitsluiten. Dus nu kun je, als je een nieuw product invoert, kiezen voor productserie Coca-Cola in de productgroep Graafmachines. Terwijl de bedoeling juist is dat als je aangeeft dat het nieuwe product in de serie Coca-Cola valt dat er dan automatisch Frisdrank bij komt te staan.
(want, Coca-Cola zit maar in 1 productgroep en dat is frisdrank)
Met behulp van de voorbeelden uit de hulpfunctie van Access kom ik er ook niet uit, want die beperken zich alleen tot een one-to-many relatie met 1 andere tabel, terwijl ik er volgens mij 2 heb (groups & series) die bovendien ook een onderlinge afhankelijkheid hebben.
Verder heb ik geprobeerd om net zoals in de hulpfunctie tussenliggende tabellen te maken om te voorkomen dat er many-to-many relaties ontstaan, dus ik heb inmiddels 5 tabellen (products, series, groups, productseries, seriesgroups) met relaties daartussen. Maar ook dit is volgens mij niet zoals het hoort, in ieder geval krijg ik er geen formulier mee aan de praat.
Wie ziet de denkfout en kan mij even de goede kant op duwen?
Aanvulling:
Ik heb nog maar eens even de normalisatie regels van Cobb doorgelezen en ik kom langzamerhand al wel een stukje verder.
Zoals ik het nu begrijp heb ik helemaal geen 5 maar 3 tabellen nodig (Products, Series, Groups). Dit omdat een product slechts in 1 serie thuishoort, en 1 serie slechts in 1 groep. Ik hoef dus helemaal niet in de Products tabel aan te geven in welke groep dit product zit als ik al heb aangegeven in welke serie deze zit.
Mijn database relaties zien er nu als volgt uit:

Het lukt mij echter nog niet om een formulier te maken waarbij middels een combo box de groep kan worden gekozen, waarna met de volgende combo box uit een van de series in die groep kan worden gekozen. Qua relaties zou het nu volgens mij moeten kunnen aangezien Products.Products_Series_ID gekoppeld is aan Series.Series_ID en Groups.Group_ID is gekoppeld aan Series.Group_ID.
[ Voor 19% gewijzigd door n1els op 20-03-2011 15:55 ]
Dimidium facti qui bene coepit habet: sapere aude.