Access Relaties

Status
Niet open voor verdere reacties.

Airborn01

Gebruiker
Lid geworden
10 jun 2011
Berichten
18
Hallo,

Ik ben terug bezig met mijn access op te frissen maar zit met een stom probleem waar ik altijd op bots. Relaties. Het is zooooo simpel en toch geraak ik er geen wijs uit. Mss omdat ik door het bos de bomen niet meer zie....


Ik kan al mijn tabellen aanmaken, ik geef ze allemaal het correcte type, enz...

No problem.

Tot ik relaties moet gaan maken.

Ik zie niet in wat ik aan wat moet verbinden. Logische verbindingen tussen de tabellen.

Enige tip hoe ik dit kan beter zien? Logisch inzicht?

Ik dacht dat het altijd een autonummer(key) was die verbonden moest zijn met een ander item met dezelfde naam maar ik ben blijkbaar mis...

Hopelijk ben ik iets duidelijk...

Alvast bedankt!

Mvg,
Michaël
 
Een relatie is een 'lijntje' tussen twee tabellen
waarbij een veld van de ene tabel gekoppeld wordt aan een veld in de andere tabel.

Dat zijn soms velden met een (auto)numerieke waarde,
die op zichzelf geen herkenbare informatie hebben. Bijv volgnummers

Het kan ook zijn dat een koppeling wordt gelegd tussen twee velden met een alfa-nummerieke waarde.

Stel je hebt een tabel met gemeente-gegevens.
De unieke sleutel is een drieletter afkorting:
Apeldoorn = "APD", Zoetermeer = "ZTM"
in een ander veld staat het aantal inwoners.

In tabel 2 heb je gegevens van publieke voorzieningen: zwembaden, bibliotheken, stadions, enz.
In een van de kolommen staat een verwijzing naar de gemeente, bijv. APD of ZTM.

Als je een overzicht wilt maken van voorzieningen en het bijbehorende verzorgingsgebied (potentiele gebruikers)
dan leg je een relatie tussen bijvoorbeeld [gemeente].[idkey] en in de andere tabel [voorziening].[gemeente].

Je moet er wel voor zorgen dat de gegevens-soort aan beide kanten van de relatie hetzelfde is.
 
Kijk even in de sectie Handleidingen, en pak de cursus Access er eens bij....Daar heb ik e.e.a. vrij uitgebreid (en hopelijk duidelijjk) uitgelegd. Op basis van de uitleg van tecsman zou ik het nu ook nog steeds niet weten... Al is het lastig uit te leggen in een paar regels, dus verder niet negatief bedoeld. Maar het is een lastig onderwerp, zoals je al gemerkt hebt, en toch vrij belangrijk voor het goed functioneren van je db.
 
Mag je de vraag ook op Opgelost zetten! En dan zien we de volgende vragen wel verschijnen ;)
 
[...]
Ik zie niet in wat ik aan wat moet verbinden. Logische verbindingen tussen de tabellen.
Enige tip hoe ik dit kan beter zien? Logisch inzicht?

Op basis van de uitleg van tecsman zou ik het nu ook nog steeds niet weten...

OK, je hebt gelijk maar
ik wilde ook niet een "hoe doe ik het" in het kort schrijven.
Uit de vraagstelling had ik eigenlijk opgemaakt dat het niet zozeer ging om de handelingen,
maar om de achterliggende gadachte: wat is een relatie en hoe leg ik die.
Sorry als ik het verkeerd begrepen heb.
 
Je uitleg vond ik een beetje kort door de bocht, je had bijvoorbeeld ook kunnen uitleggen waarom de relatie die TS aan het maken was niet werkte. Wat je schreef was overigens niet fout; mocht je denken dat ik dat vond :)
 
Nee, :) om kort uit te leggen vanwaar de vraag, ik begrijp waarom je relaties legt, ik zie in waarom. Mijn vraag was, eens je alle tabbelen gemaakt hebt, hoe zie je het best wat je met elkaar verbindt?

Klanten - Orders

Een klant kan verschillende orders hebben dus ik weet, aha, er zal een link moeten zijn (relatie)

Maar uit de tabel klant & de tabel orders heb je veel velden. Hoe weet ik welk veld ik met elkaar moet verbinden uit de verschillende relaties.

That's the question
 
