Hulp nodig bij relaties in acces, niet zo moeilijk maar vind het niet.... :(

Status
Niet open voor verdere reacties.

ImaginedBurden

Nieuwe gebruiker
Lid geworden
1 aug 2012
Berichten
2
Hey mensen,
Ik kreeg overlangs deze opdracht om te maken in Acces:

Algemeen: De databank moet:
- min. een 1 op veel relatie bevatten
- min. een veel op veel relatie bevatten
- tabellen moeten primaire sleutels hebben
- Er moet referentiële integriteit afgedwongen worden

Specifiek: Databank bevat:
- Tabel met grondstoffen voor aanmaak van een product + kenmerken van de grondstoffen
- Tabel met bact/schimmels/plagen die bederf kunnne veroorzaken + enkele eigenschappen van deze organismen
- Tabel met de locatie van stockage van de grondstoffen + een aantal parameters

Bijkomende opmerkingen:
Zorg dat elke tabel minimaal 6 records bevat. In een bepaalde locatie kan maar een soort grondstof worden bewaard.
Maar een bepaalde grondstof kan wel op verschillende locaties bewaard worden. Zorg dat bij de link grondstof-bederf een quotatie kan toegevoegd worden voor de gevoeligheid van de betreffende combinatie.

____________________________________________________________________________________________________________________________________________________________________

Ok, dus ik ben begonnen met tabellen te maken: dit heb ik momenteel, deze tabellen zijn al ingevuld ook:

Grondstoffen..............................................Bederf....................................Stockage
Grondstof ID (Prim sleutel).........................Organisme ID (Prim sleutel)..................Locatie ID (Prim sleutel)
Grondstofnaam........................................Organisme........................................Locatie (bv freezer)
Prijs/kg..................................................Stam...............................................Min. Temperatuur
Opslagtemperatuur...................................Soort..............................................Max. Temperatuur
Vochtgehalte..........................................Aeroob/ anaeroob..............................Letter (bv F van freezer)
Maximale houdbaarheid.............................Gram+/ Gram -..................................Nummer (bv van F1 tot F5)
............................................................Uiting.................................................................................

Maar nu ik wil beginnen met relaties leggen tussen deze tabellen weet ik helemaal niet meer wat te doen....
Ik weet dat referentiele integriteit afgedwongen kan worden als de relaties al gelegd zijn en je kijkt bij de opties van deze relaties, maar het probleem is dat ik helemaal niet begrijp hoe je dezer relaties legt!

Als iemand die een beetje verstand heeft van acces wat raad zou kunnen geven of wat uitleg zou ik heel blij zijn :)

Alvast bedankt !!
 
Je hebt twee soorten tabellen (eigenlijk is een tabel een tabel, maar ik hoop dat het duidelijk wordt ;) ) tabellen met Brongegevens, en Datatabellen. Een Brontabel bevat de basisgegevens waar je mee gaat werken. Dat zijn in weze de tabellen die je gemaakt hebt. De tabel Grondstoffen zal de verschillende grondstoffen bevatten, en die leg je misschien maar één keer vast, en dan verandert daar niet zoveel meer aan. Brontabellen hebben doorgaans een enkelvoudige sleutel, al kan dat natuurlijk ook een meervoudige sleutel zijn. Maar een GrondstofID is (waarschijnlijk autonummering? een uniek veld dat maar één keer voorkomt in je tabel Grondstof. Anders kan het ook geen sleutel (want uniek) zijn.
Een Gegevenstabel gebruik je om brontabellen te koppelen. Simpel voorbeeldje: Een brontabel Klanten met uniek KlantID, en een brontabel Artikelen met uniek ArtikelID komen samen in de gegevenstabel Bestellingen. Daarin leg je een KlantID en een ArtikelID vast, naast de overige bestelgegevens zoals Aantal en besteldatum. Eén klant kan meerdere bestellingen plaatsen (één-op-veel relatie) en een artikel kan meerdere keren besteld worden (ook een één-op-veel relatie). Daarmee heb je drie tabellen aan elkaar gekoppeld, die dus met een één-op-veel relatie aan elkaar hangen.
Overigens klopt deze opmerking

Ik weet dat referentiele integriteit afgedwongen kan worden als de relaties al gelegd zijn en je kijkt bij de opties van deze relaties
niet helemaal; Referentiële integriteit kun je bij het maken van de relaties al instellen, en dat zou ik dus maar doen ook, want dat is heel wat minder klikken ;)

