Gathering of Tweakers

Quicksearch
Hoi,

Ik heb nu het volgende model.

Er bestaan klanten en subklanten. Een aantal van hun properties zijn hetzelfde. Een subklant hangt aan een klant.

Verder zijn er projecten die als property klant hebben en subklant. Dus dat ziet er zo uit:
code:
1
2
3
Project -------------------------------------   klant
 |                                                |
------------------ subklant----------------------

Het probleem is nu dat project 2 propertys heeft voor de klant eentje voor subklant en eentje voor klant. Echter heeft een klant ook weleens projecten, dus dan heb je een lege property. En dat beide klanten veel dezelfde propertys hebben.

Nu vroeg ik me af of het ook alsvolgt kan worden opgelostmbv inherrit.
code:
1
2
3
4
Project ------------- Klant
                         ^
                         |
subklant ----------------------------- subklant2

Dus dat project 1 property klant heeft, maar dat dat een subklant of een subklant2 kan zijn.Verder blijven er gewoon 2 tabellen in de database voor subklant en subklant2 via nhibernate.

jorisstoop wijzigde dit bericht 09-05-2008 12:04 (3%)

 
Laten we lekker link gaan doen

Als je subklant laat overerven van klant kan dat ja.

public class subklant : klant

Nu kan je zowel een Klant als een Subklant (en alle andere subklantx typen die je laat overerven van klant) in een veld van het type Klant opslaan, waarmee je dus geen twee aparte properties nodig hebt :).

slindenau wijzigde dit bericht 09-05-2008 12:09 (23%)

Liberatis tutemet ex infera.
"De programma’s die we gebruiken zijn eigenlijk zo ontworpen dat ze allemaal onze aandacht opeisen als een stel dreinende peuters."

Kijk, dit wilde ik even weten.
Of ik dus alle types van subklant in een property van het type klant kan opslaan.

Ik neem aan dat het ook mogelijk is om een subklant als property in subklant2 op te nemen. Dat lijkt me geen probleem.

Heet erg bedankt.
Wilde even een zekerheidje hebben voordat ik mijn projectje ga ombouwen.

Nu nog even uitvogelen hoe dat zit met nhibernate, maar dat komt wel goed.

jorisstoop wijzigde dit bericht 09-05-2008 12:19 (17%)

 

Acties: [view][quote]


Door: mOrPhie Moderator HK/SG
De vraag is of subklant functioneel gezien wel een klant is. Wat is subklant voor iets? Inheritence gebruik je bij een "is een" relatie, of wanneer je aspect-technisch wil abstraheren. Is een subklant ook een klant van jullie of is een subklant een klant van jullie klant? In de 2e situatie is inheritence functioneel onjuist. Er zijn dan andere opties, maar voordat ik die ga uitschrijven moeten we dus eerst even weten wat het verschil tussen een klant en subklant -functioneel- is. :)

Tweakblog: Architectural mood swings
"Atheism is a non-prophet organization.", George Carlin

Een klant in een klant van ons (voor de facturatie). Een subklant is een klant van een klant. Die subklant heeft projecten bij ons.

Echter zijn er ook klanten (voor facturatie) die rechtstreeks projecten bij ons hebben.

Mij leek die inherrit wel een goede optie, maar dat blijkt dus functioneel onjuist?

Je hebt dan maar 1 property bij project nodig. Onder klant hangen subklant en facturatieKlant en de subklant heeft dus ook een property facturatieKlant

jorisstoop wijzigde dit bericht 09-05-2008 12:24 (20%)

 
Berichten: 3417
Reg. datum: 28 april 2000

