Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Vorschlag zum Erstellen einer MySQL-Datenbankstruktur

Wenn ich das richtig verstehe, log dient zum automatischen Aufzeichnen von Details von Benutzeraktionen und profile enthält die Benutzerdaten.

Für das log Tabelle, Sie scheinen zu versuchen, zusammengefasste Daten zu speichern, die bei jeder Formularübermittlung aktualisiert werden müssten. Ich würde vorschlagen, dass Sie einfach einen neuen Protokolleintrag einfügen [z. log_id , log_date , profile_id , amount ] bei der Einreichung und überlassen die Aggregation dem Bericht. Um den Beitritt von log zu aktivieren zu profile , schließen wir profile_id ein .

Für das profile Tabelle, sollten Sie wahrscheinlich doppelte Einträge von first_name zulassen |last_name |dob und versuchen Sie, einen anderen Weg zu finden, sie eindeutig zu machen (entweder durch Verwendung von profile_id , oder per E-Mail, oder Reisepassnummer).

Ich bin mir Ihrer Absichten für rowone nicht sicher , rowtwo , rowthree . Wenn Sie wissen, was sie sind, dann nennen Sie sie explizit; Wenn es sich um Elemente handelt, die sich eine unbekannte Anzahl von Malen wiederholen, ziehen Sie in Betracht, sie in eine separate Tabelle zu verschieben (d. h. zu normalisieren).

Für Ihren Bericht schreiben Sie dann eine Abfrage, um dem log beizutreten und profile Tabellen zusammen, mit Aggregation (d.h. GROUP BY mit SUM und/oder COUNT auf die notwendigen Felder. "Besuchszähler" wäre der COUNT der Protokolleinträge für dieses Profil wäre "Betrag" die SUM des amount .