2009-01-06 14 views
1

J'ai un problème que je veux résoudre de la meilleure façon possible. La chose est que je fait un schéma qui ressemble à ceci:XML et Sql Server 2005

print ("

<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> 

");

Maintenant, je ne veux pas mettre tout le document xml en une seule ligne. Au moins, je pense que c'est mauvais. Je voudrais déplacer "poslovnice" (contient plusieurs "poslovnica") dans une table et "vozila" dans d'autres ... Et est-il préférable de tenir chaque "poslovnica" dans une rangée dans la table Poslovnica ou avoir tous les éléments " poslovnica "dans une rangée? Et qu'en est-il de l'unicité puisque SQL Server ne prend pas en charge le type de données xml unique, j'ai vu que vous pouvez utiliser des déclencheurs et des fonctions, existe-t-il un autre moyen? Aussi, si je casse le document XML, et ai poslovnice dans une table et leur vozila dans l'autre, comment parvenir à montrer que vozilo appartient à poslovnica, devrais-je mettre id de poslovnica dans chaque vozilo en xml ou dois-je référencer les rangées Serveur SQL?

Ou vous recommanderiez-vous une autre base de données?

Merci beaucoup, je suis désolé si je ne suis pas assez clair :(!

Miroslav

Répondre

1

bien d'abord vous devez vous demander pourquoi vous voulez stocké en XML dans le db? cela semble être un scénario parfait pour des tables Poslovnica, vozilo et Zaposlenik et des tables intermédiaires qui détiennent les informations sur lesquelles l'employé loué quelle voiture où.

je ne vois pas de raison de le stocker dans xml du tout.

0

Hey. Je ne vois pas non plus de raison mais la chose est que je dois le faire. Pour le projet d'université. Pour éviter les complications, nous avons utilisé la base de données Sedna et n'avons pas utilisé de schéma du tout.