[Algemeen] Datamodellen

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
80% van de datamodellen die ik hier op de GOT langs zie komen zijn fundamenteel fout. Om hier eens wat constructiefs aan bij te dragen in plaats van het model alleen maar af te zeiken wil ik een tutorial datamodel maken.

Daarbij heb ik jullie hulp nodig. Wat is nou precies allemaal fout?
Ik wil bespreken:
- Normaliseren
- Semantische objecten
- Indexes

Wat mis ik nog, en, Wat valt er precies te zeggen over deze onderwerpen?

Localhost, sweet localhost


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Wat is nou precies allemaal fout?
Kun je niet beter een tutorial maken over hoe het wél moet ? :+

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Niet alleen wat er goed is (dat weet ik wel) maar de veelgemaakte fouten...

Localhost, sweet localhost


Verwijderd

ik zou zeggen begin alvast te schrijven aan die onderwerpen, en onderhand merk je wel "o ja, dat moet er ook bij" al is het laar omdat je op GoT zo'n fout ziet...

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

wat nog meer?
- foreign keys
- (nut van) stored procedures
(als je db dat tenminste ondersteunt)

Maar uhmm begin maar met normalizeren, als ik je tut begrijp, begrijpt iedereen 'm :+

En wat je erover kan zeggen? Pfew, als ik dat zou weten zou ik die tut ook wel kunnen schrijven :) Misschien kun je de logica uitleggen? Stappenplan, misschien uitleg _waarom_ het van belang is, dat soort dingen denk ik. Kweet ff niet meer, misschien morgen als ik weer wat verder ben in m'n databaseboekje van meneer Date... (tnx to Dusty :))

Exact expert nodig?


Verwijderd

wat er bij normalizen uitgelegd moet worden: ze leren inzien welke gegevens in een tabel samen horen, welke niet. Als ze dat goed snappen is het al niet slecht.
Plus de juiste datatypes kiezen, niet te klein, niet te groot bij integers bvb. TINYINT enzo bestaat hoor. Als je daar dan UNSIGNED aan toe voegt...

Zulke zaken zou ik zeggen...

Verwijderd

Er zijn op universiteiten en HBO opleidingen hele vakken over databases en informatie analyse, en er zijn vele boeken over geschreven. Ik denk dat het een beetje overmoedig is om daar even een tutorial over te schrijven.

Niet dat ik vind dat meer mensen er meer over zouden moeten weten, maar ik denk dat een 'teaser' met verwijzing naar goeie bronnen een beter idee is, met name met een uitleg over het waarom het nodig is.

Ik heb zelf een pragmatisch stuk geschreven over indexering van databases, en dat staat in de FAQ. Misschien heb je daar wat aan. Verder staan er al wat stukjes over normaliseren en inleidingen in databases links en rechts op GoT/14. Die samennemen tot een nuttig stuk is een mooie uitdaging, lijkt me.

Succes :)

Verwijderd

Wij zijn hier op school uitgebreid mee bezig geweest. Vooral met EERD's.. we hadden een syllabus die uitgebreid op datamodellen inging. Voor de nieuwschierigen of geintreseerden heb ik hem even van het intranet op mijn eigen webspace gezet...

Het is net geen tutorial maar wel goede uitleg over datamodellen op HBO niveau
hier is hij te downloaden...

Verwijderd

Normalizeren is handig voor een datamodel. Echter in de praktijk blijkt vaak dat je query's veel sneller kunt krijgen als je je database niet volledig normalizeert. Uit performance overwegingen gebruik ik dus regelmatig redundante data.

Ik vind het nogal wat omdat dus 'fundamenteel fout' te noemen. Dit is typisch zo'n geval waar de theorie niet 100% aansluit bij de praktijk. Op het werk gebruik we altijd twee datamodellen, een voor het begrip en voor de implementatie.

Ook het ontwerpen van indexes is lastig in je datamodel. De keuze van welke indexes er zijn is namelijk afhankelijk van de query's die je allemaal wilt gaan doen. Als je die allemaal al tijdens je ontwerpfase kunt verzinnen heb je goed werk geleverd, maar neem je naar mijn mening de lol bij de programmeurs weg. Ook is het zo dat de nieuwere SQL-server (SQL7, SQL2000) automatisch indexen maken en de noodzaak voor het ontwerpen van indexen minder is.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 14:31 schreef Thargol het volgende:
Normalizeren is handig voor een datamodel. Echter in de praktijk blijkt vaak dat je query's veel sneller kunt krijgen als je je database niet volledig normalizeert. Uit performance overwegingen gebruik ik dus regelmatig redundante data.
[...]
Je KAN verder normaliseren dan de 3e vorm.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Op vrijdag 28 december 2001 14:31 schreef Thargol het volgende:
Normalizeren is handig voor een datamodel. Echter in de praktijk blijkt vaak dat je query's veel sneller kunt krijgen als je je database niet volledig normalizeert. Uit performance overwegingen gebruik ik dus regelmatig redundante data.

