Mein Hintergrund liegt eher in der Webprogrammierung als in der Datenbankverwaltung. Bitte korrigieren Sie mich, wenn ich hier die falsche Terminologie verwende. Ich versuche herauszufinden, wie ich die Datenbank am besten für eine Anwendung entwerfen kann, die ich codieren werde.
Die Situation: Ich habe Berichte in einer Tabelle und Empfehlungen in einer anderen Tabelle. Jeder Bericht kann viele Empfehlungen enthalten. Ich habe auch eine separate Tabelle für Schlüsselwörter (um das Tagging zu implementieren). Ich möchte jedoch nur einen Satz von Schlüsselwörtern haben, der sowohl auf Berichte als auch auf Empfehlungen angewendet wird, sodass Sie bei der Suche nach Schlüsselwörtern Berichte und Empfehlungen als Ergebnisse erhalten.
Hier ist die Struktur, mit der ich angefangen habe:
Reports
----------
ReportID
ReportName
Recommendations
----------
RecommendationID
RecommendationName
ReportID (foreign key)
Keywords
----------
KeywordID
KeywordName
ObjectKeywords
----------
KeywordID (foreign key)
ReportID (foreign key)
RecommendationID (foreign key)
Instinktiv bin ich der Meinung, dass dies nicht optimal ist und dass ich meine taggbaren Objekte von einem gemeinsamen übergeordneten Objekt erben und diesen übergeordneten Kommentar mit Tags versehen lassen sollte, was die folgende Struktur ergeben würde:
BaseObjects
----------
ObjectID (primary key)
ObjectType
Reports
----------
ObjectID_Report (foreign key)
ReportName
Recommendations
----------
ObjectID_Recommendation (foreign key)
RecommendationName
ObjectID_Report (foreign key)
Keywords
----------
KeywordID (primary key)
KeywordName
ObjectKeywords
----------
ObjectID (foreign key)
KeywordID (foreign key)
Soll ich mit dieser zweiten Struktur gehen? Vermisse ich hier wichtige Bedenken? Was sollte ich als nicht generischen Namen verwenden, um "Objekt" zu ersetzen, wenn ich mich für den zweiten Namen entscheide?
Aktualisieren:
Ich verwende SQL Server für dieses Projekt. Es ist eine interne Anwendung mit einer kleinen Anzahl nicht gleichzeitiger Benutzer, daher erwarte ich keine hohe Auslastung. In Bezug auf die Verwendung werden die Schlüsselwörter wahrscheinlich sparsam verwendet. Es ist so ziemlich nur für statistische Berichtszwecke. In diesem Sinne wirkt sich jede Lösung wahrscheinlich nur auf Entwickler aus, die dieses System später warten müssen ... aber ich dachte, es ist gut, bewährte Verfahren zu implementieren, wann immer ich kann. Danke für all den Einblick!