In je tabel klanten heb je een primaire sleutel voor elke klant. We noemen deze sleutel KlantID en is een autonummerings veld. Om nu een verbinding te leggen met de tabel Orders moet je dus kunnen herkennen welke orders bij welke klant horen. Daarvoor maak je van de primaire sleutel uit de klantentabel een foreignkey in de ordertabel. Voor het gemak geef ik deze foreignkey altijd dezelfde naam als de primarykey, dan is deze nl. altijd makkelijk te herkennen. Dus in de tabel Orders maak ik een foreignkey met de naam KlantID en maak daar een nummeriek veld van (PK van de tabel klanten is immers een autonummerings veld). Vervolgens leg je een relatie tussen de tabellen Klanten en Orders door de beide velden KlantID aan elkaar te linken.
 
Laatst bewerkt:
Dus je hebt je primaire sleutel KlantID in je tabel klanten. Je wil zien wat je klanten bestellen dus maak je een relatie. Door in de tabel orders een foreign key(KlantID) te maken (numeriek)

Je maakt je tabel Klanten

Velden:
KlantID - Autonummer (primaire sleutel)
Voornaam - Tekst
Naam - Tekst


Tabel Orders:

KlantID: Numeriek (foreignkey)
Merk : Tekst
Type: Tekst

Zoiets niet?


Vraagje

Ik heb ondervonden dat de foreign key meestal numeriek is, kan dit zijn?
 
Laatst bewerkt:
De term foreignkey moet je eigenlijk vergeten, want het is geen sleutel. Het is gewoon een numeriek veld. Het veld verwijst naar de KlantID's uit je tabel klanten. In je Relaties zie je dat terugkomen, als je het veld KlantID uit de tabel Klaten sleept naar het veld KlantID van de tabel Orders. Je ziet in het dialoogvenster <Relaties> dan twee kolommen: de eerste laat het veld KlantID uit KLanten zien, en de tweede (die kolom heet ook Gerelateerde tabel) het veld KlantID uit Orders. Om de relatie goed te laten werken, moet je wel de optie <Referentiële integriteit afdwingen> aanzetten, maar als je de cursus hebt gelezen, dan weet je dat :)

Je kunt van allerlei typen velden een sleutel maken, dat is afhankelijk van hoe je de sleutel wilt opbouwen. Een autonumnmerveld werkt op zich prima, omdat zo'n veld per definitie unieke waarden oplevert, maar je hebt geen enkele controle over de inhoud van zo'n sleutel. Wil je zelf een sleutel identificeren, dan met je dus ofwel met tekstvelden, ofwel met numerieke velden werken.
 

Inderdaad

Vraagje

Ik heb ondervonden dat de foreign key meestal numeriek is, kan dit zijn?

Bij mij wel ja. Bij mij is de primarykey meestal een autonummerings veld. Maar het kan ook wel anders. Bijvoorbeeld bij een tabel met Personeel/Medewerkers kun je het personeelsnummer heel goed gebruiken voor de primarykey en het personeelsnummer zou bijvoorbeeld kunnen bestaan uit letters en nummers. In dat geval is je primarykey een tekstveld. Je foreignkey wordt in dat geval ook een tekstveld. Je primary- en foreignkey moeten van hetzelfde gegevenstype zijn. Bij auto's kun je bijvoorbeeld het kenteken hiervoor gebruiken.

De term foreignkey moet je eigenlijk vergeten, want het is geen sleutel.

Foreignkey, ook wel referentiele sleutel genoemd in het land van de relationele databases. Zie onderstaande link.

http://en.wikipedia.org/wiki/Foreign_key

en ook bij Microsoft wordt bij access gesproken over primary- en foreignkeys!

http://office.microsoft.com/en-us/access-help/create-or-remove-a-primary-key-HA010014099.aspx
 
Laatst bewerkt:
Men examen is gisteren tamelijk goed verlopen. Heb 1x slecht gevaren bij het maken van een query op 2 tabellen. Er was geen relatie gemaakt waardoor access vastliep bij het uitvoeren van de query. Superaangenaam natuurlijk. Nu, dank je allemaal en ik blijf hier verder posten want VBA in Access volgt nu....even nog een betere cursus zoeken hiervoor.
 
Dan mag dit draadje volgens mij op <Opgelost>. Linkje boven in de blauwe balk!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan