Relaciones de BD
Después de agregar una base de datos como componente de origen a su asignación de datos, cada tabla aparece como la tabla raíz (ver imagen siguiente). Cuando hace clic en el icono plus de una tabla raíz, puede ver todas las tablas relacionadas bajo la tabla raíz. El componente de BD que se ve a continuación muestra dos tipos de flechas que tienen el siguiente significado:
•La flecha hacia la izquierda ( ) indica que la tabla Books es una tabla secundaria de la tabla Authors.
•La flecha hacia la derecha ( ) muestra que la tabla Authors es la tabla principal de la tabla Books.
Structure of BookCatalog.sqlite
Puede usar varios tipos de asignaciones de datos, dependiendo de sus necesidades empresariales. A continuación presentamos algunos casos posibles. Todos los casos descritos a continuación presentan una base de datos jerárquica llamada BookCatalog.sqlite. La base de datos tiene dos tablas (Authors y Books) que tienen una relación de clave foránea. En la imagen siguiente se puede ver que la tabla Books tiene una clave foránea llama AuthorID que hace referencia a la clave primaria en la tabla Authors.
Datos de muestra de BookCatalog.sqlite
A continuación se pueden ver extractos de las tablas Authors y Books:
Tabla Authors
Tabla Books
Caso 1: Preservar la jerarquía
En nuestro primer caso, asignamos datos desde BookCatalog.sqlite a Authors.xsd (ver imagen siguiente). En esta asignación, Authors es la tabla raíz. El objetivo es preservar la relación jerárquica y obtener todos los autores con sus libros correspondientes en los resultados.
El siguiente extracto de código muestra una parte de los resultados:
<Authors>
<Author ID="23">
<Name>Fredrik Backman</Name>
<Country>Sweden</Country>
<Website>www.fredrikbackmanbooks.com</Website>
<Publications>
<Publication ID="26">
<Title>Anxious People</Title>
<ISBN>978-1-4059-3025-3</ISBN>
<Publisher>Penguin Books Ltd</Publisher>
<PrintLength>416</PrintLength>
<Year>2021</Year>
<Genre>Humor</Genre>
<Price>9.99</Price>
</Publication>
<Publication ID="27">
<Title>A Man Called Ove</Title>
<ISBN>9781444775815</ISBN>
<Publisher>Sceptre</Publisher>
<PrintLength>320</PrintLength>
<Year>2015</Year>
<Genre>Humor</Genre>
<Price>11.46</Price>
</Publication>
</Publications>
</Author>
</Authors>
Caso 2: Intercambiar las tablas
En el segundo caso, el objetivo es obtener una lista de libros y sus detalles en el archivo de salida. Para conseguir el objetivo, usaremos Books como tabla raíz. Se mantendrán las relaciones de tabla. El diseño de la asignación tiene este aspecto:
El siguiente extracto de código muestra una parte de los resultados:
<Books>
<Book ID="3">
<Title>Blackout</Title>
<Author>Ragnar Jonasson</Author>
<AuthorID>2</AuthorID>
<ISBN>1910633461</ISBN>
<Publisher>Orenda Books</Publisher>
<PrintLength>276</PrintLength>
<Year>2016</Year>
<Genre>Crime & Mystery</Genre>
<Price>8.49</Price>
</Book>
<Book ID="4">
<Title>Outsider</Title>
<Author>Stephen King</Author>
<AuthorID>1</AuthorID>
<ISBN>1501180983</ISBN>
<Publisher>Scribner</Publisher>
<PrintLength>576</PrintLength>
<Year>2018</Year>
<Genre>Horror</Genre>
<Price>12.79</Price>
</Book>
</Books>
Caso 3: Asignar datos de BD desde diferentes tablas raíz
En el tercer caso, asignaremos datos desde cada tabla raíz del componente de BD a Authors.xsd (ver imagen siguiente). Se omitirán las tablas relacionadas.
Como resultado, cada libro, independientemente de su autor/a, aparecerá bajo cada autor/a (ver el siguiente extracto de código).
<Author ID="19">
<Name>Sebastian Fitzek</Name>
<Country>Germany</Country>
<Website>www.sebastianfitzek.com</Website>
<Publications>
<Publication ID="1">
<Title>Misery</Title>
<ISBN>1501143107</ISBN>
<Publisher>Scribner</Publisher>
<PrintLength>368</PrintLength>
<Year>2016</Year>
<Genre>Horror</Genre>
<Price>11.99</Price>
</Publication>
<Publication ID="2">
<Title>Nightblind</Title>
<ISBN>9781910633113</ISBN>
<Publisher>Orenda Books</Publisher>
<PrintLength>231</PrintLength>
<Year>2016</Year>
<Genre>Crime & Mystery</Genre>
<Price>9.99</Price>
</Publication>
<Publication ID="3">...</Publication>
<Publication ID="4">...</Publication>
<Publication ID="5">...</Publication>
<Publication ID="6">...</Publication>
<Publication ID="7">...</Publication>
<Publication ID="8">...</Publication>
</Publications>
</Author>
Caso 4: Asignar datos de BD a estructuras SQL/XML
En el cuarto caso, el objetivo es asignar datos de BD a una estructura de esquema plana/nivelada (estándar SQL/XML). El modelo de esquema plano se basa en la especificación ISO-ANSI SQL/XML INCITS/ISO/IEC 9075-14-2008. La especificación SQL/XML define cómo se asignan datos de BD a XML. Las relaciones se definen en esquemas por medio de restricciones de identidad y no hay referencias a los elementos. Por tanto, el esquema tiene una estructura plana o nivelada, similar a la vista en forma de árbol de la BD. Puede comprar la especificación en la tienda web de ANSI. Para más información, consulte www.iso.org.
La siguiente asignación muestra cómo se asignan datos de BD desde diferentes tablas raíz a una estructura plana o nivelada SQL/XML. Se omiten las tablas relacionadas. También es posible asignar datos de BD desde tablas relacionadas. Sin embargo, si algunos registros Book no son de ningun/a Author, estos registros Book no se asignarán al destino.
Como resultado, obtendremos una lista de filas Author y una lista separada de filas Book (ver imagen siguiente).
<Author>
<row>
<ID>1</ID>
<Name>Stephen King</Name>
<Country>US</Country>
</row>
<row>
<ID>2</ID>
<Name>Ragnar Jonasson</Name>
<Country>Iceland</Country>
</row>
<row>...</row>
<row>...</row>
</Author>
<Book>
<row>
<Title>Misery</Title>
<BookID>1</BookID>
<AuthorID>1</AuthorID>
<ISBN>1501143107</ISBN>
<Publisher>Scribner</Publisher>
<PrintLength>368</PrintLength>
<Year>2016</Year>
<Genre>Horror</Genre>
<Price>11.99</Price>
</row>
<row>
<Title>Nightblind</Title>
<BookID>2</BookID>
<AuthorID>2</AuthorID>
<ISBN>9781910633113</ISBN>
<Publisher>Orenda Books</Publisher>
<PrintLength>231</PrintLength>
<Year>2016</Year>
<Genre>Crime & Mystery</Genre>
<Price>9.99</Price>
</row>
<row>...</row>
<row>...</row>
</Book>
Para más información sobre este caso, consulte también la siguiente asignación: MapForceExamples\DB_Altova_SQLXML.mfd.