Opgelost Nieuwe database goed genormaliseerd?

Dit topic is als opgelost gemarkeerd

Hevoolst

Gebruiker
Lid geworden
25 nov 2007
Berichten
75
Dag allemaal,

Bijgaand een deelontwerp van mijn nieuwe mediadatabase. Ik ben begonnen met de boekjes van de Actuele Onderwerpen reeks. Die zitten voor een groot deel in cassettes en die zijn opgeslagen in een IKEA-doos. Vanaf een bepaald moment werden die cassettes niet meer gemaakt. Die boekjes, die daarna zijn verschenen, liggen nu in een andere IKEA-doos op zolder.
Om lege kolommen te voorkomen heb ik het bestand met boekjes in tweeën gesplitst: een met en een zonder cassettes. Is dit een goede manier of kan het beter?

Met vriendelijke groet,

Henk
 

Bijlagen

  • Mediatheek_20112023.rar
    28,4 KB · Weergaven: 10
Zonder de database nog gezien te hebben, zou ik zeggen dat dat geen gelukkige keuze is. Een boekje is een boekje, of het nu in een cassette zit of niet. Als je een boekje zoekt op bijvoorbeeld een deel van de titel, zonder te weten of het al dan niet in een cassette zit, wil je in één tabel kunnen zoeken.
Het bezwaar van lege velden zie ik niet. Ook het feit dat een veld leeg is kan informatief zijn.
 