Ik vroeg me een beetje hetzelfde af als mOrphie. Is een Klant niet hetzelfde als een SubKlant ( op de relatie met het project na?

Moet je dan uberhuapt wel een aparte class voor SubKlant hebben?

De vraag is dus wat is de functie van Klant/SubKlant en wat zijn de overeenkomsten en verschillen tussen deze 2

edit:
Aan de hand van je reactie zou ik me voor kunnen stellen dat zowel Klanten als SubKlanten gewoon "Relaties" zijn. Je kan dan door middel van associaties ( en in de database koppeltabellen ) aangeven of iemand een klant/SubKlant is. Het kan dan later ook voorkomen dat een Relatie zowel een klant is van jullie als een klant van jullie klant ( en dus een SubKlant ). Het lijkt me dat het een het ander niet uitsluit

rwb wijzigde dit bericht 09-05-2008 12:26 (40%)

To be, or not to be, those are the parameters

De overeenkomsten van klant en subklant zijn de naw-gegevens. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort een klant hoort.
- een klant heeft kvk, btw en nog meer andere velden dan subklant.

Vanwege het idee dat een project bij een klant kan horen leek me inherrit een optie. Dan kan een klant namelijkeen klant of een subklant zijn.
 
quote:
jorisstoop schreef op vrijdag 09 mei 2008 @ 12:33:
- een klant heeft kvk, btw en nog meer andere velden dan subklant.
Dat klopt dan dus al niet, als je SubKlant inherit van Klant heeft SubKlant dus ook kvk, btw etc.
Sorry voor de rare naamgeving, maar mijn idee is:
code:
1
2
3
4
Project ------------- Klant
                         ^
                         |
subklant ----------------------------- hoofdklant

De overeenkomsten van hoofdklant en subklant zijn de naw-gegevens / contactpersoon. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort bij een hoofdklant.
- een hoofdklant heeft kvk, btw en nog meer andere velden dan subklant.
 
Maak dan een Persoon (oid) met naw gegevens, en Klant en SubKlant daarvan als afgeleidden.

.edit: ja zo ja, dat lijkt me een stuk beter.

.oisyn wijzigde dit bericht 09-05-2008 12:47 (21%)

Call me cocky, but if there`s an alien out there I can`t kill I haven`t met him and killed him yet.
[Tomb Raider: Underworld] - [My javascript wolfenstein project]

Zoals ik net hierboven beschreef dus.
De verwarring kwam door de naamgeving.

Maar het probleem is dus of het functioneel juist is dan dat een subklant een property heeft met een hoofdklant erin.

jorisstoop wijzigde dit bericht 09-05-2008 12:48 (3%)

 
Waarom zou dat niet juist zijn? Een subklant heeft toch een koppeling met een hoofdklant?

Call me cocky, but if there`s an alien out there I can`t kill I haven`t met him and killed him yet.
[Tomb Raider: Underworld] - [My javascript wolfenstein project]

Klopt. En het zijn allebei klanten.
Dan ga ik het zo implementeren.In ieder geval allemaal heel erg bedankt voor de snelle reacties.
 
Berichten: 3417
Reg. datum: 28 april 2000

Zou je het dan niet zoiets doen?

http://woy.nl/Klant.jpg

Een relatie heeft dan 0 of meer Sub-relaties. Een relatie heeft een Sub-Class Klant. Een Project heeft vervolgens weer een klant.

Op deze manier is het ook mogenlijk dat een Klant een Sub-Klant is.

To be, or not to be, those are the parameters

Maar daarmee kun je weer geen extra info opslaan voor een subklant (geen idee of dat nodig is overigens hoor). En ook kun je dan subsubklanten en subsubsubklanten definieren e.d. ;). Moet dat lijntje trouwens niet een 1:n relatie zijn ipv een m:n relatie?

Call me cocky, but if there`s an alien out there I can`t kill I haven`t met him and killed him yet.
[Tomb Raider: Underworld] - [My javascript wolfenstein project]

Dat zou misschien ook kunnen.

Heb echter nog een ander vraagje.
Ben nu bezig met de andere implementatie (inherrit). Dit werkt allemaal goed.

Alleen heb ik een probleempje met het mappen van de classes naar de tabel.

Ik heb de volgende info:
http://www.hibernate.org/...ate/html/inheritance.html

En wil graag de table-per-concrete-class methode gebruiken.

Nu heb ik de HoofdKlant en de SubKlant gemapped,

Maar de Klant lukt me niet echt. Ik kan dat any-atribuut niet echt plaatsen. Heeft iemand hier toevallig ervaring mee?
 
Berichten: 3417
Reg. datum: 28 april 2000

quote:
.oisyn schreef op vrijdag 09 mei 2008 @ 15:55:
Maar daarmee kun je weer geen extra info opslaan voor een subklant (geen idee of dat nodig is overigens hoor). En ook kun je dan subsubklanten en subsubsubklanten definieren e.d. ;).
quote:
jorisstoop schreef op vrijdag 09 mei 2008 @ 12:33:
De overeenkomsten van klant en subklant zijn de naw-gegevens. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort een klant hoort.
- een klant heeft kvk, btw en nog meer andere velden dan subklant.
Hier staat dat het enige specifieke voor een sub-klant is dat hij bij een sub-klant hoort, dus is er geen extra class nodig lijkt me. Of de informatie moet niet compleet zijn, maar dat kan ik vanaf hier niet zien natuurlijk
quote:
Moet dat lijntje trouwens niet een 1:n relatie zijn ipv een m:n relatie?
Iemand kan toch ook Sub-Klant zijn bij meerdere Klanten? Dus lijkt me een m:n relatie
quote:
jorisstoop schreef op vrijdag 09 mei 2008 @ 15:58:
Dat zou misschien ook kunnen.

Heb echter nog een ander vraagje.
Ben nu bezig met de andere implementatie (inherrit). Dit werkt allemaal goed.

Alleen heb ik een probleempje met het mappen van de classes naar de tabel.

Ik heb de volgende info:
http://www.hibernate.org/...ate/html/inheritance.html

En wil graag de table-per-concrete-class methode gebruiken.

Nu heb ik de HoofdKlant en de SubKlant gemapped,

Maar de Klant lukt me niet echt. Ik kan dat any-atribuut niet echt plaatsen. Heeft iemand hier toevallig ervaring mee?
Bij de Table-per concrete-class hoef je de Klant class niet te mappen lijkt me. Het is tenslotte geen concrete class. Je hebt immers alleen instanties van of HoofdKlant of SubKlant

rwb wijzigde dit bericht 09-05-2008 16:30 (29%)

To be, or not to be, those are the parameters

Heb er nog even naar zitten kijken, en die oplossing is inderdaad nog niet zo gek. Volgens mij is dat precies wat ik nodig heb.

Verder heb ik die klant class inderdaad niet gemapped, maar project heeft wel een property klant, dus bij opstarten van de applicatie krijg ik de volgende melding: An association from the table tbl_project refers to an unmapped class: Klant

Dus dit moet ik nog even oplossen. Overstappen naar de oplossing van rwb is dan niet zo moeilijk.

Echter krijg je dan wel null-values in je database als een klant geen klant boven aich heeft.
 
Berichten: 3417
Reg. datum: 28 april 2000

quote:
jorisstoop schreef op vrijdag 09 mei 2008 @ 16:40:
Verder heb ik die klant class inderdaad niet gemapped, maar project heeft wel een property klant, dus bij opstarten van de applicatie krijg ik de volgende melding: An association from the table tbl_project refers to an unmapped class: Klant
Omdat je geen Property kan gebruiken bij table-per-concrete class, maar het any element moet gebruiken. ( Staat op de pagina die je zelf aanhaalt )
quote:
Echter krijg je dan wel null-values in je database als een klant geen klant boven aich heeft.
Nee dat hoeft niet want je gebruikt natuurlijk gewoon een koppeltabel voor de relatie tussen relaties ( het is een m:n relatie )

To be, or not to be, those are the parameters



© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Adrastos

© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Adrastos

[RSS][XML]

Update Tracker

Active Topics
Active Topics
Frontpage Nieuws
Frontpage Nieuws