Vinnaren i pepparkakshustävlingen!
2006-04-06, 23:36
  #1
Medlem
Quienas avatar
Tjo!
Har tänkt att börja på ett projekt, vilket kommer kräva en (mer eller mindre) SQL databas. Tanken är att jag ska skapa en webbapplikation(ogillar ordet, menmen...) som kommer fungera ungefär som en webblogg där användarna kan skapa inlägg och redigera dem på alla möjliga sätt, samtidigt kan de ju registrera sig på sidan och använda sina inloggningar.

Mitt problem blir då... hur ska jag strukturera databasen? Efter ett tag lär databasen bli relativt stor, och alla nanosekunder som jag kan vinna på en bra struktur i databasen är dyrbara

Min tanke var:
En tabell för alla inlägg, med rader för datum, tid osv som en vanlig forumpost innehåller.
En tabell för alla användare, användarnamn osv...

Men jag är inte fullt så säker på att det här är det bästa sättet? Ska jag kanske till och med skippa SQL databasen (MySQL, då) och köra med filer istället? Något förslag på databas-struktur?

Jag kan tillräckligt mycket om php och databaser för att skapa det här; men jag vill gärna vara så effektiv som möjligt också.

Och om du nu tänker:
Finns ju massor av sånt här på nätet. Tanka ner en?
Grejen är... det jag har tänkt att göra har jag inte sett någon annan stans på nätet. Det finns förmodligen, men inte på det sättet jag har tänkt att göra det på, vad jag vet...

ps: har redan en webbapplikation som fungerar på det här sättet. men jag ska finputsa idéen nu, om man säger så
Citera
2006-04-07, 00:01
  #2
Medlem
oGGos avatar
Du är inne på helt rätt spår tycker jag.
Jag har gjort flertalet liknande projekt och använder då i princip följande metod:

Kod:
Tabell1 (users)
uid = räknare
uname = användarnamnet
password = md5($password)/sha256($password) eller annat likvärdigt
ev. fler kolumner om så önskas.

Tabell2 (posts)
pid = räknare för postid
uid = idt som sammankopplas med 'uid' i tabell1 med en inner join sats. Alltså istället för att lagra användarnamnet här så lagrar du uid från Tabell1
datum, etc. etc.

är ju som sagt en tämligen simpel databasstruktur så din idé var ju rätt från början.
Citera
2006-04-07, 00:11
  #3
Medlem
Quienas avatar
Citat:
Ursprungligen postat av oGGo
Du är inne på helt rätt spår tycker jag.
Jag har gjort flertalet liknande projekt och använder då i princip följande metod:

Kod:
Tabell1 (users)
uid = räknare
uname = användarnamnet
password = md5($password)/sha256($password) eller annat likvärdigt
ev. fler kolumner om så önskas.

Tabell2 (posts)
pid = räknare för postid
uid = idt som sammankopplas med 'uid' i tabell1 med en inner join sats. Alltså istället för att lagra användarnamnet här så lagrar du uid från Tabell1
datum, etc. etc.

är ju som sagt en tämligen simpel databasstruktur så din idé var ju rätt från början.

Låter bra. Frågan är sen... när vinner man på att använda filer och när SQL databaser? I vilka sammanhang är det ena att föredra?

jag är medveten om att allting är filer. med *filer* menar jag då textfiler som skapas lokalt på hårddisken och inte en SQL databas

edit: skulle ändrat titeln på tråden till "Struktur för databas?" men det verkar som om att det inte går... eller så är jag bara trött ^o)
Citera
2006-04-07, 11:13
  #4
Medlem
cenobites avatar
Som oGGo tidigare har sagt så har du en bra lösning med de två tabellerna.

Ett sätt att minska sökningarna i databasen som fungerar bra om alla användare som kommer till siten ser "samma" sida, är att spara en fil med denna sida på servern. Om du gör detta så kan du kontrollera om denna fil finns, och om den finns så visar du den, annars så skapar du filen och visar den. Dock måste du komma ihåg att radera filen så fort databasen ändras (och ändringarna påverkar sidan).
Citera
2006-04-07, 12:11
  #5
Medlem
iglos avatar
Det finns bara ett sätt att göra det på, det är att använda sig utav ER modelering. Det är då du får dina databas och tabeller så normaliserade så långt som möjligt. Så försök att hitta lite info om ER-modellering, läs hur man gör och försök att göra det på det sättet.
Citera
2006-04-07, 13:17
  #6
Medlem
oGGos avatar
Citat:
Ursprungligen postat av Quiena
Låter bra. Frågan är sen... när vinner man på att använda filer och när SQL databaser? I vilka sammanhang är det ena att föredra?

jag är medveten om att allting är filer. med *filer* menar jag då textfiler som skapas lokalt på hårddisken och inte en SQL databas

edit: skulle ändrat titeln på tråden till "Struktur för databas?" men det verkar som om att det inte går... eller så är jag bara trött ^o)
Jag finner det inte alls nödvändigt att använda filer såvida inte man har en enorm trafikmängd till sin sida varje dag. På stora projekt med tiotuisentals besökare varje dag har jag använt databaskopplade sidor och det flyter på riktigt bra.

Börjar man däremot komma upp i trafikmängder såsom aftonbladet så kanske det är bättre att använda statiska sidor som regenereras säg var X'e minut eller liknande för att minska trafiken på din db. Jag tycker dock du skall använda dig av en db av den struktur jag förklarade.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback