Я думаю, что способность некоторых отражающих управляемых сред (например, .NET) добавлять собственные метаданные к объектам кода в форме атрибутов очень мощная. Есть ли механизм для создания чего-то похожего для баз данных?
Базы данных, очевидно, уже имеют достаточное количество метаданных; например, вы можете получить список всех таблиц, столбцов и ссылок на внешние ключи, что достаточно для составления схемы схемы. Тем не менее, я мог бы представить множество вариантов использования чего-то более общего, например, что-то вроде этого воображаемого сочетания C # и DDL:
[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
)
Пример немного надуман, но, надеюсь, прояснит мой вопрос. Я думаю, что способность размышлять над метаданными такого рода может значительно упростить автоматизацию многих задач. Есть ли что-нибудь подобное? Я работаю с SQL Server, но если есть что-то для другой СУБД, мне все равно было бы интересно узнать об этом.