Ist es für eine Anwendung sinnvoll, Datenbanktabellen dynamisch als Mittel zur Partitionierung zu erstellen?
Nehmen wir an, ich habe eine große Tabelle "widgets" mit einer Spalte "userID", die den Eigentümer jeder Zeile identifiziert. Wenn diese Tabelle dazu neigt, sehr groß zu werden, wäre es dann sinnvoll, dass die Anwendung stattdessen für jeden neuen Benutzer eine neue Tabelle mit dem Namen "widgets_{username}" erstellt? Gehen Sie davon aus, dass die Anwendung immer nur die Widgets eines einzelnen Benutzers abfragen muss (d. h. es besteht keine Notwendigkeit, diese Benutzer-Widget-Tabellen miteinander zu verbinden).
Auf diese Weise würde die große Tabelle in leichter zu verwaltende Teile aufgeteilt, aber das scheint keine elegante Lösung zu sein. Meiner Meinung nach sollte das Datenbankschema definiert werden, wenn die Anwendung geschrieben wird, und alle Daten zur Laufzeit werden als Zeilen gespeichert, nicht als zusätzliche Tabellen.
Eine allgemeinere Frage: Ist die Änderung des Datenbankschemas zur Laufzeit überhaupt in Ordnung?
Edit : Diese Frage ist größtenteils hypothetisch; ich hatte ein ziemlich gutes Gefühl, dass das Erstellen von Tabellen zur Laufzeit keinen Sinn macht. Davon abgesehen haben wir in unserer Anwendung eine Tabelle mit Millionen von Zeilen. SELECTs funktionieren gut, aber Dinge wie das Löschen aller Zeilen, die einem bestimmten Benutzer gehören, können eine Weile dauern. Grundsätzlich bin ich auf der Suche nach einer soliden Begründung, warum das dynamische Erstellen einer Tabelle für jeden Benutzer nicht sinnvoll ist, wenn ich gefragt werde.