Opgelost Nieuwe database goed genormaliseerd?

Dit topic is als opgelost gemarkeerd
@Aar: een Access vraag proberen te beantwoorden zonder Access lijkt mij behoorlijk zinloos. Zowel voor jou als voor TS.
Onzin! Een screenshot is ook voldoende.
Ik heb al vaker mensen geholpen met diverse vragen zonder complete scripts of projecten te downloaden.
Daarnaast zie ik ook geen echte hulpvraag, maar meer iets van de strekking of zijn datastructuur klopt, en dat kan je in een oogopslag zien.
Als het complexer lag, dan had ik dit niet gevraagd. Maar in 99% van de gevallen is een hulpvraag wel te beantwoorden zonder de hele riedel te downloaden.

Dus vandaar mijn verzoek aan @Hevoolst
 
Ik heb een nieuwe structuur bedacht voor de boekenseries.
Ik weet niet of ik naar de de juiste database zit te kijken, maar ik zie nog steeds twee tabellen met boeken. Ons commentaar was nu juist dat een boek een boek is, ongeacht of het in een cassette zit. Dus één tabel met boeken.
Dat een boek deel uitmaakt van een cassette of in een doos zit, zou je op het formulier waarmee je boeken invoert af kunnen/moeten dwingen. Ik zou dus gaan voor deze structuur:
media.jpg
 
Dag Peter, de vorige keer had ik twee boekentabellen gemaakt, speciaal voor de AO-reeks. Er was geen verschil in de boekjes, behalve dat het ene deel in cassettes was opgenomen en een ander deel niet. Dat verschil heb ik na jullie commentaar opgeheven.

Bericht van de Tweede Wereldoorlog is een heel ander verhaal. Begin jaren zeventig verscheen er wekelijks een boekje met een totaal van 100, die je kon inbinden in zes banden. Dat boekje heb ik cahier genoemd. Dat cahier heeft wel een naam, maar bevat verschillende artikelen met verschillende auteurs. Die artikelen en auteurs zou ik in de boekentabel willen opnemen. Maar, om redundantie te voorkomen, heb ik de tabel cahier nodig.
 
Dat cahier heeft wel een naam, maar bevat verschillende artikelen met verschillende auteurs. Die artikelen en auteurs zou ik in de boekentabel willen opnemen.
Je bent, ook in mijn ogen, nog steeds niet lekker bezig. En dat komt door bovenstaand citaat. Je haalt m.i. een aantal zaken door elkaar. En wel deze: een artikel is géén boek. Je kunt je boeken database dan ook niet gebruiken voor het doel wat je nu wilt. En wel hierom (en je geeft het zelf al aan: een boek kan artikelen bevatten (van verschillende auteurs) en is dus in dat geval een verzameling artikelen, maar een artikel kan nooit een boek bevatten. Er bestaat dus een één-op-veel relatie tussen een boek en artikelen, waarbij er ook een éé3n-op-veel relatie bestaat tussen artikel en auteurs. Net zo min als een kamer een huis kan bevatten, maar een huis wel kamers. Je denkt dus verkeerd. Pas dat eerst aan voordat je verder gaat op een redelijk hopeloze en doodlopende weg.
 
Ik geloof toch echt dat je niet de juiste database hebt meegestuurd.
Maar, om redundantie te voorkomen, heb ik de tabel cahier nodig.
Die zie ik niet in de database:
cahier.jpg
In feite bespreek je hier een heel andere structuur. Band - Cahier - Artikel (en misschien bewaar je de banden in een doos).

Nog even een algemene opmerking. Bij de diverse boektabellen staat telkens één auteur. Een boek kan best meerdere auteurs hebben. Bovendien wil dat als dezelfde auteur aan meerdere boeken heeft meegewerkt de naam wel altijd op dezelfde manier geschreven hebben. Ook wil je misschien zoeken op auteur. Kortom: maak een tabel voor auteurs en een koppeltabel tussen boek en auteur. Je maakt daarmee een veel-op-veel relatie tussen boek en auteur; een boek kan meerdere auteurs hebben en een auteur kan aan meerdere boeken meegewerkt hebben.
Dit zou wellicht ook bij artikelen kunnen spelen.
 
Allereerst mijn verontschuldigingen, ik heb de verkeerde database meegestuurd. Ik heb het Win-Rar bestand bijgewerkt naar de datum van gisteren en dacht dat ik het meest actuele bestand had meegestuurd. In het vervolg zal ik hier beter op letten.

Dat betekent niet, dat ik het juiste bestand nu post, gelet op bovenstaande kritiek. Ik zal het bestand aanpassen en daarna opnieuw posten.

Rest mij Peter en Michel opnieuw te bedanken voor hun tijd en opbouwende kritiek @Aar , volgende keer stuur ik ook een printscreen mee.

Met vriendelijke groe,

Henk
 
Naar aanleiding van de opmerking van Peter over de veel op veel relatie tussen boeken en auteurs, vroeg ik mij af of je in de tabel met auteurs de schrijverscombinaties niet als afzonderlijk attribuut kunt opnemen, bijvoorbeeld Sjöwall & Wahlöö of Baantjer & De Waal. Op die manier kun je een één-op-veel relatie tot stand brengen tussen auteur en boek.

Met vriendelijke groet,

Henk
 
Dat is geen goed idee. Auteurs kunnen soms alleen een boek schrijven en soms in combinatie met (een of meer) anderen. Een auteur kan ook in meerdere combinaties voorkomen.
Een principe van goed database ontwerp is bovendien: één veld = één gegeven.
 
Dat zou een goed idee kunnen zijn voor vaste schrijversparen. Ik zou de schrijvers dan als één auteur invoeren en gebruiken. Het is dan echter niet meer mogelijk om gescheiden gegevens van de afzonderlijke auteurs op te nemen. En als je boeken hebt die door één van de auteurs onder eigen naam is geschreven, dan moet je die auteur apart invoeren.
De opmerking van Peter is op technische gronden wel correct, maar je moet dat op zijn eigen merites beoordelen. In het geval van boeken/auteurs kun je wel degelijk van auteursparen spreken, en daarbij mag je dat paar best als één entiteit zien.
 
Van mij mag het :). Ik zou het ook doen, zeker bij auteurs die samen een grote bibliotheek hebben volgepend.
 
