• Nenhum resultado encontrado

Exemplo de Relacionamento de Entidade Tipo

Um relacionamento de entidade Tipo 1 de XML é um relacionamento entre duas exibições. Cada exibição deve ser raiz em um tipo complexo global. Uma exibição deve ser derivada da outra.

O esquema seguinte contém PublicationType, BookType e MagazineType. PublicationType é o tipo de base. Uma publicação contém Title, Author e Date. BookType e MagazineType são tipos derivados que estendem PublicationType. Livro tem ISBN e Editor, e Revista tem Volume e Edição.

<xsd:complexType name="PublicationType"> <xsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string" maxOccurs="unbounded"/> <xsd:element name="Date" type="xsd:string"/>

</xsd:sequence> </xsd:complexType>

<xsd:element name="Publication" type="PublicationType"/> <xsd:complexType name="BookType">

<xsd:complexContent>

<xsd:extension base="PublicationType"> <xsd:sequence>

</xsd:complexContent> </xsd:complexType> <xsd:complexType name="MagazineType"> <xsd:complexContent> <xsd:extension base="PublicationType"> <xsd:sequence>

<xsd:element name="Volume" type="xsd:string"/> <xsd:element name="Edition" type="xsd:string"/> </xsd:sequence>

</xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:schema>

Quando você cria exibições XML como entidades em uma definição XML, os metadados de Title e Date de PublicationType não se repetem em BookType ou MagazineType. Em vez disso, essas exibições contêm os metadados que as distinguem de PublicationType: ISBN e Editor para BookType e volume e edição para MagazineType. Elas têm chaves externas que as vinculam a PublicationType.

Esse exemplo usa explosão de metadados reduzidos porque nenhum dos elementos do tipo de base é repetido nos tipos derivados.

Autor é um elemento que ocorre várias vezes em Publicação. Author se torna uma exibição XML. A figura a seguir mostra as exibições padrão que o Designer gera a partir do esquema:

A figura a seguir mostra um arquivo XML que tem uma publicação, uma revista e livros:

Se processar o arquivo XML de exemplo usando a definição XML da figura precedente, você criará dados nas seguintes exibições:

Exibição PublicationType. Contém o título e a data de cada publicação.

A figura a seguir mostra a exibição PublicationType:

Exibição BookType. Contém o ISBN e o editor. BookType contém uma chave externa para

PublicationType.

A figura a seguir mostra a exibição BookType:

Exibição MagazineType. Contém volume e edição. MagazineType também contém uma chave externa

para o PublicationType.

Exibição Author. Contém autores de todas as publicações. O Designer gera uma exibição separada

para Autor porque Autor é um elemento com várias ocorrências. Cada publicação pode conter vários autores.

A figura a seguir mostra a exibição Autor:

Exemplo de Relacionamento de Entidade Tipo II

Você pode criar um relacionamento de herança entre uma coluna e uma exibição de tipo complexo. A coluna deve ser um elemento de um tipo complexo local. A exibição deve ser a raiz em um tipo complexo global. O tipo complexo local deve ser derivado do tipo complexo global.

Por exemplo, o esquema a seguir define um tipo complexo chamado EmployeeType. EmployeeType contém os elementos EmployeeNumber e EmployeeName.

EmployeeStatusType inclui um elemento chamado Employee que estende EmployeeType. Employee inclui um elemento EmployeeStatus.

<xs:element name="Employee_Payroll"> <xs:complexType>

<xs:sequence>

<xs:element name="EmployeeStatus" type="EmpStatusType" maxOccurs="unbounded"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="EmpStatusType"> <xs:sequence>

<xs:element name="Employee" minOccurs="0" maxOccurs="1"> <xs:complexType>

<xs:complexContent>

<xs:extension base="EmployeeType"> xs:sequence>

<xs:element name="EmployeeStatus" type="xs:string"> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="EmployeeType"> <xs:sequence>

<xs:element name="EmployeeName" type="xs:string"></xs:element> <xs:element name="EmployeeNumber" type="xs:string"></xs:element> </xs:sequence>

</xs:complexType> </xs:schema>

Quando você importa o esquema, o Designer cria uma exibição para Employee_Payroll, EmployeeType e EmployeeStatus. A exibição EmployeeStatus contém a coluna chamada Employee. Employee deriva de EmployeeType.

A figura a seguir mostra a exibição Employee_Payroll, a exibição EmployeeType e a exibição XML EmployeeStatus:

A exibição EMPLOYEE_Payroll contém o elemento Employee_Payroll e uma chave primária,

PK_Employee_Payroll. A exibição Employee _ Payroll está conectado à exibição EmployeeStatus por uma linha azul que indica uma sequência de relacionamento um a muitos entre as exibições. Employee_Payroll contém várias ocorrências de EmployeeStatus.

A exibição EmployeeStatus contém um elemento Employee do tipo EmployeeType. O elemento Employee estende EmployeeType, incluindo um elemento EmployeeStatus. A exibição EmployeeStatus também contém uma chave externa para Employee_Payroll. A exibição EmployeeStatus está conectada a uma exibição com uma seta cinza EmployeeType. A seta indica um tipo de relacionamento entre as exibições. A exibição EmployeeType contém um EmployeeType que consiste em EmployeeName e employeeNumber.

Documentos relacionados