Treść tego artykułu powinna wiele Tobie wyjaśnić:
What problems will I get creating a database per customer?
I jeszcze raz na nowo przemyśleć założenia w Twoim projekcie, można na upartego IMHO, dać możliwość tworzenia tabeli (tabel) przez nowo zrejestrowanego użytkownika, ale tworzenie wielu tabel dla każdego użytkownika może być nieoptymalne, ponieważ może prowadzić do nieuporządkowanej i skomplikowanej bazy danych, a także trudniejszego zarządzania danymi.
Lepszym rozwiązaniem jest tworzenie jednej tabeli* i utrzymywanie relacji między użytkownikami i danymi. To pozwala na łatwe i efektywne zarządzanie danymi i umożliwia łatwe odnalezienie i uzyskanie danych, gdy są potrzebne.
W każdym przypadku należy dokładnie zastanowić się nad potrzebami projektu i nad tym, jakie dane będą gromadzone i w jaki sposób będą wykorzystywane, zanim zdecydujesz się na jedno lub drugie rozwiązanie.
* - jednej tabeli w sensie jak w podanym przez Ciebie przypadku, czyli tabele:
wspólne dla wszystkich użytkowników. Dane są wtedy pobierane na zasadzie relacji z tabelą użytkownicy, np.:
relacji id użytkownika z tabeli użytkownicy przypisanego do danego wiersza (wierszy) w tabeli np. szkoła.