Beste Forumleden,

Bijgaand een nieuwe versie van mijn database. Naast een opzet voor mijn boeken heb ik ook een opzet gemaakt voor mijn DVD's die in koffers van verschillend formaat zitten.

De artikelen van Bericht van de Tweede Wereldoorlog heb ik ook een betere plek gegeven in de database.

Met vriendelijke groeten,

Henk
 

Bijlagen

  • Mediatheek_rar.rar
    56,2 KB · Weergaven: 2
  • Schermafbeelding Mediadatabase .png
    Schermafbeelding Mediadatabase .png
    93,1 KB · Weergaven: 10
Graag hoor ik, wat jullie van de structuur vinden, gelet op de eerdere kritiek
 
Ik heb naar je db gekeken, en de Relaties vergeleken met die uit bericht#32. Daar zit een 'klein' verschil in, ik mis zo'n 12 tabellen :).
 
Maar om op die db terug te komen: ik snap 'm niet. Je hebt twee tabellen met identieke velden (Boeken en Cassetteboeken). Dát is dus een schoolvoorbeeld van een verkeerde opbouw. Als je een database gaat ontwerpen, moet je denken in entiteiten. Een entiteit is een object van een bepaald type. Een entiteit wordt bepaald door overeenkomende eigenschappen. Een boek is zo'n objecttype, en een doos is een ander. Kijk ik naar jouw twee tabellen, dan hebben ze dezelfde velden, en daarmee geef je overduidelijk aan dat het identieke objecten zijn. Van die objecten leg je dus dezelfde eigenschappen vast, en derhalve kan er maar één conclusie zijn: je hebt genoeg aan één tabel.
Daarnaast geldt min of meer hetzelfde voor de tabellen Doos en Cassette. Ook dát zijn (bijna) identieke objecten. Ook daarvoor heb je dus maar één tabel nodig. Al leg je van een cassette ook de kleur vast, wat mij eerlijk gezegd verbaast, want probeer jij maar eens een doos te kopen die géén kleur heeft :). Dus waarom de kleur van de doos niet vastleggen?

Ik vermoed verder dat je cassettes opslaat in dozen (ik hoop voor je dat dat altijd past ;)), maar zelfs met die constructie kun je nog met één tabel volstaan. In dat geval voeg je namelijk aan die tabel een veld ParentID toe, zodat je bij de cassettes aangeeft in welke doos ze zitten. Kortom: ik zou nog eens nadenken over de huidige opzet.

En uiteraard mis ik de tabel waarin je de objecten Boek en Doos/Cassette (verzin daar nog een passende naam voor) koppelt. Dus één boek zit in één doos, maar één doos/cassette kan meerdere boeken bevatten. Koppeltabel dus.
 
Laatst bewerkt:
De tabel cassetteboeken staat niet meer in de laatste versie van de databas. Ik heb 1 tabel boeken. Zie ook het meegestuurde screenshot.
De kleur van de cassette is relevan. In de cassettes zitten uitsluitend ongeveer 1600 AO-boekjes. Die cassettes zijn groen, bruin, blauw en rood van kleur. In de groene en bruine cassettes passen 50 boekjes; in de rode en blauwe 25.
En ja de cassettes passen allemaal in een IKEA-doos.
 
Dus één boek zit in één doos, maar één doos/cassette kan meerdere boeken bevatten. Koppeltabel dus.
Ik begrijp dit niet helemaal. Volgens mij beschrijf je hier een 1 op veel relatie. En een Koppeltabel gebruik je volgens mij voor een veel op veel relatie
 
Dat zie je fout. Een koppeltabel is een tabel die met een één-op-veel relatie vast zit aan een andere tabel. Meer is het niet. Zet je die tabel aan een andere tabel middels een één-op-veel relatie, dan hebben de twee hoofdtabellen een veel-op-veel relatie. In beide gevallen heb je één koppeltabel die aan twee hoofdtabellen vast zit.
 
Bedankt voor je heldere uitleg.
In dat geval voeg je namelijk aan die tabel een veld ParentID toe, zodat je bij de cassettes aangeeft in welke doos ze zitten.
Kun je iets meer vertellen over het Parent-id? Aan welke eisen moet het voldoen?
 
Terug
Bovenaan Onderaan