Diese Frage ist ein paar Mal in verschiedenen Foren in meiner Suche aufgetreten, aber keine hat eine knappe Auflösung bereitgestellt.Datenbanktabellen, eine Tabelle, die mehrere nicht verwandte Tabellen referenziert
Wenn ich die folgenden Tabellen:
User
+- id
+- username
+- password
Article
+- id
+- title
+- content
und ich möchte, dass sie verbinden, um zu bestimmen, wer erstellt, welche Artikel, konnte ich einfach die Spalte hinzufügen zu Artikel user_id als zu verwenden, Referenz. Alternativ Ich füge eine Zwischentabelle zu zeigen, wer/wann/was, zum Beispiel:
User
+- ...
Article
+- ...
ChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
Nun ist dies in Ordnung, aber das System, das ich auf Bedürfnisse bin arbeiten zu viel dynamische, in diesen neuen Module können einfach eingeführt und integriert werden. So, jetzt, wenn ich eine Medien Tabelle hinzufügen muss ich die ChangeHistory zwischen Artikel und Medien mit aufzuspalten:
User
+- ...
Article
+- ...
Media
+- id
+- title
+- path
ArticleChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
MediaChangeHistory
+- id
+- media_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
Das aus der Hand schnell mit der Einführung vieler Module können. Jedes Modul müsste für die Erstellung und Verwaltung seiner eigenen ChangeHistory Tabelle verantwortlich sein.
TL; DR: Welche Vorgehensweisen kann ich untersuchen, um eine Zwischentabelle zu erstellen, die Verweise auf mehrere andere nicht verwandte Tabellen erhalten kann? Ich könnte ein * record_type * -Feld hinzufügen, das den Namen der Tabelle enthält, zu der der Datensatz gehört, aber das ist hässlich. Ich würde etwas wie eine "Tabelle ID" benötigen, um auf die Tabelle zu verweisen, von der es kommt. Auf diese Weise fällt das Modell nicht auseinander, wenn Module hinzugefügt oder entfernt werden.
Irgendwelche Ideen? Vielen Dank im Voraus.
Gibt es einen Grund, warum Sie eine "Tabellen-ID" für besser halten als einen "Datensatztyp"? –