Ich bin größtenteils Autodidakt, wenn es um Datenbankdesigns geht. Ich stelle diese Frage, weil ich mich auf diese gemeinsame Struktur geeinigt habe, mich aber frage, ob sie die effizienteste oder die branchenüblichste Methode ist.
Die meisten Datenbanken, die ich entwerfe, haben eine Benutzertabelle, und dann wird eine Personenaktivität in einer anderen Tabelle verfolgt. Ich verstehe, dass die Schönheit der Datenbank darin besteht, diese Art von Effizienz zu erzielen, aber die Aktivitätstabelle erfasst viele, viele Ereignisse ziemlich schnell, nur von jedem Benutzer, der sie regelmäßig verwendet, und wird so ziemlich schnell zu einer riesigen Tabelle mit mäßiger Benutzerauslastung. Ist dies die beste Vorgehensweise, um es einfach so wachsen zu lassen? Oder handelt es sich um eine Tabellenebene oder eine Aufteilung in verschiedene Tabellen basierend auf dem Datum, der Anzahl der Benutzer oder etwas anderem?
+--------------------+ +------------------------+
| UserData | | Activity |
+-=------------------+ +------------------------+
| ID (auto uint) | <--1-to-many-+ | ID (auto uint) |
| UserName (text) | +--> | UserID (uint) |
| Email (text) | | Timestamp (time) |
| additional info... | | Type (ID to elsewhere) |
+--------------------+ | additional info... |
+------------------------+
Ich möchte nur wissen, wo ich etwas verbessern kann, um zu lernen.
quelle
Sie haben eine sehr gute Beobachtung gemacht. Die Aktivitätstabelle wird schnell und groß. In der Vergangenheit habe ich die älteren Daten (z. B. älter als 14 Tage) in einer ActivityHistory- Tabelle archiviert . Auf diese Weise bleibt die Aktivitätstabelle auf einer überschaubaren Größe, und wenn Sie Nachforschungen anstellen müssen, können Sie jederzeit auf die ActivityHistory- Tabelle zurückblicken .
quelle