In mijn voorbeeldje heb je dus twee één-op-veel koppelingen gemaakt, waarvan je ook nog iets anders kan zeggen: veel klanten kunnen veel artikelen bestellen! Want als één klant meerdere artikelen kunnen bestellen, en één artikel veel keer besteld mag worden, dan geldt dus dat er tussen Klanten en Artikelen een veel-op-veel relatie is. Kun je ook wel voorstellen: het zou niet best zijn als een klant een artikel maar één keer mag bestellen! AH ziet je aankomen....
Je kunt dus met een vast klantenbestand (6 klanten bijvoorbeeld) en een vast artikelaanbod (10 artikelen) een oneindig aantal bestellingen vastleggen. Daarom maak ik dus onderscheid in Bronbestand, en Gegevensbestand.
Het gegevensbestand heeft dus in ieder geval koppelingen met de bronbestanden, die op hun beurt weer Referentiële Integriteit hebben.
Hopelijk kun je aan de hand van dit voorbeeld weer verder stoeien :)
 
Laatst bewerkt:
Dag Octafish,

Heel erg bedankt voor de snelle en volledige uitleg!
Sinds ik hopeloos ben in acces (ik weet niet waarom) ben ik blij deze uitleg te krijgen, maar ik heb moeite om deze te concretiseren in de opdracht die ik kreeg...
- een organisme is gelinkt aan een grondstof (bederf) dus hier leg ik een relatie: grondstof ID => Organisme ID
- een grondstof wordt opgeslagen op een bepaalde locatie dus hier ligt ook een relatie: grondstof ID => Locatie ID

Het probleem hier is dat als ik deze relaties leg, ze blijkbaar allemaal 1 op 1 relaties zijn... als als zoiets bestaat :)
In je voorbeeld zeg je dat een artikel meerdere keren besteld kan worden, maar hoe legt u deze relatie dan?

Ook nog:
" In een bepaalde locatie kan maar een soort grondstof worden bewaard.
Maar een bepaalde grondstof kan wel op verschillende locaties bewaard worden." => Ook met deze zin weet ik niet goed hoe ik verder moet, ookal ben ik zeker dan u het antwoord al uitgelegd hebt in uw voorbeeldje...

Misschien zou u kunnen werken met het voorbeeldje die ik gaf?
Ik wil me al op voorhand verontschuldigen voor de domme vragen en voor het nemen van uw tijd :)

Groetjes en bedankt
 
Je moet voor jezelf eerst op papier (maar zeker in 't hoofd) weten wat er gebeurt met de verschillende tupels (eenheden). Mijn voorbeeldje moet je dus 'vertalen' naar wat er gebeurt met jouw data. Wij helpen in beginsel niet bij (school)opdrachten; die moet je toch echt zelf maken. Maar een beetje duwen mag uiteraard wel, en dat probeer ik dus een beetje te doen.

Als ik jouw redenatie omkeer naar mijn voorbeeld, dan zou je een KlantID koppelen aan een ArtikelID. Dat levert (in beginsel) inderdaad een één-op-éen relatie op. Maar een klant met Klantid 12 is natuurlijk niet hetzelfde als een pot pindakaas met ArtikelID 12. Dus het is een beetje zinloos om KlantID aan ArtikelID te koppelen, net zoals het onzinnig is om OrganismeID te koppelen aan LocatieID. Daarom heb ik ook een tabel Bestellingen. Want het zijn verschillende entiteiten. Je hebt een belangrijk deel van mijn verhaal gemist of niet begrepen: je hebt dus koppeltabellen nodig waarin je de combinaties van de verschillende tabellen vastlegt. Zolang je die niet hebt, heb je niks te koppelen, en kun je dus ook geen gegevens opslaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan