[ALG/Objecten/Databases]

Pagina: 1
Acties:

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 26-12-2025
Ik ben nog nieuw in materie dus hopelijk niet een al te domme vraag. Voor java maak je klassen en subklassen en denk je na over hoe alles het beste te verdelen.
Maar hoe hoort een onderliggend DB ontwerp er uiteindelijk te zien?

Het leek me mooi als de tabellen qua velden gelijk liepen met de eigenschappen van klassen. Dus klasse A wordt dan tabel A en voor subklasse bb met 1 extra eigenschap komt er een tabel bij waarin die eigenschap komt. Via een join komen ze eventueel samen.
Ik maak nu even een test db in Access om de voorkant aan te koppelen en zo wat data te kunnen laten zien aan de gebruiker die eea moet goedkeuren.

Nu hoorde ik ook dat het eigenlijk niet uit hoort te maken hoe een DB is opgebouwd of hoe hij het wegschrijft. Al gooit hij al die tabellen bij elkaar als het maar werkt. Ok is wat voor te zeggen. :)

Dus mijn vraag is het gebruikelijk in de praktijk of in ieder geval netjes dat je je tabellen zoveel mogelijk gelijk laat lopen klasse eigenschappen. Of hoor je daar niet mee bezig te houden? Of is het wellicht in de praktijk gewoon technisch toch niet mogelijk?

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • Cloud
  • Registratie: November 2001
  • Laatst online: 18-02 09:57

Cloud

FP ProMod

Ex-moderatie mobster

De klassenstructuur van een programma is vaak anders opgebouwd dan de achterliggende DB. Als je dezelfde structuur in je DB gaat toepassen ga je vaak dingen te veel opslaan (is mijn ervaring). Nee gebruik voor je klassenstructuur echt een UML analyse om de structuur op te bouwen, en voor je DB een goede DB-analyse :)
Veel performance verschil zul je er waarschijnlijk niet uit halen met kleinere applicaties, maar het is wel zo netjes :) Je moet de DB gebruiken voor de dingen waar een DB goed in is: 'data opslaan, aanpassen en ophalen'. Dit verschilt met de gedachte achter OO-programmeren.

Just my 2 cents ;)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21:36
Dan kom je in object-oriented databases, maar ik ga er van uit dat je daar geen database software voor hebt. De meeste databases zijn de zogenaamde relationele databases. Het database model voor dat soort databases worden opgezet aan de hand van een normalisatie proces.

Als je je verdiept in normaliseren en relationele databases, dan zit je in de hoek waar je in wilt zitten. Ook over hoe je vanuit een OO taal, zoals Java, C++ of C# een niet OO-database benaderd en hoe je daar data uit haalt en dat verder opslaat in je OO model van je programma, is enorm veel te vinden zowel online als in literatuur.

Helaas kan ik niet in 1 simpele post alles gaan uitleggen hoe de steel aan de vork zit. Maar met bovenstaande termen, moet je toch wel een heel eind kunnen komen.

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 26-12-2025
OK bedankt jullie antwoorden zijn wel duidelijk. Niet doen dus met relationele databases (die hebben wij , oracle) en wel doen met object georienteerde databases :)

Mooi dan ga ik me weer met een het ontwerp van het programma bezig houden :)
Misschien wel eens leuk om me later in te verdiepen

[ Voor 10% gewijzigd door ErikRo op 17-03-2006 09:42 ]

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:08

Janoz

Moderator Devschuur®

!litemod

Het mappen van een object georienteerde structuur (java) op een relationeel georienteerde structuur (RDBMS/database) is redelijk lastig. Bij de eerste is het bijvoorbeeld niet zo'n probleem om dingen redundant op te slaan terwijl het bij de tweede niet zomaar mogelijk is om te erven (met behoud van constraints). Deze materie heeft ook een naam: OR Mapping (bij google beter doorzoekbaar met O/R mapping). Dat is in principe wel een goed startpunt om je in deze matirie te gaan verdiepen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
ErikRo schreef op vrijdag 17 maart 2006 @ 09:41:
OK bedankt jullie antwoorden zijn wel duidelijk. Niet doen dus met relationele databases (die hebben wij , oracle) en wel doen met object georienteerde databases :)
Dat wordt nergens gezegd.
Je data kan je perfect opslaan in een RDBMS.

Echter, als je een programma hebt, die die gegevens op een OO manier moet gaan 'voorstellen', dan heb je wel een mismatch. (De zogenaamde O/R mismatch). Dit is op te lossen door bv gebruik te maken van een O/R mapper.

Sla je gegevens op in een RDBMS volgens de normalisatie-regels.
Ontwerp je OO domein mbhv OO ontwerp - regels. Dan moet je een mapper hebben tussen die 2. Dat kan je zelf doen (veel werk), of je gebruikt een O/R mapper die een groot deel van het werk uit jouw handen neemt.
->SE&A

https://fgheysels.github.io/


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

whoami schreef op vrijdag 17 maart 2006 @ 10:05:
[...]
Ontwerp je OO domein mbhv OO ontwerp - regels. Dan moet je een mapper hebben tussen die 2. Dat kan je zelf doen (veel werk), of je gebruikt een O/R mapper die een groot deel van het werk uit jouw handen neemt.
->SE&A
O/R mapping + Java = Hibernate :)

www.hibernate.org

Ik zou zeggen, kijk daar eens naar. Er zijn verschillende artikelen en tutorials over te vinden en de tooling support is ook goed.

Fat Pizza's pizza, they are big and they are cheezy

Pagina: 1