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

Zwei Tabellen mit gleichen Spalten oder eine Tabelle mit zusätzlicher Spalte?

Abhängig von Einschränkungen:

  • Haben Sie Fremdschlüssel oder CHECKs auf apples die es auf oranges nicht gibt (oder umgekehrt)?
  • Müssen Sie Schlüssel in beiden Tabellen eindeutig halten (also kein apple kann die gleiche ID haben wie irgendein orange )?

Wenn die Antworten auf diese beiden Fragen lauten:"ja" und "nein" , halten Sie die Tabellen getrennt (damit Einschränkungen tabellenspezifisch gemacht werden können).

Wenn die Antworten lauten:"nein" und "ja" , führen Sie sie zusammen (damit Sie einen Schlüssel erstellen können, der beide umfasst).

Wenn die Antworten lauten:"ja" und "ja" , erwägen Sie die Emulation der Vererbung:

Lookup-Daten ist ein typisches Beispiel für Tabellen, die ähnlich aussehen, aber getrennt gehalten werden müssen, damit FKs getrennt gehalten werden können.

Genauer gesagt ist dies die Strategie „alle Klassen in separaten Tabellen“ zur Darstellung der Vererbung (auch bekannt als Kategorie, Unterklassenbildung, Untertypisierung, Verallgemeinerungshierarchie usw.). Vielleicht möchten Sie sich diesen Beitrag ansehen für weitere Informationen.