De basis structuur voor een database tbv uitrusting beheer.

Status
Niet open voor verdere reacties.

Deonitius

Gebruiker
Lid geworden
6 jan 2008
Berichten
18
Ik heb jullie hulp nodig voor het volgende:

Ik wil een database bouwen om het beheer van uitrusting te verbeteren. Ik heb vaker uitgebreide access databases gebouwd vanuit voorbeelden en met hulp van dit forum echter mijn kennis van access is beperkt. Ik kom er niet uit hoe ik deze database moet opbouwen zonder eindeloze herhalingen en gruwelijk grote tabellen.

Een schets van de doelstellingen:

Het gaat om het beheer van artikelen zoals kleding, schoenen en uitrusting. De artikelen zitten in een verschillende pakketten en sommige artikelen komen in meerdere pakketten voor. Een artikel kan zowel in enkelvoud als meerdere keren in een pakket zitten. Een pakket (of meerdere pakketten) wordt aan een gebruiker toegewezen, daarnaast moet het mogelijk zijn om losse artikelen toe te voegen aan een gebruiker alsook het aantal artikelen per gebruiker moet variabel zijn. Een aantal artikelen worden eigendom waar wel zichtbaar moet blijven wie het wel of niet heeft gekregen echter het merendeel van de artikelen moeten weer ingeleverd worden als de gebruiker weg gaat. Daarnaast zijn er enkele artikelen die een serienummer hebben waarbij dus geregistreerd moet worden wie welk apparaat heeft.
Daarnaast moet de voorraad in het magazijn zichtbaar zijn en moet er een bestelling gemaakt kunnen worden bij verschillende leveranciers. Daarvoor moet zichtbaar zijn wie er nog iets zou moeten hebben aan de hand van de “pakketrechten” en de actuele voorraad in het magazijn. Ook kan een artikel in de loop van de tijd vervangen worden door iets nieuws zonder dat iedereen een nieuwe versie nodig heeft maar wel duidelijk moet zijn wie welke uitvoering heeft.
Het gaat om een paar honderd artikelen en een paar honderd gebruikers.

Mijn concrete vraag, hoe maak ik een efficiënt database van de tabel met gebruikers, de tabel met artikelen en de tabel met pakketten zonder dat ik aan elke gebruiker al de artikelen toe moet voegen.
 
Tja, een duidelijk verhaal! En niet zo eenvoudig te bouwen, maar wel te doen. Ik ben zelf beheerder van TOPdesk, en dat bevat en aantal modules die precies doen wat jij wilt hebben. Dus ik kan je wel vertellen hoe e.e.a. er uit zou kunnen zien.
Maak op basis van je verhaal eerst eens een aantal stamtabellen met daarin de brongegevens. Want daar begint het mee. Denk daarbij aan de personen die spullen krijgen, en de artikelen. Want in beginsel kun je daar alles wel mee doen. Daarnaast heb je een aantal koppeltabellen nodig, zoals een tabel waarin je de pakketten vastlegt op basis van een één-op-veel relatie met artikelen. Elk pakket krijgt daarin een unieke ID en die gebruik je dan weer om een pakket in een volgende koppeltabel te koppelen aan een persoon. Wil je artikelen zelfstandig kunnen gebruiken, dan maak je daar ook een pakketrecord voor. Dit 'pakket' bevat dan één artikel, maar dat maakt voor de werking niet uit.
Lastiger wordt het als een artikel eigendom wordt; daar zou ik een aparte tabel voor gebruiken. Zeker als artikel in een retourpakket zit. Daarom zou ik die procedures scheiden. Maar vqn je verhaal, dat al de basis kan vormen voor een Functioneel Ontwerp, kun je prima een volledig FO maken dat dan weer de basis kan vormen voor een ER diagram.
 
Dank voor je snelle reactie OctaFish,

Ik ben inderdaad al begonnen met de stamtabellen en koppeltabellen in voorbeeld databases, maar het is dus lastig om dat goed in te delen omdat ik niet weet waar ik naartoe moet. Dat het een enorme uitdaging wordt om dit te bouwen was me intussen duidelijk geworden maar dat maakt het wel uitdagend! Ik ga nu maar met een lege db beginnen om geen vervuiling te krijgen.

