2009-01-06 177 views
1

我有一個問題,我想以最好的方式解決。事情是,我做了一個模式,它看起來像這樣:XML和Sql Server 2005

打印( 「

<xs:complexType name="rentACarT"> 
    <xs:sequence> 
     <xs:element name="poslovnice" type="poslovniceT" /> 
     <xs:element name="korisnici" type="korisniciT" /> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="poslovniceT"> 
    <xs:sequence> 
     <xs:element name="poslovnica" type="poslovnicaT" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="poslovnicaT"> 
    <xs:sequence> 
     <xs:element name="naziv" type="xs:string" /> 
     <xs:element name="adresa" type="adresaT" /> 
     <xs:element name="grad" type="gradT" /> 
     <xs:element name="vozila" type="vozilaT" /> 
     <xs:element name="zaposlenici" type="zaposleniciT" /> 
     <xs:element name="posudbe" type="posudbeT" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:int" /> 
</xs:complexType> 

<xs:complexType name="vozilaT"> 
    <xs:sequence> 
     <xs:element name="vozilo" type="voziloT" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="zaposleniciT"> 
    <xs:sequence> 
     <xs:element name="zaposlenik" type="zaposlenikT" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="korisniciT"> 
    <xs:sequence> 
     <xs:element name="korisnik" type="korisnikT" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="posudbeT"> 
    <xs:sequence> 
     <xs:element name="posudba" type="posudbaT" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 


<xs:complexType name="posudbaT"> 
    <xs:sequence> 
     <xs:element name="idVozila" type="xs:int" /> 
     <xs:element name="jmbgZaposlenika" type="jmbgT" /> 
     <xs:element name="jmbgKorisnika" type="jmbgT" /> 
     <xs:element name="datumPosudbe" type="xs:date" /> 
     <xs:element name="ugovoreniDatumPovratka" type="xs:date" /> 
     <xs:element name="stvarniDatumPovratka" type="xs:date" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:integer" /> 
</xs:complexType> 

<xs:complexType name="voziloT"> 
    <xs:sequence> 
     <xs:element name="registracija" type="xs:string" /> 
     <xs:element name="modelVozila" type="modelVozilaT" /> 
     <xs:element name="godinaProizvodnje" type="godinaT" /> 
     <xs:element name="cijenaPosudbePoDanu" type="xs:double" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:int" /> 
</xs:complexType> 

<xs:complexType name="zaposlenikT"> 
    <xs:sequence> 
     <xs:element name="ime" type="xs:string" /> 
     <xs:element name="prezime" type="xs:string" /> 
     <xs:element name="spol" type="spolT" /> 
     <xs:element name="datumZaposlenja" type="xs:date" /> 
     <xs:element name="grad" type="xs:double" /> 
    </xs:sequence> 
    <xs:attribute name="jmbg" type="jmbgT" /> 
</xs:complexType> 

<xs:complexType name="korisnikT"> 
    <xs:sequence> 
     <xs:element name="ime" type="xs:string" /> 
     <xs:element name="prezime" type="xs:string" /> 
     <xs:element name="spol" type="spolT" /> 
     <xs:element name="adresa" type="adresaT" /> 
     <xs:element name="grad" type="gradT" /> 
     <xs:element name="status" type="statusKorisnikaT" /> 
    </xs:sequence> 
    <xs:attribute name="jmbg" type="jmbgT" /> 
</xs:complexType> 

<xs:complexType name="modelVozilaT"> 
    <xs:sequence> 
     <xs:element name="tipVozila" type="tipVozilaT" /> 
     <xs:element name="marka" type="xs:string" /> 
     <xs:element name="model" type="xs:string" /> 
    </xs:sequence> 
</xs:complexType> 

<xs:simpleType name="tipVozilaT"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="auto" /> 
     <xs:enumeration value="kombi" /> 
     <xs:enumeration value="kamion" /> 
     <xs:enumeration value="limuzina" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="godinaT"> 
    <xs:restriction base="xs:int"> 
     <xs:minInclusive value="1980" /> 
     <xs:maxInclusive value="2050" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="jmbgT"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="([0-9]){13}" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="spolT"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="m" /> 
     <xs:enumeration value="f" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="statusKorisnikaT"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="stalni" /> 
     <xs:enumeration value="novi" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:complexType name="gradT"> 
    <xs:sequence> 
     <xs:element name="postanskiBroj" type="xs:int" /> 
     <xs:element name="naziv" type="xs:string" /> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="adresaT"> 
    <xs:sequence> 
     <xs:element name="ulica" type="xs:string" /> 
     <xs:element name="kucniBroj" type="xs:int" /> 
    </xs:sequence> 
</xs:complexType> 

」);

現在,我不想把整個XML文檔放到一行。至少我認爲這是不好的。 我想在一個表中移動「poslovnice」(包含多個「poslovnica」),在其他表中移動「vozila」... 將Poslovnica中的每個「poslovnica」放在Poslovnica表中的一行中還是將所有元素「 poslovnica「在一行? 自從SQL Server不支持唯一的xml數據類型以來,唯一性又如何呢?我已經看到您可以使用觸發器和函數,還有其他方法嗎? 此外,如果我打破了XML文件,並在其中一個表和他們的vozila poslovnice,如何實現以顯示vozilo屬於poslovnica,我應該把poslovnica的id在XML中的每個vozilo或我應該引用行SQL Server?

或者你會推薦一些其他數據庫?

非常感謝你,我很抱歉,如果我不太清楚:(!

米羅斯拉夫

回答

1

好首先你要問自己,爲什麼你想它存儲在XML的數據庫? 這似乎是一個很好的方案有表Poslovnica,Vozilo和Zaposlenik並有持有其員工租什麼車在哪裏。

我沒有看到一個原因這些信息存儲在XML的所有信息中間表。

0

嘿。我也沒有看到任何理由,但事情是我必須這樣做。對於大學項目。 爲避免複雜化,我們使用了Sedna數據庫,並且完全不使用模式。