Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

Videoannonse
Annonse

Kjapt spørsmål:

 

Hvis man skal lage en stor side med brukersystem der brukerene har eget bildealbum, private messaging, friends osv.. Hvordan setter man opp dette i en database? Lager man en database for hver bruker med forskjellige tables for de forskjellige tingene, eller lager man et tabel for hver bruker og kaster alt inn slik at det blir laangt, eller bruker man andre løsninger?

Endret av Ozwald
Lenke til kommentar
Kjapt spørsmål:

 

Hvis man skal lage en stor side med brukersystem der brukerene har eget bildealbum, private messaging, friends osv.. Hvordan setter man opp dette i en database? Lager man en database for hver bruker med forskjellige tables for de forskjellige tingene, eller lager man et tabel for hver bruker og kaster alt inn slik at det blir laangt, eller bruker man andre løsninger?

5899787[/snapback]

 

Du lager en database og en tabell for hver ting du skal lagre, dvs en for brukere, en for messages, en for friends og eventuelt en for bilder (men billedlagring i databaser med mindre du skal browse de eller sammeligne skal visstnok være frarådet (jfr tidligere tråder om emnet her inne))

Lenke til kommentar

Du er nokk langt ute og kjører. Du setter opp en tabell med brukere, en tabell til galleriet, en tabell til ditt, og en til datt. Enkelt brukersystem med galleri:

brukere:
+---+----------+----------+
|	id	|	brukernavn	|	passord	|
+---+----------+----------|
|	1	|	dfdeevf	|	dfsre	|
+---+----------+----------+
|	2	|	esrerde	|	dfsre	|
+---+----------+----------+
|	3	|	sdfgfdff	|	dfsre	|
+---+----------+----------+
bilder:
+---+--------------+----------+
|	id	|	bruker	|	bilde	|
+---+--------------+----------|
| 1	|	1	|	fil.jpg	|
+---+--------------+----------+
|	2	|	3	|	fil.jpg	|
+---+--------------+----------+
|	3	|	1	|	fil.jpg	|
+---+--------------+----------+
|	4	|	2	|	fil.jpg	|
+---+--------------+----------+

Ser du systemet?

 

edit: tabellformatering.

Endret av rødøye
Lenke til kommentar
Aha, ja jeg ser systemet, men da blir jo tabellene helt enorme hvis du har mange brukere. Vil ikke det ta forferdelig lang tid å loade siden da?

5899882[/snapback]

Nei, ikke hvis du setter opp alt "korrekt" ("" fordi det ikke finnes noen fasit) og hensiktsmessig. Klart, det blir jo lengre load dessto flere brukere du har, men det er da også da indeksering er kjekt ;)

Lenke til kommentar

Hele poenget med en database er at mye informasjon skal samles og være lett tilgjengelig. MySQL har ingen problemer med tabeller på flere millioner rader. Hvis jeg vil ha bilder postet av brukeren rødøye, bruker jeg spørringen

SELECT brukere.bukernavn AS brukernavn, bilder.bilde AS bilde FROM brukere AS br, bilder  AS bi WHERE bi.id = br.id;

du skal ha en enormt stor database uten indexering for at dette skal ta mye mer en noen få millisekund. Det som tar tid, er overføring av data, noe du ikke kan gjøre så mye med uansett

Endret av rødøye
Lenke til kommentar
Hele poenget med en database er at mye informasjon skal samles og være lett tilgjengelig. MySQL har ingen problemer med tabeller på flere millioner rader. Hvis jeg vil ha bilder postet av brukeren rødøye, bruker jeg spørringen
SELECT brukere.bukernavn AS brukernavn, bilder.bilde AS bilde FROM brukere AS br, bilder  AS bi WHERE bi.id = br.id;

du skal ha en enormt stor database uten indexering for at dette skal ta mye mer en noen få millisekund. Det som tar tid, er overføring av data, noe du ikke kan gjøre så mye med uansett

5899916[/snapback]

 

Okey, tusen takk! :)

Lenke til kommentar

Jeg vil nok påstå at rødøye foreslår en ganske optimal løsning. Dersom hver bruker kun får ha et bilde er det nok lurt å gjøre feltet brukerid i bildetabellen unikt - ellers burde det i alle fall indekseres.

 

