Ich denke, dass die Fähigkeit mancher reflektionsverwalteter Umgebungen (z. B. .NET), Codeelementen in Form von Attributen benutzerdefinierte Metadaten hinzuzufügen, sehr leistungsfähig ist. Gibt es einen Mechanismus, um etwas ähnliches für Datenbanken zu tun?Benutzerdefinierte/arbiträre Datenbankmetadaten
Datenbanken haben offensichtlich bereits eine beträchtliche Menge an Metadaten zur Verfügung; Sie können beispielsweise eine Liste aller Tabellen, Spalten und Fremdschlüsselreferenzen abrufen, die ausreichen, um ein Schemadiagramm zusammenzustellen. Allerdings konnte ich viel von Anwendungen für etwas mehr generisch, wie etwas entlang der Linien von dieser imaginären Fusion von C# und DDL vorstellen:
[Obsolete("Being replaced by the ClientInteraction table")]
create table CustomerOrder (
[SurrogateKey]
MyTableId int identity(1,1) primary key
[NaturalKey]
[ForeignKey("Customer", "CustomerId")] /* Actual constraint left out for speed */
,CustomerId int not null
[NaturalKey]
[ConsiderAsNull(0)]
[ConsiderAsNull(-1)]
,OrderId int not null
[Conditional("DEBUG")]
,InsertDateTime datetime
)
Das Beispiel ist ein wenig gekünstelt, aber hoffentlich macht meine Frage klarer. Ich denke, dass die Fähigkeit, über diese Art von Metadaten nachzudenken, viele Aufgaben viel einfacher automatisieren könnte. Gibt es so etwas da draußen? Ich arbeite mit SQL Server, aber wenn es etwas für ein anderes DBMS gibt, würde ich immer noch daran interessiert sein, davon zu hören.