XML и Sql Server 2005 - PullRequest
       15

XML и Sql Server 2005

1 голос
/ 06 января 2009

У меня есть проблема, которую я хочу решить наилучшим образом. Дело в том, что я сделал схему, которая выглядит так:

печать (»

<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-документ в одну строку. По крайней мере, я думаю, что это плохо. Я бы хотел переместить «пословницу» (содержит несколько «пословниц») в одну таблицу и «возила» в другую ... И лучше ли держать каждую «пословницу» в одном ряду таблицы «Пословница» или иметь все элементы «пословницы» в одном ряду? А как насчет уникальности, поскольку SQL Server не поддерживает уникальный тип данных xml, я видел, что вы можете использовать триггеры и функции, есть ли другой способ? Кроме того, если я разбиваю документ xml и имею пословницу в одной таблице и их возила в другой, как добиться, чтобы показать, что возило принадлежит пословнице, должен ли я указывать идентификатор пословницы в каждом возило в xml или ссылаться на строки в SQL Сервер

Или вы бы порекомендовали какую-то другую базу данных?

Большое спасибо, извините, если я не достаточно ясно :(!

Мирослава

Ответы [ 2 ]

1 голос
/ 07 января 2009

ну, сначала вы должны спросить себя, почему вы хотите, чтобы он хранился в XML в БД? это кажется идеальным сценарием, когда есть таблицы Poslovnica, Vozilo и Zaposlenik и промежуточные таблицы, в которых хранится информация о том, какой сотрудник арендовал какой автомобиль, где.

Я вообще не вижу смысла хранить это в xml.

0 голосов
/ 10 января 2009

Эй. Я тоже не вижу причин, но дело в том, что я должен это сделать. Для проекта колледжа. Чтобы избежать осложнений, мы использовали базу данных Sedna и совсем не использовали схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...