Существует ли диалект XML для определения таблиц, индексов и отношений реляционной базы данных, а также «компилятор» или таблица стилей для преобразования этого определения в операторы SQL CREATE (DDL)?
Например, это может выглядеть так:
<Table Name = "orders">
<Column Name = "order_id" Type = "varchar" Size = "20"/>
... etc ...
</Table>
Я хотел бы сохранить конфигурацию службы и ее зависимостей в одном месте, и XML выглядит лучшим выбором из-за его широкой поддержки и способности смешивать пространства имен. С его помощью я мог бы написать программу установки, которая может установить эту службу и создать базу данных, ее таблицы, индексы, отношения и т. д. Без привязки к конкретной реализации SQL.
Редактировать: Это не имеет ничего общего с ORM.


Похоже на миграции на основе XML, хотя никогда их не видел.
Если вам нравится OR / M, вы можете взглянуть на инструмент hbm2ddl (N) Hibernate. Он генерирует соответствующие команды создания для схемы на различных диалектах базы данных из определения XML.
Что-то вроде xml2ddl?
Пару раз писал свой для разных проектов. Если вы хорошо разбираетесь в XSLT, разбираетесь в DDL и имеете хорошую среду разработки, удивительно легко (например, 2 или 3 часа работы) собрать вместе схему для представления метаданных и преобразование, которое создает ваш сценарий создания базы данных.
У этого есть все обычные преимущества и недостатки, возникающие при самостоятельном выполнении: с одной стороны, вы контролируете набор функций, но с другой стороны, вы несете ответственность за набор функций. В моих проектах набор функций был достаточно мал, чтобы его было легче создать самому, чем научиться работать с чужой структурой приложения.
hbm2ddl выглядит правильным. Я не собираюсь использовать NHibernate: можно ли использовать создателя DDL независимо?