Datamodelleren - Koppeltabel of constraints?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 12:04
Ik ben bezig met het maken van een simpele database, maar kom iets tegen waar ik geen antwoord op heb.

Ik heb twee tabellen.

Rekening (ID, Naam, Beginsaldo)
Transactie (ID, Bedrag, Datum, Soort, Van rekening, Naar rekening)

Een transactie kan op 2 rekeningen voorkomen (wordt van één rekening afgeschreven en bij een andere overgemaakt) en een rekening kan op meerdere transacties voorkomen. Een 2 op veel relatie, dat kan uiteraard niet. Of wel?

Hoe pak ik dit het beste aan? Met een koppeltabel of kan dit goed werken door ervoor te zorgen dat geen enkele transactie 2 dezelfde rekeningnummers heeft?

Google biedt geen uitkomst.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 18:09

NMe

Quia Ego Sic Dico.

Een constraint leggen lijkt me hier meer dan voldoende.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21-05 22:20

Matis

Rubber Rocket

Waarom kunnen er niet meerdere transacties van de ene naar de andere rekening voorkomen?
In dat geval (maar een keer van A naar B ) kun je van en naar rekening ook al PK instellen.

[ Voor 8% gewijzigd door Matis op 25-06-2012 19:20 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Joep schreef op maandag 25 juni 2012 @ 17:38:
Een transactie kan op 2 rekeningen voorkomen (wordt van één rekening afgeschreven en bij een andere overgemaakt) en een rekening kan op meerdere transacties voorkomen. Een 2 op veel relatie, dat kan uiteraard niet. Of wel?
Nee, het zijn twee 1:many relaties. Van een rekening worden meerdere transacties afgeschreven en meerdere transacties bijgeschreven. 2x 1:many dus.
Hoe pak ik dit het beste aan? Met een koppeltabel of kan dit goed werken door ervoor te zorgen dat geen enkele transactie 2 dezelfde rekeningnummers heeft?
Het is dus gewoon een constraint, maar als je niet van een rekening naar de eigen rekening wilt overschrijven, betekent dat de van_rekening niet gelijk mag zijn aan aan_rekening.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 08:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Moduleren != modelleren :P Titelfix eminent... Tevens een tikje naar SEA

[ Voor 22% gewijzigd door RobIII op 25-06-2012 20:28 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Maarehm... is het niet een verkeerde aanname dat er maximaal 1 transactie van rekening X naar rekening Y kan zijn? Ik weet uiteraard niet om wat voor systeem het gaat maar ik kan me geen use-case bedenken waar je maximaal 1 combinatie kan hebben.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 12:04
Schreef ik echt moduleren? Damn 8)7

Het gaat om een simpele database zodat ik kan bijhouden waar ik m'n geld aan uitgeef. Gewoon boekhouding.

Ik heb als records in tabel rekening bijvoorbeeld een spaarrekening, betaalrekening, portemonnee en "de buitenwereld". Misschien dat ik buitenwereld nog ga opsplitsen in wat specifieke dingen, maargoed.

@ Matis en Wolfboy

Als ik bijvoorbeeld 50 euro van m'n portemonnee uitgeef bij de AH (Buitenwereld) dan is het dus Van portemonnee, Naar buitenwereld. Ik kan dat geld niet magisch gaan vermenigvuldigen en het ook nog naar een andere rekening verplaatsen. Daarom heeft elke transactie twee verschillende rekeningen.

Je kan natuurlijk wel meerdere transacties hebben die van dezelfde rekening naar dezelfde andere rekening gaan, maar het blijven wel verschillende transacties.

@ NMe & mithras

Thx.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Joep schreef op dinsdag 26 juni 2012 @ 10:11:
Je kan natuurlijk wel meerdere transacties hebben die van dezelfde rekening naar dezelfde andere rekening gaan, maar het blijven wel verschillende transacties.
Dan heb ik je verkeerd begrepen, ik dacht dat je een unique constraint op die combinatie wilde zetten :)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Kajel
  • Registratie: Oktober 2004
  • Laatst online: 17-05 15:33

Kajel

Development in Style

RobIII schreef op maandag 25 juni 2012 @ 20:26:
Moduleren != modelleren :P Titelfix eminent... Tevens een tikje naar SEA
En Eminent != Imminent :P
Denk dat je het laatste bedoelt ;)

Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 12:04
Schop!

Ik ben dit nu (eindelijk) aan het implementeren. Ik heb in MS Access 2007 deze twee tabellen gemaakt, nog geen relaties gedefinieerd en wil de constraint toevoegen.

Rekening (rek_ID, Naam, Beginsaldo)
Transactie (trans_ID, Bedrag, Datum, Soort, Van, Naar)

Een rekening kan meerdere transacties bevatten.
Het veld "Van" moet dus een rek_ID zijn van tabel Rekening.
Het veld "Naar" moet ook een rek_ID zijn van tabel Rekening.
Naar mag niet hetzelfde zijn als Van

Nergens in de GUI iets te vinden om dit via de GUI of een wizard te doen dus dan maar een query maken. Maar dan loop ik vast.

Moet ik eerst een één op veel relatie definieeren tussen respectievelijk Van en rek_ID, dan tussen Naar en rek_ID en moet ik daarna een query draaien om een constraint vast te leggen?

Zo ja, klopt deze query dan?
code:
1
2
ALTER TABLE Transactie
ADD CHECK (Naar NOT Van)

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Op zich zit je het complexer te maken dan nodig denk ik, gezien een transactie van A naar A (zelfde nummers) technisch geen effect heeft op de balans van die rekening (immers, er gaat net zoveel af als dat erbij komt).

Je GUI kan het afvangen als "waarschijnlijk maak je hier een invoerfout", maar volgens mij is het geen ramp om dat soort rows te hebben. Desnoods kan je die rows droppen met een simpele query (DELETE FROM transactie WHERE Van = Naar) ofzo na der hand.

Lijkt me belangrijker voor een prive-app dat het werkt, dan dat je DB perfect in elkaar zit :) Tis niet alsof je binnenkort een miljoen transacties gaat hebben ofzo :)

[ Voor 15% gewijzigd door MLM op 03-02-2013 21:33 ]

-niks-


Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 12:04
Op zich heb je daar gelijk in. Ik ben inderdaad sowieso van plan om dit in de GUI weg te vangen. Maar toch :)

Edit: Dan weet ik nog steeds niet hoe ik de relaties moet maken tussen de 2 tabellen.

[ Voor 28% gewijzigd door Joep op 03-02-2013 21:46 ]


Acties:
  • 0 Henk 'm!

Anoniem: 403331

@Joep: relaties tussen tabellen kan je (in elk geval in oudere versies van Access) via het menu Extra/Relaties doen... geen idee hoe dat met die beribbonde A2007 van jou gaat...

Acties:
  • 0 Henk 'm!

  • Joep
  • Registratie: December 2005
  • Laatst online: 12:04
Ik weet wel waar ik dit in Access terug kan vinden, maar ik weet nog niet precies hoe ik de relaties moet hebben. Ik ga in het weekend het één en andere proberen.
Pagina: 1