Ruudjah schreef op zondag 20 juli 2008 @ 19:37:
Voor versiebeheer heb ik ook gezondigd. Maar de vraag is of dat zondigen is; ik ben er nog niet echt over uit. Wat er gebeurd is dat we data op in een XML bestand opslaan. Bij een wijziging van die data wordt er simpelweg een nieuw bestand opgeslagen met hierin alle data gekopieerd (behalve natuurlijk de wijzigingen). Omdat in de definitie van het XML bestand ook data staat die read-only is en dus nooit gewijzigd wordt, is bij elke save van de gebruiker die data redundant gepersisteerd. In principe is dat een overtreding van normaliseren: nooit data dubbel opslaan als dit niet nodig is. Maar het model is simpel en makkelijk om mee te ontwikkelen. Verder hebben we nu als voordeel dat als, om wat voor reden dan ook de oudere versies niet meer aanwezig zijn, de (redundante read-only) data nog wel beschikbaar is.
Ik vind het een pragmatische oplossing die voor ons werkt. Ook al overtreedt ik dan de normalisatieregels met voeten.
Jij noemt een XML bestand een databank ?

Hmm .... Een datamodel waar over nagedacht is, en dat genormaliseerd is, en later gedenormaliseerd waar nodig, zorgt voor een goede, solide basis. Een basis die je garanties kan bieden over de correctheid van de data, en die voor een goede basis performance kan zorgen.
Ik heb ook geen idee wat de hongaarse notatie precies inhoudt. Het gaat mij erom dat in ieder geval een notatie bekend is voor de studenten. Dat is er vaak nog niet eens. Of je nu de Hongaarse, Zwitserse, West-Australische of Noord-Japanse pakt interreseert me niet zoveel.
Als programmeur moet de term 'hongaarse notatie' toch wel een belletje doen rinkelen. Je moet toch min of meer weten wat hiermee bedoeld wordt; echter, dat betekent niet dat je 't moet gebruiken. Ik heb er zelf een hekel aan.
klikD-Raven schreef op woensdag 16 juli 2008 @ 16:35:
Wat betreft het prefixen van kolommen. Sorry BikkelZ ik heb nog steeds geen argumenten gehoord welke er mij toe bewegen om het wel te gaan doen.

. Alle technische voor en nadelen terzijde, uiteindelijk komt het aan op leesbaarheid en onderhoudbaarheid. Welke soms natuurlijk ook weer onderhevig is aan persoonlijke voorkeuren.
Tja, naming guidelines zijn subjectief. Iedereen heeft daar zijn eigen 'best practices', en iedereen vind dan weer iets anders lekkerder werken.
Mijn boodschap is: werk je voor een bedrijf, en ze hebben daar guidelines, dan volg je die.
Werk je aan hobby projectjes, etc... of werk je voor een bedrijf waar ze geen guidelines hebben, stel dan je eigen guidelines samen en volg die, en
wees consequent.
berendhaan schreef op donderdag 17 juli 2008 @ 20:38:
Soms ik normaliseren gewoon niet praktisch. Vooral als je kleine databasesjes hebt met maar 4 tabellen ofzo.
Meestal als ik een database opzet zo uit het niets is het meestal al genormaliseerd zonder dat ik er erg in heb.
Geef hier eens wat meer uitleg over ? Waarom zou het in dat geval niet nodig zijn om te normaliseren ? Waarom zou je in dergelijke gevallen wel gedupliceerde data toelaten bv ?
Trouwens, meestal ga je eerst normaliseren en ga nadien pas zien hoeveel tabellen je zult hebben

(Al is het natuurlijk wel zo dat je bij kleine projecten meestal wel al zo op het zicht kunt zien welke en hoeveel tabellen je zult hebben).
Johnny schreef op donderdag 17 juli 2008 @ 21:31:
De eerste overtreding van het normalisatie is een extra kolom met daarin een foreign key in een tabel die waarschijnlijk heel snel heel groot zal groeien. De foreign key is ook te achterhalen is via een andere tabel, maar dat bespaart dan weer een extra join in enkele tientallen verschillende queries.
Alsof een JOIN zo duur is .... Nuja, meer kan ik er natuurlijk niet over zeggen want ik zie de situatie niet voor me.
Iets anders wat in de praktijk goed blijkt te werken is het gebruik van meerdere tags (sleutelwoorden) in een enkel tekstveld. In een goed genormaliseerde database zouden die doormiddel van een koppeltabel worden gelinkt aan de content op waar ze van toepassing zijn. In de praktijk is het veel makkelijker om een FULLTEXT index de tags en op de tags, titel, en content te zetten om zo makkelijk te kunnen zoeken in de tags of de hele tabel.

En wat als je een tag wilt verwijderen ? Of wat als je een tag een andere naam wilt geven, en die tag wordt door meerdere teksten gebruikt ?
Kan je mij eens uitleggen wat het voordeel is van een dergelijke, ranzige shortcut tov het gewoon te doen zoals het zou moeten ?
Een andere overtreding is het misbruiken van een TINYINT om tot op 8 booleans op te slaan die niet hoeven te worden doorzocht. Het is niet heel erg overzichtelijk en levert ook weinig snelheidswinst op maar het is wel makkelijk omdat je simpelere queries hebt en makkelijk meerdere waardes kan toevoegen zonder steeds extra kolommen toe te voegen.
Waarom heb je die bools nodig als ze niet hoeven doorzocht te worden ?
Nu is het misschien makkelijk, maar wat na 4 jaar bv ? Zal jij nog weten wat die tinyint juist is, en wat de betekenis is van iedere bool op iedere positie ?
Of, wat als iemand anders die DB in z'n pollen geschoven krijgt om 'm verder te onderhouden, te ontwikkelen ?

Ik heb onlangs op m'n werk ook een legacy DB herbouwd die ook dergelijke truken gebruikte; wel, ik kan je zeggen. Er was niemand die nog precies wist hoe die legacy DB in elkaar zat.
Een andere plaats waar niet helemaal genormaliseerd is, is bij facturen en betalingsinformatie. Per factuur worden alle gegevens zoals die op dat moment zijn opgeslagen omdat die niet achteraf mogen worden aangepast. In een perfect genormaliseerde database zou je een extra tabel hebben met klantenadressen en wijzigingsdatums die je dan koppelt aan facturen, maar dat maakt het naar mijn inzien alleen maar onnodig complex.
Hier ben ik het met je eens.
Kijk, een 'stielman' moet zich, bij het uitoefenen van z'n beroep houden aan 'de regels van de kunst', en er wordt ook van hem verwacht dat hij die regels kent en toepast. Als hij bv een huis bouwt, en de bouwheer / klant heeft een probleem, en de oorzaak van dat probleem heeft te maken met het werk dat die stielman heeft uitgevoerd, wel, dan heeft die beste man een probleem als blijkt dat zijn werk niet 'volgens de regels van de kunst' is uitgevoerd.
Wel, als ik dergelijke dingen hier lees, dan ben ik een zeer zwaar voorstander om dergelijke 'regels' ook op te leggen aan software-ontwikkelaars.
/reply-combo.
[
Voor 70% gewijzigd door
whoami op 20-07-2008 20:05
]