The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
[ Voor 23% gewijzigd door supakeen op 10-08-2003 20:16 ]
echter als je zo moet werken is er iets mis met je datamodel
Alleen het feit al dat ik pos01 t/m pos20 zie, doet me dat vermoeden...Erkens schreef op 10 August 2003 @ 20:17:
implode, explode
echter als je zo moet werken is er iets mis met je datamodel
Oftewel: imho horen de posities in een aparte tabel.
Digitaal onderwijsmateriaal, leermateriaal voor hbo
edit: of je gooit je posities in een aparte tabel, zoals hierboven gezegd wordt. Is nog netter, dan hoef je week en jaar niet meerdere keren op te slaan.
[ Voor 25% gewijzigd door Dido op 10-08-2003 20:20 ]
Sommige databases hebben ook nog eens een record-type array, maar eigenlijk zou die niet nodig hoeven zijn (hoewel er best aardige voorbeelden te geven zijn waar ze wel handiger/beter zijn).
Ik denk dat ik het maar ff ga veranderen in lijst_ID, week, jaar, positie en album. In ieder geval bedankt allemaal!
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
Makkelijker, dan moet je even een koppel tabel aanleggen en een tabel met de nummers erinIorGie schreef op 10 August 2003 @ 20:27:
Ok, dat implode - explode maar het niet makkelijker of netter.
Ik denk dat ik het maar ff ga veranderen in lijst_ID, week, jaar, positie en album. In ieder geval bedankt allemaal!
misschien ook een tabelletje voor je albums, en dan het album_id gebruiken?IorGie schreef op 10 augustus 2003 @ 20:27:
Ok, dat implode - explode maar het niet makkelijker of netter.
Ik denk dat ik het maar ff ga veranderen in lijst_ID, week, jaar, positie en album. In ieder geval bedankt allemaal!
Mannen komen van Mars Tweakers, vrouwen van Venus Bokt
Overigens is het wel mogelijk in postgresql (daar kan je in 1 kolom een array drukken)
Egoist: A person of low taste, more interested in themselves than in me
Dat het kan wil nog niet zeggen dat het ook zo de bedoeling is. Je moet eens gaan zoeken naar normalisatie van gegevens. Er zijn verschillende normaalvormen, de 1e t/m de 6e geloof ik. Als je die netjes doorloopt zul je wel merken hoe je de gegevens op correcte wijze in je db plaatst. In ieders geval is dat geen lijst in één veld proppen, zelfs al kan het.DrFrankenstoner schreef op 11 augustus 2003 @ 12:59:
en ik altijd maar denken dat een array ongeveer een "geheugentabel" was?
Overigens is het wel mogelijk in postgresql (daar kan je in 1 kolom een array drukken)
Zei iemand serialize?zmn schreef op 10 August 2003 @ 20:16:
Je kan een array omzetten in een tekstfield, is een functie voor in PHP. Je kan hem daarna ook weer terughalen
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Zo slaat de full-text-indexing engine FTI/tsearch in postgresql de woorden/woordid's in een soort array's (zijn wel array's maar een beetje een speciale vorm om wat functies los te kunnen laten) op, waarschijnlijk omdat dat vele malen efficienter op te slaan is dan allemaal losse records. Postgresql biedt overigens ook indices aan om _in_ die array-waarden te kunnen zoeken (zelfs met boolean-operators), waardoor dat denk ik wat efficienter is dan tabellen doorzoeken en met losse records per woord-document-koppel te werken.
Andere redenen kunnen bijvoorbeeld zijn wanneer de database enkel de gegevens hoeft op te slaan, zonder daar ooit mee te werken (ala een blob), dan kan het ofwel handig zijn de boel gewoon in een blob op te slaan, ofwel om ze in een arrayveld op te slaan.
Dat het niet altijd klopt met de normaalvormen is jammer, die zijn niet echt altijd even goed voor je performance en/of storage... En soms is dat belangrijker dan aan een of andere normaalvorm te voldoen
dat normaliseren kregen wij ook op schooldjluc schreef op 11 August 2003 @ 13:02:
[...]
Dat het kan wil nog niet zeggen dat het ook zo de bedoeling is. Je moet eens gaan zoeken naar normalisatie van gegevens. Er zijn verschillende normaalvormen, de 1e t/m de 6e geloof ik. Als je die netjes doorloopt zul je wel merken hoe je de gegevens op correcte wijze in je db plaatst. In ieders geval is dat geen lijst in één veld proppen, zelfs al kan het.
begon bij NV-0 en tot NV-3, alles wat over was hoorde bij NV-4 geloof ik
misschien dat er wel meer zijn en dat die niet boeiend voor ons waren ofzo
maar ik vond dat hele normaliseren eigenlijk maar een raar gedoe
Ik zag zelf al wel als je een factuur van een auto-garage moest normaliseren, dat je dan de factuurtabel, autotabel en klatentabel hebt bij wijze van spreken.
Maar verder zou normaliseren idd de perfecte oplossing zijn voor dit soort problemen (array's even buiten beschouwing latend)
Mannen komen van Mars Tweakers, vrouwen van Venus Bokt
Een raar gedoe?SWINX schreef op 11 augustus 2003 @ 15:26:
[...]
dat normaliseren kregen wij ook op school
begon bij NV-0 en tot NV-3, alles wat over was hoorde bij NV-4 geloof ik
misschien dat er wel meer zijn en dat die niet boeiend voor ons waren ofzo
maar ik vond dat hele normaliseren eigenlijk maar een raar gedoe
Je moet eens met een OLTP (Transaction Processing) databasysteem werken dat niet genormaliseerd is. Dat is een hel: redundante data, moeilijk om de juiste gegevens op te halen, ...
Dat normaliseerproces is er gewoon om een soort 'stappen-plan' te hebben. Hoe meer ervaring je erin hebt, hoe minder je dat 'stappen-plan' nodig hebt.
Je hebt idd ook nog de 4de en 5de normaalvorm. (Boyce-Codd toestanden ofzo, ik zou nog eens moeten kijken wat die 4de en 5de NV nu precies weer inhouden).
https://fgheysels.github.io/
Verwijderd
heb ff mijn lectuur erbij gehaald en kom niet verder dan 1-3 NF en de BCNF
een relatie is in de Boyce Codd normaalvorm indien:
1. de relatie is in 1NF
2. iedere determinant een kandidaat sleutel is
nofi, maar weet je ook wat sarcasme is? Denk niet dat je mij veel uit hoeft te leggen over het nut van normaliseren of het algehele nut van een goed en correct database ontwerp in z'n algemeen.djluc schreef op 11 augustus 2003 @ 13:02:
[...]
Dat het kan wil nog niet zeggen dat het ook zo de bedoeling is. Je moet eens gaan zoeken naar normalisatie van gegevens. Er zijn verschillende normaalvormen, de 1e t/m de 6e geloof ik. Als je die netjes doorloopt zul je wel merken hoe je de gegevens op correcte wijze in je db plaatst. In ieders geval is dat geen lijst in één veld proppen, zelfs al kan het.
Het punt van ACM is wederom geldig, soms kies je voor minder charmante oplossingen, puur uit performance overwegingen. Een goed voorbeeld voor een array in een kolom kan ik echter niet zo 123 bedenken.
Egoist: A person of low taste, more interested in themselves than in me
Voor datawarehouses of OLAP systemen kan je je design idd gaan denormaliseren.DrFrankenstoner schreef op 11 August 2003 @ 16:05:
[...]
Het punt van ACM is wederom geldig, soms kies je voor minder charmante oplossingen, puur uit performance overwegingen. Een goed voorbeeld voor een array in een kolom kan ik echter niet zo 123 bedenken.
Deze systemen worden immers toch slechts gebruikt voor data-retrieval en analyse.
De enige data die er in komt, is nieuwe oude data (
Snelheid van gegevens opvragen is in deze systemen dus belangrijk, en dan kunnen joins enzo nog wel eens vertragend werken.
Echter, in dit geval (van de topicstarter) denk ik niet dat een gedenormaliseerde DB de goeie weg is.
https://fgheysels.github.io/
Een voorbeeld voor een array in een kolom is als je heel erg dynamische kolomdefinities hebt. Sessie-data is wat mij betreft een goed voorbeeld. Of objecten met variabele (user-defined) kenmerken. Overigens zou je voor dat laatste weer een prachtig genormaliseerd meta-model kunnen implementeren, maar dat kost soms gewoon te veel tijd.DrFrankenstoner schreef op 11 augustus 2003 @ 16:05:
[...]
Het punt van ACM is wederom geldig, soms kies je voor minder charmante oplossingen, puur uit performance overwegingen. Een goed voorbeeld voor een array in een kolom kan ik echter niet zo 123 bedenken.
Uiteraard is normaliseren altijd een *betere* oplossing, maar niet noodzakelijk de *snelste* oplossing qua ontwikkeltijd.
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Het normaliseren hiervan is een fluitje van een cent. Ik zou voor deze situatie dus echt nooit kiezen voor een array in één veld. Dat je dat bij sommige uitzonderlijke gevallen misschien een hoop ontwikkelingstijd kan schelen geloof ik meteen, maar dat lijkt mij hier totaal niet nodig.ik ben bezig met een database voor hitlijsten. Dus van elke week een rijtje van 20 cd's.
Verder is het voordeel als je het normaliseerd dat je de album defenities kunt hergebruiken. Dit is zeker als een album meerdere weken in de lijst staat handig, het scheelt namelijk veel tikken.
Als je toch een beetje weet hoe het werkt dan kun je een dergelijk systeem waarschijnlijk binnen dezelfde, misschien iets langere tijd in elkaar zetten. Als je het aantal minuten extra typen of kopiëren-en-plakken daar vanaf gaat trekken zal dit waarschijnlijk zelfs nog sneller gaan.Uiteraard is normaliseren altijd een *betere* oplossing, maar niet noodzakelijk de *snelste* oplossing qua ontwikkeltijd.
Even in simpele woorden: als rode lijn ga je in de 4de en 5de normaal vorm weer "dubbele" waarden introduceren.whoami schreef op 11 August 2003 @ 15:31:
[...]
Je hebt idd ook nog de 4de en 5de normaalvorm. (Boyce-Codd toestanden ofzo, ik zou nog eens moeten kijken wat die 4de en 5de NV nu precies weer inhouden).
Bijvoorbeeld bij een forum kan je het aantal reacties dat bij een bericht hoort elke keer gaan tellen hoeveel reacties er zijn, echter kan je dat ook weer opslaan in de tabel over dat topic. In principe is het een waarde die dubbel in de database komt te staan omdat je het ook anders eruit kan krijgen, maar vanwege de efficientie en snelheid is het slimmer om het getal dus wel erbij op te slaan.
Uiteraard komt er nog meer bij kijken, en ik kan jou alleen maar aanbevelen om er inderdaad een keer iets over te lezen!
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
hmm.. slim, maar wij leerden dus bij "rekenvelden" geen data op te slaan in de db, maar qua snelheid/pagina opbouw zal het wel schelen om dit wel te doendusty schreef op 11 August 2003 @ 23:50:
[...]
... vanwege de efficientie en snelheid is het slimmer om het getal dus wel erbij op te slaan.
[ Voor 5% gewijzigd door SWINX op 12-08-2003 00:54 ]
Mannen komen van Mars Tweakers, vrouwen van Venus Bokt
Denk maar niet dat bij idere index opbouw van react alle post per forum worden geteld. Wat denk je dat dit voor een load kost.SWINX schreef op 12 August 2003 @ 00:07:
[...]
hmm.. slim, maar wij leerden dus bij "rekenvelden" geen data op te slaan in de db, maar qua snelheid/pagina opbouw zal het wel schelen
buit is binnen sukkel