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

Datenbankdesign:Registrieren und Verifizieren

Ich sehe das aus einem anderen Blickwinkel.

In Ihrer Situation ist eine Tabelle wahrscheinlich gut genug. Aber es gibt noch andere Überlegungen.

1) Volumen. In einer kleinen Tabelle wirkt sich das Filtern nach einem Flag nicht wesentlich auf die Leistung aus. In einer großen Tabelle (Millionen Zeilen) müssten Sie das Flag in einen Index setzen. Das Einfügen eines Flags für niedrige Kardinalität in einen Index einer großen Tabelle kann die Leistung verringern.

2) Mängel. Ein Flag in der Tabelle zu haben, erfordert, dass fast jede Abfrage das Flag verwendet. Für ein ausreichend großes oder komplexes System wird jemand diese Flagge vermissen. Die Bestimmung des Risikos hängt von den Kosten ab, die durch die versehentliche Auswahl eines nicht aktivierten Benutzers entstehen.

Eine Möglichkeit, die Risiken zu mindern, ist die Verwendung von Ansichten. Wenn Sie eine Lösung mit zwei Tabellen implementieren, verwenden Sie eine Ansicht (All_Users) mit UNION ALL. Wenn Sie eine Ein-Tabellen-Lösung implementieren, erstellen Sie eine Ansicht nur für aktivierte Benutzer und verwenden Sie stattdessen diese Tabelle. Nur die Wartungsfunktion muss die Kerntabellen ändern.