Ciao ragazzi,

ho in progetto di realizzare un sito un po’ ambizioso e vorrei, prima di buttarmi sul codice, alcuni consigli sull’organizzazione del database e tabelle, è un po’ difficile da spiegare ma cercherò con un esempio di essere il più chiaro possibile.
Il problema fondamentale è gestire i record e quindi le relative tabelle.
Vengo al dunque, faccio un esempio pratico che non corrisponde alla realtà del progetto, faccio riferimento a “negozi e prodotti” che non c’entra nulla:

Partiamo con il dire che ho una tabella base di 2.000 prodotti che io inserisco, do la possibilità di registrarsi agli utenti i quali creano il loro account, ipotizziamo che in Italia avrò 1000 iscrizioni ( il servizio poi sarà multilingue pero ora mi baso solo per l’italia ) ogni utente ha la possibilità di creare a sua volta infiniti negozi, ipotizziamo una stima di 50 negozi per utente ( potrebbero essere molti di più voglio tenermi basso), già siamo 1000 x 50 = 50.000 record e fin qui non dovrebbe esserci problemi.
Ora pero ipotizzate che ogni negozio creato può contenere i 2000 prodotti base che avevo di partenza, quindi un utente ha 50 negozi x 2000 = 100.000 se faccio il conto delle iscrizioni sarebbero 100.000 x 1.000 = 100.000.000.
Ho fatto il caso per 1000 iscrizioni se fossero di più o se il servizio viene esteso per altre nazioni penso sia ingestibile solo con poche tabelle.
Certo è che mi porto dietro solo l’ID del prodotto pero la tabella ultima sarebbe penso un domani ingestibile in quanto avevo pensato di creare e strutturate il database in questo modo:

Tabella_Prodotti ( elenco di tutti i prodotti da me inseriti )
Tabella_Utenti ( gli utenti iscritti )
Tabella_Negozi ( tutti i negozi legati all’ID dell’utente )
Tabella_Prodotti_Negozi ( l’elenco dei prodotti legati all’ID del negozio )

Nella “Tabella_Prodotti_Negozi” ovviamente oltre all’ID si porta dietro l’ID del negozio e l’ID del prodotto e qui dentro ci saranno moltissimi record, penso che dopo un po’ diventerebbe ingestibile.

Stavo pensando di lavorare anche se immagino qualcuno mi insulti con i file TXT, faccio registrare un utente il quale con il suo ID creo una cartella “unica”, poi per ogni negozio che crea gli genero un file TXT con il nome del l’ID del negozio dove all’interno ci sarà l’elenco dei prodotti solo di quel negozio.

Cosi facendo quando un utente si logga subito so che devo andare a leggere nella cartella dell’utente tutti i file senza far impazzire il database!!!

Non penso sia la soluzione miglieore quella di creare una tabella per ogni utente, forse mi sbaglio ma andrebbe molto ad appesantire il database.

Che consiglio mi date??? Non vorrei lavorare tanto e poi magari ritrovarmi fra un po’ con un sistema ingestibile, se faccio la stima sopra citata per 6 nazioni con quel sistema di tabelle mi ritroverò a gestire 600.000.000 di record nella "Tabella_Prodotti_Negozi"!!!

Secondo voi??? Non insultatemi per la lunghezza del post … spero di essere stato chiaro.