Utover dette så skal det nok veldig mange tusen bilder og tusen brukere til før dette systemet blir tregt. Glem ikke at MySQL faktisk missliker å åpne flere tabeller eller flere databaser. Men dersom du skulle nå et enormt antall brukere og tabeller så må du selvfølgelig dele det opp i flere tabeller. Men da deler du opp slik at brukere med navn a-e, f-i osv. blir samlet i samme tabell.

 

MySQL er en database, ment for å lagre store mengder data i, og nettopp fordi den faktisk lagrer dataen på en "smart" måte finner den lett frem. Er du noen gang usikker på om MySQL tenker korrekt kan du bare bruke en EXPLAIN på SQL kjøringen din.

 

Edit:

Rødøye, du vil fort merke at en tabell med flere millioner rader faktsik er ganske tungt. Da er det nødvendig med ikke bare indekseringer, men også egene tabeller for enklere oppslag i hovedtabellen. Jeg vil også påstå at det er en sterk forenkling å si at MySQL har ingen problemer med mange millioner rader. Ved komplekse(store) tabeller eller spørringer (joins) så kan dette bli mye for SQL serveren.

Endret av ????????
Lenke til kommentar
Jeg har tatt huin205 fra UiB, webprogrammering og databaser.

[klipp&klapp]

I huin205 var php 50% av kurset, resten var xml og xslt.

5894879[/snapback]

 

Hadde du vært borti noe av dette tidligere? hvis ja, lærte du noe nytt? ;)

5894905[/snapback]

 

Aldri tatt i php før, så ja- jeg lærte mye nytt.

Jeg har sett at det er noen som tenker å droppe kurs fordi de kan ting og tang fra før. Vel - i en jobbsøkersituasjon vil jeg, som har papirer på at jeg har tatt kurs kanskje stille sterkere enn en som ikke har det.

 

Som en her sa - det er ikke hva du kan som er viktig, det er hva du har papirer på at du kan.

Lenke til kommentar

Hehe, kom over denne lille godbiten her på dailywtf. Enkelte "programmerere" altså... :no:

 

The introduction of the XMLHttpRequest component (*) opened the doorway for a new breed of "fancy schmancy" web applications like Flickr, GMail, etc. This, in turn, spawned an entire sub-industry and a new series of buzzwords seemingly based on the names of household cleaning chemicals. It even incremented the current version of the Internet to 2.0.

 

That said, it should come as no surprise that this Borax-technology has also empowered "certain programmers" to create new perversions in information technology never imagined before. Gustavo Carvalho discovered what happens when XMLHttpRequest and the Eval() function in PHP are combined. I'll leave it to your immagination as to what the server-side looks like ...

 

function saveform()
{
 var firstName = escapeSql(mainForm.elements.txtFirstName.value);
 var lastName = escapeSql(mainForm.elements.txtLastName.value);
 /* ... */
 var offerCode = escapeSql(mainForm.elements.txtOfferCode.value);

 var code =
 '  $cn = mssql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD)           ' +
 '          or die("ERROR: Cannot Connect to $DB_SERVER");                ' +
 '  $db = mssql_select_db($DB_NAME, $cn);                                 ' +
 '                                                                        ' +
 '  if (mssql_query("SELECT 1 FROM APPS WHERE SSN=\''+ssn+'\'", $cn)) ' +
 '  { $ins = false; }                                                     ' +
 '  else                                                                  ' +
 '  { $ins = true; }                                                      ' +
 '                                                                        ' +
 '  if ($ins) {                                                           ' +
 '    $sql = "INSERT INTO APPS (FIRSTNM, LASTNM, ..., OFFERCD) VALUES ("; ' +
 '    $sql+= "\''+firstName+'\',";                                        ' +
 '    $sql+= "\''+lastName+'\',";                                         ' +
 '    $sql+= "\''+offerCode+'\')";                                        ' +
 '                                                                        ' +
 '  /* ... */                                                             ' +
 '                                                                        ' +
 '  mssql_query($sql, $cn);                                               ' +
 '  mssql_close($cn);                                                     ';

 execPhp(code);
}

:ohmy:

Endret av Paull
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...