webForumDet fria alternativet

Ska bygga ett forum och har lite frågor

ASP

10 svar · 363 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Jag ska bygga ett forum med användare som loggar in. Nu har jag lite fårgor på hur jag ska designa min databas.

När man öppnar en tråd och ser alla inlägg ska den då hämta användaruppgifterna för varje person i en egen sql-fråga eller ska den informationen sparas i tråden det blir ju mer optimerat men ganska dålig design av databasen.

Totala antalet inlägg ska det räknas ihop varje gång eller ska det lagras i användarens uppgifter och sedan plusas på varje gång man gör ett inlägg?

Nått mer man behöver tänka på. Alla tips är välkomna då jag ha väldigt lite tid tills det ska levereras. Dessutom gör jag det pro bono

Medlem sedan juni 20003 076 inlägg
#2

tjena!
1. själv hade jag gjort en relationstabell mellan en användartabell och trådtabell. sedan skulle jag hämta allt i samma sqlsats.

2. skulle gjort en egen sqlsats och använda count() som räknar alla användarens inlägg.

3. inte spara samma information i flera tabeller utan göra relationer istället.

Medlem sedan jan. 20013 406 inlägg
#3

Blir det inte väldigt krävande att gå igenom alla poster och räkna ihop hur många poster en användare gjort?

Medlem sedan juni 20003 076 inlägg
#4

Jag har ingen exakt siffra på vad skillnaden blir men jag skulle tycka det var värt det! :)
Vilken typ av databas har du tänkt använda?

Felprocenten blir dessutom mycket större om du spar värdet i användarens tabell. Samt att du får koda mycket mer, hela tiden uppdatera den kolumnen så fort det händer nått med trådarna.

Medlem sedan jan. 20013 039 inlägg
#5

Det måste väl bli mer resurskrävande om antal inlägg skall visas för varje medlem vid varje inlägg i en tråd?
I början kanske det inte märks så mycket men med tiden blir det ju en jobbigare och jobbigare count som måste göras.

Uppdateringen av kolumnen behöver väl bara göras när ett inlägg görs eller tas bort så så mycket mer kodning skulle det väl inte innebära att spara infon i användartabellen?

Medlem sedan juni 20003 076 inlägg
#6

Bendro skrev:

Uppdateringen av kolumnen behöver väl bara göras när ett inlägg görs eller tas bort så så mycket mer kodning skulle det väl inte innebära att spara infon i användartabellen?

Jo, vars kanske det men man får lite fler fördelar med counten, du kan t.ex få ut antal startade trådar, antal svarade, antal borttagna osv.

Och en count på säg 50.000 poster tar nog inte mer än en halv sekund skulle jag tro (dock inte testat! :) )

Medlem sedan jan. 20013 406 inlägg
#7

Hur gör man det på ett smart sätt för att visa vilka trådar som en medlem läst och inte läst?

Medlem sedan mars 20023 561 inlägg
#8

Addeladde skrev:

Hur gör man det på ett smart sätt för att visa vilka trådar som en medlem läst och inte läst?

Ett sätt är ju att sätta en cookie innehållande tiden på senast lästa tråd, och sedan jämföra den mot tiden som senaste inlägget postades i en tråd.

Om du hänger med? :p ;)

Medlem sedan jan. 20013 406 inlägg
#9

Det ska inte fungera som på wF utan att klickar man på en tråd så markeras den som läst. Görs det ett nytt inlägg i den så ska den markeras som oläst igen.

Medlem sedan jan. 20013 039 inlägg
#10

doggelito skrev:

Och en count på säg 50.000 poster tar nog inte mer än en halv sekund skulle jag tro (dock inte testat! :) )

Nu är det fullt möjligt att jag tänker på fel sak.
Men jag utgår från att det skall fungera ungefär som här...att man vid varje inlägg skall se resp. persons info och därbland totalt antal inlägg för personen som gjort inlägg.
Om man tar ditt exempel att 50 000 poster tar en halv sekund att göra en count på innebär det att den här tråden i nuläget skulle ta ca 5 sekunder (10 inlägg x 0,5 sekunder) på sig bara för att få fram antal inlägg per person. Det innebär också att det blir segare och segare både ju längre trådarna blir och ju större databasen blir.

Men som sagt...vi tänker kanske på två olika saker.

Medlem sedan juni 20003 076 inlägg
#11

Addeladde skrev:

Det ska inte fungera som på wF utan att klickar man på en tråd så markeras den som läst. Görs det ett nytt inlägg i den så ska den markeras som oläst igen.

En variant är ju återigen en relationstabell (hehe, jag gillar sånna!) mellan tråden och alla användare, när användaren läser så skapas en relation och användaren har läst, görs ett nytt inlägg töms hela relationstabellen.

Bendro skrev:

Men som sagt...vi tänker kanske på två olika saker.

Vi tänker nog lika tror jag men man ska nog inte ta mitt exempel så allvarligt.
Det är ju knappast troligt att alla användare skulle gjort 50.000 inlägg var! Se bara på vår vapendragare @nders här på wF, han har gjort typ 18.000 under 4 år och som moderator.
Sen har det ju stor betydelse på vilken databas man kör, en sql-server med lagrade procedurer klarar det ju finfint medans en access skulle kräkas av så många poster.

280 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
135 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)