2012-10-11 68 views
0

我發現這個tsql查詢顯示錶的xml模式,它工作得很好。如何顯示從tsql查詢派生的xml架構中的表關係?

SELECT * FROM TableA 
FOR XML AUTO, XMLSCHEMA 

我現在試圖通過這個查詢來顯示錶之間的關係。我不確定這是否可能。我嘲笑了幾張測試桌,而且我沒有任何運氣。基本上,我創建tableA和tableB之間的一對多關係,然後在xml模式中將tableA顯示爲父級,而tableB將是架構內的子級。

這就是我一直在運行的東西。 :

SELECT * FROM TableA, 
dbo.TableB 
FOR XML AUTO, XMLSCHEMA 

這是我從上面的查詢得到的示例xml模式文件。

<xsd:schema targetNamespace="urn:schemas-microsoft-com:sql:SqlRowSet7" xmlns:schema="urn:schemas-microsoft-com:sql:SqlRowSet7" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" elementFormDefault="qualified"> 
    <xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" /> 
    <xsd:element name="TableA"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="columnA" type="sqltypes:int" /> 
     <xsd:element name="columnB"> 
      <xsd:simpleType> 
      <xsd:restriction base="sqltypes:varchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="BinarySort"> 
       <xsd:maxLength value="50" /> 
      </xsd:restriction> 
      </xsd:simpleType> 
     </xsd:element> 
     <xsd:element ref="schema:dbo.tylersTestTable2" minOccurs="0" maxOccurs="unbounded" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="TableB"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="columnA" type="sqltypes:int" /> 
     <xsd:element name="columnB"> 
      <xsd:simpleType> 
      <xsd:restriction base="sqltypes:varchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="BinarySort"> 
       <xsd:maxLength value="50" /> 
      </xsd:restriction> 
      </xsd:simpleType> 
     </xsd:element> 
     <xsd:element name="fkToTableA" type="sqltypes:int" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

正如您所看到的,它正在模式中顯示相同的級別表,並且不顯示父級子關係。 因爲我不是dba,所以我有點不知所措,但是我必須爲大量表格做這件事,而且我不想親手寫這些。

對此有何意見?

回答

1

TSQL中的表沒有真正的父子關係。每個表處於同一級別,並且外鍵關係可能會對一個或兩個表中的數據造成限制。從邏輯上講,一張表可能是父母,一個是孩子,但絕不意味着他們是物理層次結構。您可以像使用像ERwin這樣的建模工具來請求生成XML,將物理模型解釋爲邏輯模型,但TSQL確實只能看到物理模型。

+0

好吧,這是有道理的,我會檢查出ERWin。 –