Автоматическая генерация схемы SQL из XML - PullRequest
2 голосов
/ 20 сентября 2008

Мы пытаемся использовать базу данных SQL Server 2003 для наших тестовых записей и хотим получить быстрый способ получить выходные данные NUnit и NAnt и создать схему и данные SQL. Существует ли простой способ создания схемы SQL с использованием файла XSD, описывающего эти документы XML?

Ответы [ 3 ]

1 голос
/ 28 ноября 2008

Поскольку XSD неоднозначен с точки зрения отношений «мастер-деталь», я сомневаюсь, что автоматическая генерация возможна.

Например, объявление типа

<xs:element name="foo" type="footype" minOccurs="0" maxOccurs="unbounded" /> 

можно интерпретировать как дочернюю таблицу "foo" (1: n) или как отношение n: m.

minOccurs = "0" maxOccurs = "1" может быть обнуляемым столбцом или необязательным отношением 1: 1.

type = "xs: string" maxOccurs = "1" - это столбец string ((n) varchar) или необязательный поиск; но type = "xs: string" maxOccurs = "unbounded" - это таблица подробностей со столбцом (n) varchar.

1 голос
/ 20 сентября 2008

Вы можете использовать XSD. Нет, я серьезно. Перейдите в командную строку, введите xsd и нажмите Enter.

Вот что вы увидите (усечено):

I:\>xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 1.0.3705.0]
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.


xsd.exe -
    Utility to generate schema or class files from given source.

xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]

Просто следуйте инструкциям.

0 голосов
/ 05 декабря 2009

Существует инструмент под названием ShreX , который может создавать схемы из xsd и вставлять из XML. Он пытается сделать это сам (вы можете аннотировать xsd, чтобы управлять им). Если вы хотите решить структуру самостоятельно, это может быть не то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...