Ich habe einige denormalisierte Daten in zwei Tabellen. Es ist denormalized, weil ich aus der DepositsAndWithdrawals-Tabelle (zweite unten) das aktuelle Kundenkonto abrufen kann, aber für den schnellen Zugriff behalte ich es in der UserBalance-Tabelle (erste unten), so dass ich nicht alle seine Operationen summieren muss Zeit:Erkennen von Inkonsistenzen bei denormalisierten Daten in nur einer SQL-Abfrage?
+----+----------+---------+ | ID | Username | Balance | +----+----------+---------+ | 1 | Alice | 50 | +----+----------+---------+ | 2 | Bob | 20 | +----+----------+---------+ | 3 | Charles | 30 | +----+----------+---------+
+----+------------+---------+ | ID | CustomerID | Amount | +----+------------+---------+ | 1 | 1 | 50 | +----+------------+---------+ | 2 | 2 | 80 | +----+------------+---------+ | 3 | 3 | 10 | +----+------------+---------+ | 4 | 2 | -60 | +----+------------+---------+ | 5 | 3 | 20 | +----+------------+---------+
Dies bringt eine Konsistenzproblem bei dort Rennbedingungen im System vorhanden sind. Um diese zu erkennen, hätte ich gerne eine tägliche DB-Abfrage, die Balance-Inkonsistenzen erkennt (dh wenn SUM(amount)
sich von balance
unterscheidet). Wie macht man einen solchen JOIN in einer einzigen SQL-Anweisung?
nicht besser ist die Inkonsistenz zu vermeiden, anstatt zu versuchen, sie zu erkennen und zu beheben? –
ja, aber das ist SQL besser zu lernen, ich denke, ich brauche die GROUPBY-Klausel, aber ich bin mir nicht sicher – user1623521