Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    Strutturare al meglio un database

    Ciao forumisti!

    Volevo chiedere qualche consiglio su come gestire database che devono contenere molti record e molti utenti.

    Ad esempio supponiamo che si tratti del database di questo forum.

    (dò cifre a cavolo)

    Il forum ha 5000 utenti ed ogni utenti ha postato in media 1000 annunci secondo voi come deve essere strutturato il database in modo che sia il più veloce possibile?

    Cioè e più facile trovare in un database tutti gli annunci dell'utente "X" oppure conviene creare un database associato univocamente all'utente "X" e quindi leggerne il contenuto?

    Meglio 5000 datase ognuno contenente 1000 record oppure un unico database contenente 5.000.000 di record?

    Spero di essere stato chiaro.

    Ciao

  2. #2
    i DBMS hanno una prpria logica interna di organizzaiozne dei dati per cercare di essere il più efficienti possibili.. a te non deve assolutamente interessare il numero di dati... non è da quello che dipende la struttura del database.

    Tu devi solo preoccuparti di organizzare bene le tabelle (progettarne bene la struttura, scegliere se integrare certi dati in una tabella o piuttosto gestire tabelle collegate.. etc etc) e definire come indice i campi che userai più spesso come chiavi di una ricerca... per il resto se la vede il DBMS


  3. #3
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie,

    ma non c'è un modus operandi che sicuramente ottimizza il database?

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    uppettino

  5. #5
    Utente bannato
    Registrato dal
    May 2001
    Messaggi
    113
    codice:
     <?
    $host = "host_database";
    $user = "username";
    $pass = "password";
    $db_name = "nome_del_database";
    
    
    $db = mysql_connect($host, $user, $pass);
    mysql_select_db($db_name, $db);
    
    
       echo "Ottimizzazione DataBase in corso...";
       $SQL = "OPTIMIZE TABLE ";
       $result = mysql_list_tables($DATABASE);
       $i = 0;
       while ($i < mysql_num_rows($result)) {
          $name_table = mysql_table_name($result, $i);
          echo "Ottimizzazione tabella: $name_table .....
    ";
          $SQL .=  $name_table;
          $SQL .= ",";
          $i++;
       }
       $SQL = substr($SQL,0,strlen($SQL)-1); 
       $result_set = mysql_query($SQL);
       mysql_free_result($result_set);
    
    ?>
    apri un .txt nuovo e salvalo così "ottitmizzare.php" ( compresi gli apici )

  6. #6
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie, ma tu come lo strutturesti un database con le caratteristiche citate sopra?

  7. #7
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Io farei una tabella che contiene i profili degli utenti ed un' altra tabella che contiene i messaggi degli utenti, legando tra loro le tabelle attraverso la relazione utenti.id_utente=messaggi.id_autore non so se è la soluzione migliore, ma ho sempre fatto così.

  8. #8
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    infatti è la procedura migliore, ma nessuno sa se conviene dividere un database (che ne so: per alfabeto, per tot di record, per regione...)

  9. #9
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    In che senso "dividere" il database?

  10. #10
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    ad esempio: se il database contiene più di 1000 record creane un altro ed inseriscici dati fino a 1000 record.

    quindi reitera il processo...

    Non so, magari una cosa del genere...

    Dovrebbe essere più veloce perchè se sai che il tuo annuncio è il numero 550 sicuramente si andrà a prenderlo nel database che contiene i record da 1 a 1000..


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.