Toon posts:

Probleem met database ontwerp factuurnummer

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor mijn studie ben bezig met het maken van een database voor een magazine. Het magazine moet facturen kunnen sturen naar contacten, omdat zij er een abonnement op hebben, maar ik moet ook een factuur kunnen sturen naar een bedrijf, omdat bedrijven bijvoorbeeld een advertentie kunnen plaatsen in het magazine. Ik heb hiervoor onder andere de volgende tabellen aangemaakt:

Contact
Contacten_id, voornaam, achternaam, etc

Bedrijven
Bedrijven_id, bedrijfsnaam, plaats, postcode, etc

Factuur
Factuurnummer, etc

Factuurregel
Factuurnummer, productcode, etc

Nu wil ik een factuur kunnen maken voor een bedrijf, maar ik wil ook een factuur kunnen maken voor een contact. Hier loop ik vast. Moet ik nu in de tabel Factuur een kolom maken maken met Bedrijf_id en een kolom met Contact_id, en als ik een factuur aanmaak voor een contact, dan de waarde bij Bedrijf_id leeg laten of moet ik dit op een andere manier oplossen?

Alle reacties


Acties:
  • 0 Henk 'm!

  • Muuh87
  • Registratie: Augustus 2015
  • Laatst online: 11:11
Ik zou het op een andere manier oplossen.

Zijn er overeenkomsten tussen bedrijven en contactpersonen? Dan een niveau dieper normaliseren en op de nieuw ontstane tabel de koppeling maken met de factuur en factuurregel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi Muuh87,

Dank je wel voor je reactie:

Een contact kan ook een contactpersoon zijn van een bedrijf. Dus op die manier zijn die twee met elkaar gekoppeld met een tussentabel.

Hoe bedoel je dit precies?

Acties:
  • 0 Henk 'm!

  • LAD93
  • Registratie: Maart 2016
  • Niet online
Waarom niet een globale ‘party’ tabel aanmaken met een extra kolom ‘role’ waarin je aan kunt geven of het een bedrijf of contact is? Dan is een factuur gekoppeld aan het partijnummer en zit je niet met dubbele kolommen (anders zou je voor eventuele extra partijen continu een kolom toe moeten voegen..)

per aspera ad astra


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
LAD93 schreef op zaterdag 21 maart 2020 @ 17:33:
Waarom niet een globale ‘party’ tabel aanmaken met een extra kolom ‘role’ waarin je aan kunt geven of het een bedrijf of contact is? Dan is een factuur gekoppeld aan het partijnummer en zit je niet met dubbele kolommen (anders zou je voor eventuele extra partijen continu een kolom toe moeten voegen..)
Daar heb je een goed punt. Echter kunnen er meerdere contactpersonen zijn voor meerdere bedrijven. Tussen die twee tabellen is dus met behulp van een koppeltabel een veel op veel relatie. Misschien kan ik dit dat weer oplossen door een tabel Relatie te maken, waarin je twee Contact_id's met elkaar koppelt? Is dat een idee?

[ Voor 9% gewijzigd door Verwijderd op 21-03-2020 17:50 ]


Acties:
  • 0 Henk 'm!

  • LAD93
  • Registratie: Maart 2016
  • Niet online
Verwijderd schreef op zaterdag 21 maart 2020 @ 17:40:
[...]


Daar heb je een goed punt. Echter kunnen er meerdere contactpersonen zijn voor meerdere bedrijven. Tussen die twee tabellen is dus met behulp van een koppeltabel een veel op veel relatie. Misschien kan ik dit dat weer oplossen door een tabel Relatie te maken, waarin je twee Contact_id's met elkaar koppelt? Is dat een idee?
Ah, dat had ik niet gelezen. Ja dat is inderdaad de oplossing die ik zou volgen. Op die manier kan je dan alle relaties vastleggen. Ook eventueel tussen contact en contact / bedrijf en bedrijf.

per aspera ad astra


Acties:
  • 0 Henk 'm!

Verwijderd

Bedrijf en contactperso(o)n(en) lijkt me een 1 op n relatie. Niet n op n. In theorie zou één persoon bij twee bedrijven kunnen werken. Dan nog is dat een andere 'entiteit' omdat de persoon een andere functie en contactgegevens heeft.

Vergeet trouwens niet dat een factuur reproduceerbaar moet blijven (fiscale wetgeving) Dus als een bedrijf van naam of adres verandert mag dat géén gevolgen hebben voor de factuurgegevens! (Geen idee welk onderwijs je volgt en mss hoef je hier geen rekening mee te houden, is wél een mooi voorbeeld van database ontwerp instinkers ;))

[ Voor 42% gewijzigd door Verwijderd op 21-03-2020 18:08 ]


Acties:
  • 0 Henk 'm!

  • Muuh87
  • Registratie: Augustus 2015
  • Laatst online: 11:11
Ik bedoelde inderdaad wat Lad93 voorstelde. Een hogere entiteit waarna je daarna aangeeft wat het is.
En deze waar nodig koppelen.

Acties:
  • +1 Henk 'm!

Verwijderd

Topicstarter
Ik ga hier even mee puzzelen. Dank voor de tips.

Acties:
  • 0 Henk 'm!

  • Speedmaster
  • Registratie: Juli 2005
  • Laatst online: 15:39

Speedmaster

Make my day...

En hou even rekening met je BTW....

Acties:
  • +4 Henk 'm!

  • Josk79
  • Registratie: September 2013
  • Laatst online: 07-10 19:24
offtopic:
LET OP: In deze tijd is het niet verstandig de contacten te dicht bij elkaar in de tabel op te slaan. Minstens 1,5 regel tussenafstand houden!
Pagina: 1