MySQL Spalte mit Werte automatisch aktualisieren

2 Antworten

Automatisch macht eine Datenbank eigentlich nichts. Wenn die Datenbank richtig konzipiert ist, ist das auch nicht nötig. Warum speicherst Du die Durchschnittswerte überhaupt ab? Noch dazu, wenn sie nach kurzer Zeit sowieso überholt sind. Werte, die durch Berechnung entstehen, werden am besten dann berechnet, wann man sie braucht. Dann erübrigt sich auch das Speichern.

Und wenn sich die Berechnung zum Zeitpunkt der Abfrage als zu kompliziert herausstellt, kann man die Werte immer noch temporär speichern. Ich glaube, Du verwechselst hier eine Tabellenkalkulation mit einer Datenbank.

Man kann aus einer Datenbank nur herausbekommen, was die Struktur hergibt. Das A und O eines Datenbankkonzeptes ist, die Struktur so festzulegen, dass die Datenbank die beabsichtigten Auswertungen auch hergeben kann.

Flugmaus  06.04.2012, 17:00

Doch Datenbanken machen vieles "automatisch", es gibt dafür trigger, proceduren, views usw.

komplizierte Abfragen kann man gut als view abspeichern und bei Bedarf den SELECT auf die view absetzen.

Aber Du hast völlig Recht, das Abspeichern von Werten, die aus anderen berechnet werden können führt nur zu unnötigen Redundanzen.

0
wotan38  16.03.2019, 12:12
@Flugmaus

Der Trigger ist keine typisch datenbanktechnische Option. Er ist eigentlich für ganz spezielle Anforderungen gedacht. Wenn man etwas regelmäßig machen muss, bei dem es keinen Anlass gibt, weil niemand dafür so recht zuständig ist. Das wäre z.B. eine bestimmte Datensicherung, die man machen muss, aber niemand sie braucht, solange nichts passiert und deshalb gerne vernachlässigt bleibt. Wer Trigger ganz normal in seinem Projekt verwendet, hat entweder das Prinzip der Datenbank nicht verstanden oder kommt aus der EXCEL-Ecke und möchte die Datenbank weiterhin als Tabellenkalkulation nutzen. Man sollte einen Trigger nur verwenden, wenn es anders nicht geht. Dann ist er auch sinnvoll und dafür ist er auch gedacht.

Beispiele wären dafür Termine überwachen, nicht abgeschlossene Vorgänge anzeigen, offene Zahlungen ermitteln und sonstige Plausiblitätskontrollen durchführen.

Wenn man Trigger beim einfachen Tagesgeschäft einsetzt, z.B. regelmäßige Berechnungen durchführt, muss man berücksichtigen, dass man zwischen zwei getriggerten Aktionen logischer Weise immer auch falsche Daten anbietet. Wenn jeder beim Abgreifen der Daten sich die Berechnungen selbst durchführt, hat dagegen immer ein aktuelles Ergebnis.

0

Ja ab MySQL 5 kann man Trigger einrichten. Diese werden automatisch ausgeführt, wenn ein bestimmtes Ereignis stattfindet, z.B.

AFTER UPDATE ON tabelle1

Allerdings ist dieses durchaus nützliche Verfahren in Deinem Fall nicht der richtige Weg. MySQL kann im SELECT weit mehr ausgeben als nur die Feldwerte. Es sind z.B. mathematische Funktionen und Operationen mit Zeichenketten möglich.

Das Wichtigste dabei ist eine gute Datenbankstruktur. Vergiss die 2. Tabelle und versuch's mal mit:

SELECT rating_value/rating_hits AS rating_average FROM tabelle1

..