[database] Relatie tussen tabellen

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb de volgende tabellen:
Afbeeldingslocatie: http://httpd.chello.nl/~j.vos6/zooi/relatie.png
In de tabel CommercieelDocument staan alle documenten, en in de tabellen offerte en facturen wordt aangegeven of het document een offerte of factuur is.

Alle document id's die voorkomen in de tabel offertes zijn dus offertes. Voor facturen geldt natuurlijk hetzelfde.

Maar wat voor relatie moet er nou tussen de tabel facturen/offertes en commercieeldocument?
Alle document id's in de tabel offertes MOETEN voorkomen in de tabel commercieeldocument, zelfde geldt voor de tabel facturen. Maar niet alle commerciele documenten zijn een factuur of offerte.

Ik hoop dat het een beetje duidelijk is en dat iemand hier een antwoord op weet aangezien ik er niet meer uitkom. Alvast bedankt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Op het eerste gezicht zou ik zeggen geen..
Een commercieeldocument IS EEN document type.
Dus jou je in principe

Tabel Commercieeldocument
...
DocumentTypeID int

Tabel DocumentTypen
DocumentTypeID int
Omschrijving varchar(50) (bv Geen, Offerte, Factuurt) etc.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Als ik het zo lees heb je een logisch gegevensmodel waarin het al dan niet factuur of offerte zijn van een document optioneel is. Een factuur is altijd een commercieel document, een commercieel document is niet altijd een factuur.

Waarom neem je geen indicator-veldje op zoals DocumentType in de entiteit CommercieelDocument?

With the light in our eyes, it's hard to see.


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Dat is idd een oplossing, maar dit heb ik vanuit mijn classe model zo gemaakt dus wil het liever niet aanpassen. Mijn vraag was alleen wat voor relatie hier tussen moet en hoe ik deze moet leggen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik vind het nog steeds erg vervelend dat er nog zo weinig wordt gedaan aan odbm systemen. Dit is namelijk zo`n probleem, je hebt namelijk te maken met inheritance en dat laat zich altijd een beetje onhandig vertalen naar een relationeel model.

In het boek: Patterns of Enterprise Application Architecture" wordt hier veel aandacht aan geschonken. Het boek is verder ook zeker geen miskoop.

[edit]
en de meest eenvoudige optie zou idd zijn om in CommercieelDocument een veld op te nemen wat voor type document het is. Als Facturen en Offertes geen additionele data hebben, dan zou dit een handige aanpak zijn. En anders.. anders moet je or mapping doen.

[ Voor 29% gewijzigd door Alarmnummer op 03-03-2003 10:21 ]


  • Kristof
  • Registratie: Januari 2002
  • Laatst online: 09-04 17:34

Kristof

is een Belgisch product

Ik zou zeggen een gewone join...

als je daarna een select geeft

select factuurid, datum, nummer
from facturen f, commercieeldocument d
where f.documentid = d.documentid

zal hij alle documenten lweergeven die facturen zijn, en niet de andere (want doorvoor is geen overeenkomstig record in facturen)

idem voor offertes

"You can get more with a kind word and a gun than you can with a kind word alone." - Al Capone


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Het ophalen van de gegevens is ook verder het probleem niet aangezien dit design er is gekomen vanuit mijn classe structuur. Ik moet alleen nog een relatie afdwingen, al is dit natuurlijk niet verplicht als de classes goed hun werk doen.

Het design aanpassen is natuurlijk een oplossing, maar zoals ik al zei doe ik dit liever niet omdat de database een vertaling moet zijn van de classe sturctuur (dus de business logica).

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Misschien is je classe structuur dan niet helemaal goed ;)
Als de Facturen en Offertes (en eventuele toekomstige tabellen) verder geen andere info bevatten dan alleen een lijstje met welke document id's Facturen (etc) zijn, zou ik ook voor een extra veld gaan wat het type aangeeft.

Exact expert nodig?


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:26

Dido

heforshe

Volgens mij heb je gewoon een 1-1 relatie, met dien verstanden dat aan de factuur/offertekant geen occurence hoeft voor te komen.

1-1 relatie kun je meestal vermijden door alle gegevens in dezelfde tabel te zetten...
Simpelweg een veldje status in je documenttabel is dus voldoende. Het lijkt me dat je in jouw model simpelweg gegevens dubbel opslaat. En dat is meestal niet goed...

Wat betekent mijn avatar?

Pagina: 1