- Home
- Categorie
- Coding e Sistemistica
- PHP
- Consiglio progettazione database
-
Consiglio progettazione database
Buonasera a tutti. Vorrei rivolgere una domanda a chi ne sa più di me.
Premetto che non sono un genio del database. Li ho sempre usati per siti o piccole cose, quindi non mi sono mai posta il problema delle prestazioni, o della manutenzione ecc.
Questa volta sto pensando ad un uso più massivo e questi problemi iniziano a porsi.
**
Il progetto del servizio**
Il sito php a cui sto pensando inserisce/preleva/manipola dati su un database mysql come funzione principale. In sè è molto semplice.
Vorrei proporre il sito a più clienti in forma di servizio internet da utilizzare su un mio server.
Per ogni cliente il form che riempie è lo stesso, quindi potrebbe teoricamente essere una sola tabella con le stesse colonne. Stessa struttura per tutti, stesso tipo di dati.
Ogni cliente potrebbe fare anche 20.000 righe all'anno e, se provo a ipotizzare un vita del servizio di 5 anni, fanno 100.000 records a cliente.
Quando poi il cliente farà un select, dovrà estrarre una tabella di 300 records, pescati fra tutti i dati accumulati negli anni (solo i suoi dati, di quel cliente che sta facendo il select).
Sempre per dare dei numeri, ipotizzo di poter avere 20 clienti o spero anche di più. Massa totale di qualche milione di righe "uguali".
Ho detto numeri a caso ma possibili, per darvi un'idea.Il progetto del database.
Il massimo della comodità per me (idealmente) sarebbe far stare tutti i clienti in una sola tabella, inserendo una colonna in più che dice chi è il proprietario della singola riga registrata.
Sarebbe comodo perchè se dovessi cambiare qualcosa della struttura della tabella (magari per migliorare il servizio o risolvere un problema), quando lo faccio una volta l'ho già fatto per tutti.
Mi sembra però molto pesante per il server e per quando si fa una query, e poi mi pare più igienico tenere delle divisioni, perchè potrebbe capitare di dover fare manutenzione anche cliente per cliente. O un backup o... varie ed eventuali.La domanda
Fare una tabella per ogni cliente può essere la giusta soluzione?
Se questa ipotesi è buona: qualcuno sa se esista una funzionalità che tiene sincronizzate le strutture di un gruppo di tabelle in uno stesso database? (quindi che se faccio una modifica strutturale a una tabella viene riportata anche sulle altre tabelle?)Grazie!