2008-10-23 4 views
0

Existe-t-il un langage XML pour définir les tables, les index et les relations d'une base de données relationnelle et un "compilateur" ou une feuille de style pour transformer cette définition en instructions SQL CREATE (DDL)?Existe-t-il un langage XML pour définir/créer des schémas de base de données SQL?

EG, quelque chose qui pourrait ressembler à:

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

Je voudrais garder la configuration d'un service et ses dépendances en un seul endroit, et XML est à la recherche comme le meilleur choix en raison de son large support et sa capacité à mélanger les espaces de noms. Avec cela, je pourrais écrire un programme d'installation qui peut installer ce service et créer la base de données, ses tables, index, relations, etc. sans être lié à une implémentation SQL spécifique.

Modifier: Cela n'a rien à voir avec ORM.

Répondre

0

Cela ressemble à des migrations basées sur XML, mais jamais vues.

Si vous êtes dans OR/M, vous pouvez jeter un oeil à l'outil hbm2ddl de Hibernate. Il génère les commandes de création appropriées pour le schéma sur divers dialectes de base de données à partir d'une définition XML.

+0

hbm2ddl ressemble au bon type de chose. Cependant, je ne vais pas utiliser NHibernate: le créateur DDL peut-il être utilisé indépendamment? –

0

J'ai écrit le mien quelques fois pour différents projets. Si vous êtes doué pour XSLT, si vous connaissez DDL et si vous avez un bon environnement de développement, il est étonnamment facile (2 ou 3 heures de travail) de hacher un schéma pour représenter les métadonnées et une transformation qui produit votre script de création de base de données. Cela a tous les avantages et les inconvénients habituels de le faire vous-même: d'une part, vous contrôlez l'ensemble des fonctionnalités, mais d'autre part, vous êtes responsable de l'ensemble des fonctionnalités. Dans mes projets, l'ensemble de fonctionnalités était assez petit pour qu'il soit plus facile de le construire moi-même que d'apprendre à travailler avec le framework d'application de quelqu'un d'autre.

Questions connexes