Ik heb wél gekeken, maar ben het ondanks dat toch enigszins eens met Peter :). Als je een database ontwerpt, doe je dat op basis van entiteiten. Een 'entiteit' is een object met bepaalde eigenschappen. Zo is een 'persoon' een entiteit (iemand die een boek leent bijvoorbeeld), en is een 'boek' óók een entiteit. Voor elke entiteit maak je één tabel aan. Dus in een tabel tBoeken sla je alle boeken op. Heel simpel. Die tabel heb je ook gemaakt. Maar de tabel 'Cassetteboekjes' is dan dus volkomen overbodig, want een boek in een cassette is nog steeds een boek. Haal je een boek uit een cassette en leg je dat naast een 'gewoon' boek, dan zal niemand het verschil zien. Sterker nog: jij ook niet`.

Kijken we naar wat een boek een boek maakt, en een persoon géén boek, dan zijn de verschillen nogal evident. (Hoewel er wel degelijk personen zijn die je 'kan lezen':)). Wat onderscheidt een boek van een mens? Dát zijn wat we in de database wereld 'attributen' noemen. Ofwel: kenmerken. Zo heeft een boek een ISBN nummer als identificatie (een veld dat ik gek genoeg dan weer mis in je tabellen). Mensen hebben dat doorgaans niet. Een boek heeft een 'auteur' (of meerdere auteurs). Zul je bij een persoon ook niet zo snel aantreffen. En een boek heeft een uitgever.
En, en dat is een veld dat ik in jouw tabel óók niet aantref, een veld waarin je aangeeft waar het boek te vinden is. De opslagplaats bijvoorbeeld.
Eventueel kan een boek onderdeel zijn van een serie, bijvoorbeeld uitgegeven in een cassette. Dat is óók een interessant gegeven, maar dat heeft dus niets met het boek zélf te maken. Cassettes zijn daarom aparte entiteiten die je apart vastlegt in een tabel. En, als laatste in dit verhaal, heb je een tabel nodig die de aanwezige cassettes koppelt aan de beschikbare boeken. En hierin leg je dus op zijn minst twee gegevens vast: het Cassette nummer, en het Boeknummer.

En dat lijkt mij voorlopig even genoeg informatie :).
 
Kan je jouw databasestructuur hier delen? Een download vind ik erg overkill!
 
Beetje onzinnig verzoek, want de database structuur zit in de database. Dus het bestand is bepaald geen overkill, en al helemaal niet in een Access forum :).
 
Wederom bedankt Peter en Michel. Ik weet nu, welke keuze ik moet maken. Bij de volgende versie van de database zal ik ook de attributen toevoegen, die ik nu nog niet heb toegevoegd.

Met vriendelijke groet,

Henk
 
Zoals altijd graag gedaan.

Misschien nog een kleine aanvulling nadat ik de database heb gezien.
In de beide boeken tabellen heb je een veld Serienummer als sleutel. Ik weet niet precies wat je daarmee van plan bent/was. Als je dacht dat uniek te houden over beide tabellen heen, is dat alvast een reden extra om niet met twee tabellen te werken. Als het verder een betekenisloos nummer is, dan kan je in je ene boekentabel het best een autonummer veld gebruiken.
 
Of, en dat lijkt mij toch een stuk zinvoller: het ISBN-nummer. Autonummers zijn zinloze (als in: zonder betekenis) nummers die je gebruikt als je geen nuttig uniek nummer hebt. Boeken hebben dat wel, dus gebruik dat ook.
 
Het serienummer is het nummer waarmee het AO-boekje uniek is te identificeren.

Ik denk, dat ik toch het ISBN-nummer ga gebruiken, omdat ik dan mijn overige boeken met in de tabel met de AO-boekjes kan samenvoegen.

Met vriendelijke groeten,

Henk
 
Ik weet niet wat voor boeken je allemaal hebt en hoe oud die zijn. Bedenk wel dat in oudere boeken geen ISBN zou kunnen staan.
 
Bedankt voor je opmerking. Het ISBN is ingevoerd in 1970; ik heb nog enkele boeken van voor 1970. Het kan zijn dat een eventuele herdruk na 1970 wel een ISBN heeft; dan gebruik ik dat. Mocht er in het geheel geen ISBN zijn, dan moet ik kijken hoe ik dat oplos.
 
Hebben die boeken geen (uniek) nummer? Voor een veld ISBN heb je toch een tekstveld nodig, dus dan kun je ook nog met andere aanduidingen werken. Je kunt natuurlijk altijd een Autonummer veld gebruiken als sleutelveld, als het te ingewikkeld wordt. Sowieso is het altijd handig om het ISBN nummer op te slaan als je dat hebt :).
 
Ik heb bijvoorbeeld een aantal boeken van de Bob Evers-serie uit 1968 en 1969. Die hebben geen enkel nummer
 
Beste leden van het forum,

Ik heb een nieuwe structuur bedacht voor de boekenseries. Zo heb ik de serie "Bericht van de Tweede Wereldoorlog", die bestaat uit 6 banden. Deze banden bevatten in totaal 100 cahiers. Elk cahier heeft meerdere artikelen met meerdere auteurs. Deze artikelen staan in de boekentabel. Daarnaast staan ook de cassettes van de AO-reeks in deze structuur. Zodra de structuur op orde is, voeg ik de ontbrekende attributen toe.

Met vriendelijke groet,

Henk
 

Bijlagen

  • Mediatheek_20112023.rar
    28,5 KB · Weergaven: 5
@Hevoolst Kan je jouw datastructuur eens laten zien? Screenshotje moet toch geen probleem zijn, lijkt me?
 
Beste Aar,

Als je Access hebt, kun je de structuur bekijken in het meegestuurde bestand. Onder het tabblad hulpmiddelen voor databases, klik je het onderdeel relaties aan. Daar vind je de structuur.

Met vriendelijke groet,
Henk
 
Niet iedereen heeft altijd toegang tot Access, en het is bovendien vriendelijk gevraagd, als je wilt dat er wordt meegekeken.
Sommige mensen hebben zelfs geen behoefte om onbekende databases te openen. Dus zo gek is mijn vraag ook niet, evenals de kleine moeite voor jouw. ;-)
 
@Aar: een Access vraag proberen te beantwoorden zonder Access lijkt mij behoorlijk zinloos. Zowel voor jou als voor TS.
 
Terug
Bovenaan Onderaan