2009-01-06 142 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数据库,并且完全不使用模式。