Поскольку 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.