Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Preparazione DB per "Aggiungi amici"

    Salve,
    ho una domanda che non riesco a trovare altre risposte oltre a quella che sto per esporvi, magari voi avete altre soluzioni.

    Per realizzare un sistema di gestione amici stile facebook ("aggiungi amico" per intenderci) ho pensato che potrebbe essere banalmente un associazione 1:n una tabella dedicata nel db.

    Facendo un po di conti però sembra che saltino fuori numeri un po troppo elevati, infatti ponendo che il sito ha 100 iscritti e i 100 iscritti hanno 100 amici a testa, la tabella avrebbe già 10 000 records. E 100 è un numero piccolissimo rispetto alla realtà. Il tutto appesantirebbe troppo il db e rallenterebbe le query.

    C'è un alternativa che mi sfugge o è effettivamente così?

  2. #2
    io l'ho sempre gestito così...
    non so di che numeri stai parlando ma con milionate di record se gli indici vengono usati correttamente mysql non ha grossi problemi di lentezza...
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Ciao,
    non ti trovi con i numeri che dico o non hai capito cosa intendo?

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    con 100 utenti non importa creare 10000 record per gestire le amicizie. Basta fare associazione non ordinata. Risultato ti vengono fuori 4950 record invece di 9900

  5. #5
    cosa intendi per associazione non ordinata? sapresti farmi un esempio, perchè mi sa che mi sfugge.

    Grazie, questa potrebbe essere già una soluzione

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    la tabella amici sarà una cosa del genere

    id_utente1 | id_utente2


    supponiamo per semplicità 3 utenti (id=1,id=2,id=3) tutti amici di tutti

    come dici te sarebbe
    1,2
    1,3
    2,1
    2,3
    3,1
    3,2

    se vedi ci sono dei dati ridondanti (1,2) e (2,1)
    se 1 è amico di 2 è inutile ribadire che 2 è amico di 1. Ovvero l'ordinamento non ha importanza se scrivi 1,2 non ci sarà necessita di scrivere 2,1 e così viene fuori

    1,2
    1,3
    3,2

  7. #7
    Originariamente inviato da 1Dan
    Ciao,
    non ti trovi con i numeri che dico o non hai capito cosa intendo?
    Ho capito perfettamente quello che intendi, ti stavo semplicemente dicendo che con MySQL puoi anche avere un milione di record ma se scrivi bene le query e usi gli indici non ci saranno rallentamenti degni di nota...

    Quello che dice bstefano79 è corretto, tieni anche presente che dovrai anche gestire l'amicizia in fase di approvazione
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  8. #8
    Grazie bstefano79, non ci avevo pensato al momento, anche se me ne sarei accorto che c'erano dati duplicati.

    grazie anche a te king size slim, mi metterò a guardare meglio gli indici

  9. #9
    Il problema sarà nella JOIN per la quale dovrai recuperare i dati degli utenti amici, credo.
    Io è una cosa che non ho ancora risolto.
    Perchè uso Maxthon? | Mi piace questa chat

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    select * datiamici where id IN (select id2 as id from amici where id1=id union select id1 as id from amici where id2=id )

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.