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

MySQL fügt bei einer Einfügung in Tabelle1 automatisch eine Zeile in Tabelle2 ein

Sie würden Trigger benötigen, um den Datensatz "automatisch" in eine separate Tabelle einzufügen.

Das Einfügen des Datensatzes in UserPrivacy mit einer separaten Abfrage wäre die gebräuchlichste Art, dies zu implementieren.

Wenn es sich um eine Eins-zu-eins-Beziehung handelt, ermöglicht das Platzieren in derselben Tabelle einfachere Abfragen (kein Join erforderlich).

Entscheidungen, Entscheidungen ...

Bei einer Eins-zu-(Null-zu-Eins)-Beziehung müssen mehr Faktoren berücksichtigt werden.

Wenn die UserPrivacy-Tabelle groß ist, kann es sinnvoll sein, sie in einer separaten Tabelle abzulegen, um Platz zu sparen. Dies wäre auch normalisierter.

Wenn Sie oft so etwas abgefragt haben wie „Gib mir alle Benutzer, die keine Datenschutzdaten haben“, dann könnte es sinnvoll sein, sie in einer separaten Tabelle abzulegen. Da Indizes (standardmäßig) keine NULL-Werte enthalten, wäre es schneller, einen JOIN mit einer separaten Tabelle durchzuführen. Die Umgehung besteht natürlich darin, einen anderen Wert als NULL zu verwenden, um "keine Datenschutzeinstellungen" darzustellen, aber eine niedrige Kardinalität wirkt sich auch negativ auf die Leistung aus. Separate Tabellen wären für diesen Fall am besten.

Wenn die Datenschutzdaten häufig aktualisiert würden, aber nicht die Benutzerdaten, würden separate Tabellen Zeilensperren in der Benutzertabelle verhindern, und Aktualisierungen sind bei kleineren Tabellen schneller, was die Leistung verbessern könnte.

Wenn Sie die UserPrivacy-Daten oft ohne die UserData benötigen oder umgekehrt, möchten Sie sie vielleicht trennen.

Dennoch könnte dies eine verfrühte Optimierung sein. Vielleicht möchten Sie sie nur trennen, wenn sie besser zu Ihren Modellen passen. Betrachten Sie die Einfachheit, es in derselben Tabelle zu halten, im Vergleich zu den Problemen der Leistung, Größe und Lesbarkeit.

Wenn die Beziehung eins-zu-(null zu viele) wäre, würden Sie natürlich eine separate Tabelle brauchen, aber für eins-zu-(null zu eins) ist es optional.

Endlich...

Scheuen Sie sich nicht, sie zu trennen, solange es einen Grund gibt.