Relatieproblemen (in access)

Status
Niet open voor verdere reacties.

Hvdl70

Gebruiker
Lid geworden
4 jan 2009
Berichten
36
Hey,

Een tijdje geleden kwam ik met een vraag over een database over huurders/eigenaars, ik heb deze herwerkt omdat ik naar mijn eigen mening niet goed gestart was.
Wat is de bedoeling : Mijn schoonvader heeft een bedrijfje (Monteur CV), hij werkt reeds jaren met een kaartenbak. Nu ik hem sinds een jaartje help met de administratie, en ik die fichebak onoverzichtelijk vind, wil ik dit in access maken, het lijkt vrij eenvoudig maar ik zit vast met de relaties, een overzicht :

Tabel: installaties - deze bevat de gegevens waar de CV installatie is geplaatst geweest
Tabel: klant -deze bevat de klanten gegevens die voor facturatie zullen gebruikt worden.
Tabel: eigenschappen - deze bevat de eigenschappen van de installatie
Tabel: onderhouden - deze bevat de onderhoudsdata van de CV installatie met de nodige attesten en opmerkingen
Tabel: Facturen - bevat een overzicht van de gemaakte facturen, datum, factuurnummer, factuuromschrijving

Relaties :
Installatie/klant : mits een klant meerdere installaties kan hebben (denk maar eigenaar/huurder) -> 1 op veel relatie
Installatie/eigenschapen : Mits 1 installatie, 1 CV heeft -> 1 op 1 relatie
Installatie/onderhouden : 1 installatie kan meerdere onderhouden hebben, dus -> 1 op veel
Installatie/ facturen : 1 installatie kan meerdere facturen hebben, dus 1 op veel

Hier loopt het een beetje verkeerd omdat ik, denk ik, vast zit met met ID en primaire sleutels (ik kan ook maar 1 veld als autonummering instellen)

De bedoeling is dat ik achteraf 1 formulier heb met gegevens installatie, gegevens van de klant, onderhoudsdata, en een overzicht van de facturen (zoals het nu ook manueel opgeschreven wordt)

Wie helpt mij verder? :rolleyes::rolleyes:

Hans
 

Bijlagen

Je tabellenstructuur is qua opzet wel OK; d.w.z: je hebt de goede tabellen gemaakt.
Maar de verwijzingen in de tabellen kloppen m.i. niet helemaal. Om een voorbeeldje te geven: je hebt de tabel Facturen gekoppeld aan de tabel Installaties. Jouw motivatie daarbij is dat één installatie meerdere facturen kan hebben. Jammer genoeg klopt die redenering niet, tenzij de installaties zelf betalen ;)
Facturen worden (uiteraard) betaald door de klanten. Als je dus een factuur maakt, dan kijk je welke klant welke installatie heeft, en wat hij dus moet betalen. De tabel Facturen moet je dus koppelen aan Klanten.

Ik zal, in een rustig moment, de relaties voor je proberen aan te passen, en de db dan terug te zetten.
 
Kwas toch bezig...

Hier een aangepaste versie.
Zoals je ziet, heb ik de meeste één-op'-eel relaties omgekeerd, of aangepast. Ook heb ik een tabel Factuurregels toegevoegd, zodat je op een factuur meerdere installaties kunt vermelden.

De vraag die je jezelf moet stellen bij het leggen van relaties is eigenlijk een logische: Welk element hoort uniek bij een specifiek onderdeel? Bij een klant heb je adresgegevens, die per klant uniek zijn. Een installatie zou best op een andere lokatie kunnen staan, dus die krijgt een eigen adres. (Zit er in, prima :thumb: )
Een installatie heeft bepaalde eigenschappen, die voor elke installatie anders zijn. Daar heb je dus een aparte tabel voor nodig. Maar de koppeling tussen die tabel had je dus omgedraaid: Per installatie heb je misschien wel meerdere eigenschappen. Ik kan mij voorstellen dat je na verloop van tijd een andere brander installeert. Je hebt dus één installatie, met meerdere Eigenschaprecords, niet andersom!
Kijk maar eens of je hier mee uit de voeten kunt.
 

Bijlagen

Bedankt Michel voor je hulp.

Stel nu dat installatie en klant op zelfde adres wonen, moeten deze gegevens dan steeds 2 keer ingevuld worden?

Hans
 
Je kunt een invulformulier maken, waarbij je bijvoorbeeld kunt aangeven dat het installatieadres hetzelfde is als het klantadres. Dat kan dan met een checkbox in de tabel Installatie bijvoorbeeld. Als de adresgegevens niet verplicht hoeven te worden ingevoerd in Installaties, is dat al voldoende. Je kunt dan bij het maken van queries de adresgegevens herhalen, als je dat wilt, of weglaten. Maar het belangrijkste is dus een Ja/Nee veldje in de tabel Installatie, dat je dan bijvoorbeeld AdresKlant of zo noemt.
 
Er bestaat nu wel een redundante relatie en wel tussen de tabel met faktuurregels en de tabel met installaties.
Deze relatie is niet nodig.

Grtz,

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan