Ik heb je opzet bekeken, en (zal je vast niet vreemd vinden) zitten er wel een paar probleempjes in. Dat gevoel werd al getriggerd door deze zin:
maar nu moet ik naast die laptop tab ook een kolom in de tab Klant aanpassen omdat deze een relatie hebben.
En dat blijkt dus te kloppen. In eerste instantie leek je een goede relatie gelegd te hebben tussen Laptop en Klanten, maar bij nadere bestudering klopt dat dus niet. In jouw opzet kun je niet op de juiste manier laptops aan klanten koppelen. Je kunt namelijk bij jou een laptop aan meerdere gebruikers koppelen, en dat lijkt mij toch niet de bedoeling. Althans: niet tegelijkertijd. Een klant is één object, en een laptop is ook één object. En een zelfstandig object kan maar op één plaats zijn in de tijd. Oftewel: als een klant een laptop heeft, moet het (niet alleen fysiek maar ook databasetechnisch) onmogelijk zijn om dezelfde laptop aan een andere klant mee te geven. Om dat te regelen, heb je een derde tabel nodig, en een aanpassing in de tabel Laptops.
Mischien is het ook handig om nog even de principes van een tabel uit te leggen in (hopelijk) heldere taal: in een tabel sla je gegevens op die
exclusief bij elkaar horen. Een klantentabel bevat bijvoorbeeld de klantgegevens. En een Laptop tabel gegevens van laptops. Dat houdt in, dat je in een klantentabel geen gegevens opslaat van laptops, en in een laptoptabel geen klantgegevens. Een laptop verandert bijvoorbeeld niet als je hem aan een andere klant meegeeft; het blijft hetzelfde apparaat. Het merk verandert niet, het type niet, de aanschafprijs niet etc. Idem dito voor een klant: zijn naam verandert niet als hij een laptop meeneemt. (tenzij je 'm steelt natuurlijk).
Omdat we in de tabellen met brongegevens unieke records willen kunnen terugvinden (één specifieke laptop, één bepaalde klant) gebruik je
sleutelgegevens: bijvoorbeeld Serienummer voor Laptops, en KlantID's voor klanten. In de brontabellen komen die sleutel exact één keer voor.
Uiteraard wil je vastleggen welke laptop naar welke klant gaat. Daarvoor maak je een tabel Laptop-Klant aan bijvoorbeeld. Hierin maak je records aan waarin je een KlantID koppelt aan een Serienummer, om maar even bij jouw tabellen te blijven. Afhankelijk van wat je wilt bereiken, maak je van de combinatie Serienummer+KlantID een combinatiesleutel, wat jij in beginsel gedaan hebt in de tabel Laptop. Deze sleutel heeft één nadeel: als je de laptops wilt verhuren, dan kun je met deze sleutel elke combinatie van Laptop en klant maar één keer gebruiken. Oftwel: elke laptop mag maar één keer worden uitgeleend aan dezelfde klant.
Bij een verkooptransactie zal dat in beginsel geen probleem zijn (een klant wordt tenslotte eigenaar van de laptop) maar bij een verhuurbedrijf is de combinatie enigszins ongelukkig. Wat doe je als een klant een laptop huurt die hij al een keer heeft gehuurd? En het is het laatste exemplaar? Moet je hem wegsturen....
Mocht je er zelf niet uitkomen, dan kan ik het voorbeeld wel weer posten; het lijkt me dat je het eerst zelf wilt proberen
