Есть ли язык XML для определения / создания схем базы данных SQL?

Существует ли диалект XML для определения таблиц, индексов и отношений реляционной базы данных, а также «компилятор» или таблица стилей для преобразования этого определения в операторы SQL CREATE (DDL)?

Например, это может выглядеть так:

<Table Name = "orders">
    <Column Name = "order_id" Type = "varchar" Size = "20"/>
    ... etc ...
</Table>

Я хотел бы сохранить конфигурацию службы и ее зависимостей в одном месте, и XML выглядит лучшим выбором из-за его широкой поддержки и способности смешивать пространства имен. С его помощью я мог бы написать программу установки, которая может установить эту службу и создать базу данных, ее таблицы, индексы, отношения и т. д. Без привязки к конкретной реализации SQL.

Редактировать: Это не имеет ничего общего с ORM.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
289
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Похоже на миграции на основе XML, хотя никогда их не видел.

Если вам нравится OR / M, вы можете взглянуть на инструмент hbm2ddl (N) Hibernate. Он генерирует соответствующие команды создания для схемы на различных диалектах базы данных из определения XML.

hbm2ddl выглядит правильным. Я не собираюсь использовать NHibernate: можно ли использовать создателя DDL независимо?

Chris Wenham 23.10.2008 20:00
Ответ принят как подходящий

Что-то вроде xml2ddl?

Пару раз писал свой для разных проектов. Если вы хорошо разбираетесь в XSLT, разбираетесь в DDL и имеете хорошую среду разработки, удивительно легко (например, 2 или 3 часа работы) собрать вместе схему для представления метаданных и преобразование, которое создает ваш сценарий создания базы данных.

У этого есть все обычные преимущества и недостатки, возникающие при самостоятельном выполнении: с одной стороны, вы контролируете набор функций, но с другой стороны, вы несете ответственность за набор функций. В моих проектах набор функций был достаточно мал, чтобы его было легче создать самому, чем научиться работать с чужой структурой приложения.

Другие вопросы по теме