Ik vind het nogal wat omdat dus 'fundamenteel fout' te noemen. Dit is typisch zo'n geval waar de theorie niet 100% aansluit bij de praktijk. Op het werk gebruik we altijd twee datamodellen, een voor het begrip en voor de implementatie.
ik doel niet op tabellen die nog een kolommetje 'count' handhaven, maar meer op onjuist splitste tabellen, of 1op1 relaties...

Dit is fout: (tenonrechte gesplitst)
RodeProducten(id,formaat,vorm)
BlauweProducten(id,formaat,vorm)
moet zijn: Producten(id,formaat,vorm,kleur)

Dit is fout: (1op1)
parenttabel(id,kindid, veld1)
kindtabel(id,parentid, veld2)
moet zijn: Tabel(id,veld1,veld2)
Ook het ontwerpen van indexes is lastig in je datamodel. De keuze van welke indexes er zijn is namelijk afhankelijk van de query's die je allemaal wilt gaan doen. Als je die allemaal al tijdens je ontwerpfase kunt verzinnen heb je goed werk geleverd, maar neem je naar mijn mening de lol bij de programmeurs weg. Ook is het zo dat de nieuwere SQL-server (SQL7, SQL2000) automatisch indexen maken en de noodzaak voor het ontwerpen van indexen minder is.
Ik wil me voornamelijk richten op het eenvoudiger MySql, omdat daar de fouten in gemaakt worden. Mensen die werken met SQL-server en Oracle hebben doorgaans een opleiding gehad waarin je voldoende leert.

Dingen die dus niet heel er uitgebreid aan bod zullen komen:
- foreign key constraints. (het concept foreign key natuurlijk wel)
- Stored procedures
- Triggers
- Procedurele SQL
- multidimensionale resultaten
- niet-lineare resultaten


Dingen die misschien ook behandeld kunnen worden zijn :
* eenvoudige join-statements.
Veel newbies splitsen hun tabellen niet omdat een join zo moeilijk lijkt.
* Toelichting datatypes
Het verschil tussen char en varchar is er toch echt wel, terwijl veel mensen het toch niet weten/begrijpen.
* Voordelen van DBMS boven een file-based datastorage.
Lijkt me duidelijk...


Ik denk dat ik na nieuw jaar (D.V.) ga beginnen...

Localhost, sweet localhost


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:38

TeeDee

CQB 241

weinig constructiefs van mijn kant, maar een goede tut. zou ik persoonlijk goed vinden.

En dan misschien heel stom: denk aan de n00bs onder ons (ik dus :+ )

Ik vrot nu gewoon een db in elkaar puur op geluk. Normaliseren enzo doe ik niet aan. Dat zou uiteraard wel moeten.

Dus * TeeDee is voor een goede tutorial! :)

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Op vrijdag 28 december 2001 15:26 schreef TeeDee het volgende:
Dus * TeeDee is voor een goede tutorial! :)
Had je die zip al bekeken die ik eerder gepost heb?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
urlletje zou handig zijn... waar doel je op?

Localhost, sweet localhost


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:38

TeeDee

CQB 241

Op vrijdag 28 december 2001 15:49 schreef dj_delta het volgende:

[..]

Had je die zip al bekeken die ik eerder gepost heb?
nope... kzal ffies gluren.

/edit:

check, kheb gedownload... ffies gluren van ut weekend...

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Normaliseren is niet nodig als je een goede informatie analyse methode gebruikt. Bijv. NIAM ;)

Ik denk dat voor hier het belangrijkste is, om het verschil uit te leggen tussen het Logische datamodel ("genormaliseerd" enzo) en het Technische datamodel (geoptimaliseerd door denormalisatie, het introduceren van betekenisloze sleutels (maw numerieke id's) enzovoort).

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Normaliseren is een informatie analyse methode.
Je hebt gelijk dat er meerdere methoden zijn. Op zich denk ik dat het weinig zin heeft om normaliseren te gaan bespreken. We proberen de n00b hier wat aan te leren, en die zou je met de droge (en IMO achterhaalde) normalisatiemethode nogal afschrikken.
Mijn doel is de eeuwige flame-topics over slechte datamodellen een beetje af te koelen.

[edit]
ik heb even die niam door zitten lezen.. Ik kan me niet voorstellen dat dat lekker werkt. Doorgaans schrijf ik gewoon in een keer een het juiste datamodel (3nv) op. Vind ik lekkerder werken.

Localhost, sweet localhost

Pagina: 1