Een kleinigheidje (dat ik niet eens had meegenomen in de uitleg) met volgens mij enorme consequenties is dat ik bijvoorbeeld ook de maat gegevens wil registreren. En dat is per artikel en persoon dus weer verschillend. Iemand kan bijvoorbeeld maat 43 van het ene paar schoenen en 44 van een andere dus ik kom er niet mee weg om 1 schoenmaat in de tabel van personen te zetten. De maat heb ik nodig om bijvoorbeeld om te ruilen als hij kapot is maar ook om een globale maatboog van een nieuw type schoen te krijgen voor een bestelling. Waar zet ik dan de maatgegevens weg? Ik neem aan dat de voorraad geteld wordt vanuit een tabel met transacties zoals inkoop, verstrekt en ingenomen, afgeschreven enz. (weer een tabel met transacties) Is het dan handig om van elke maat een apart artikel te maken? Zo ja ontstaat er weer een uitdaging met de pakketten. Mogelijk is dat op te lossen met groepen artikelen zodat de hele range maten 1 groep is? Bovendien zou ik van sommige artikelen ook de productiedatum willen monitoren omdat van sommige veiligheidsartikelen de werking na een aantal jaar niet meer gegarandeerd is. Dan moet ik dus ook terug kunnen halen wie iets vanuit welke levering heeft gekregen. Misschien dus ook net als de schoenmaten groeperen per datum?

Dan de pakketten, ik wilde in de tabel met artikelen een veld maken met PakketID nummers waar het in voorkomt. Ik begrijp uit jou antwoord dat je een tabel per pakket maakt met 1 op veel relaties naar artikelen. Ik volg je daar even niet, immers in het basis pakket zitten zo'n 100 artikelen dus dat worden wel heel veel relaties? Of bedoel je 1 tabel met een alle artikelID's en elk een uniek PakketID (zodat ze individueel toe te wijzen zijn) en nogmaals de artikelen van bijv het basispakket maar dan allemaal met het PakketID van het basispakket en zo ook de andere pakketten?

Wellicht is mijn grootste uitdaging op dit moment wel dat ik niet weet hoe ik een FO moet maken en geen idee heb wat een ER diagram is. dus dat ga ik eerst maar even googlen!
 
Je grootste 'fouten' beschrijf je in de eerste en laatste zinnen :). Om te bginnen met de eerste: het is een heel slecht idee om te beginnen met bouwen op basis van bestaande databases, en dat is extra slecht als je ook nog eens geen idee hebt waar je naar toe moet. Sluit ook aan op je laatst zinnen: zonder goed Functioneel Ontwerp kun je nooit een Entiteiten-Relaties diagram maken. En dat moet aan de basis van de database liggen. Wat ik bedoel te zeggen is eigenlijk: je begint pas te bouwen aan de database als je helemaal hebt uitgewerkt wat de database moet kunnen, en wat je er uit wilt kunnen halen.
Kortom: als het niet goed op papaier staat, kun je nooit iets goeds bouwen. Ik denk niet dat er ooit een apparaat is uitgevonden waarbij iemand zomaar lukraak met wat willekeurige onderdelen is gaan stoeien; er is altijd eerst een idee!

Daarnaast helpt het uiteraard als je in je vraag hier volledig bent. Steeds nieuwe aspecten toevoegen helpt ons niet, want wij weten dus niet wat jij voor wensen in je hoofd hebt! Het vraagstuk met de maten is overigens heel simpel op te lossen met een extra tabel. Ik zou die maat ook opnemen in de tabel met te leveren pakketten/artikelen. Niet bij de personen. Zoals je zelf al aangaf, kan de maat wisselen per artikel. De maat is dus een afhankelijkheid van artikel, niet van persoon. Juist dat soort aspecten beschrijf je in een FO zodat je weet welke tabellen met welke velden en afhankelijkheden je moet maken.

Je hebt mijn verhaal over de pakketten ook niet helemaal begrepen, vrees ik. Mijn idee zou zijn om een aparte tabel te maken voor pakketten die is gekoppeld aan een tabel PakketRegels. Hierin maak je voor elk artikel een apart regel. Dus pakket A met 12 artikelen heeft in PakketRegels 12 records. In de tabel Uitgiften leg je dan de persoonsID en het PakketID vast. Overigens leg je dus in PakketRegels ook de maat vast, zoals gezegd: een eigenschap vsn artikel, niet van Persoon.
 
Laatst bewerkt:
Ik ga aan de slag, voorlopig genoeg te doen, zodra ik een FO en ER diagram heb zal ik de tabellen en relaties gaan bouwen. Het wordt dan ook een stuk concreter en voor jullie om op te reageren. ik kom er tzt op terug in hetzelfde draadje!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan