Para configurar columnas XML, debe definir el archivo DAD para acceder a los datos XML y habilitar columnas para datos XML en una tabla XML. Un concepto importante en la creación de la DAD es la comprensión de la sintaxis de la vía de acceso a la ubicación puesto que se utiliza para correlacionar el elemento y los valores de atributo que desea indexar a las tablas DB2. Vea Vía de ubicación para obtener más información sobre la vía de acceso a la ubicación y su sintaxis.
Cuando especifica un archivo DAD, define los atributos y elementos esenciales de los datos que deben buscarse. El XML Extender utiliza esta información para crear tablas secundarias, que permiten al usuario indexar los datos para acceder a ellos con rapidez. Vea El archivo DAD para conocer cuestiones de planificación referentes a la creación del archivo DAD.
Siga los pasos siguientes para crear un archivo DAD:
Si no ha importado ninguna DTD al depósito de DTD de la base de datos, no podrá validar documentos XML.
Para añadir una nueva tabla secundaria, defina las columnas de la tabla. Realice los pasos siguientes para cada columna de una tabla secundaria.
ORDER_SIDE_TAB
CUSTOMER_NAME
XMLVARCHAR
30
/ORDER/CUSTOMER/NAMEVea Vía de ubicación para obtener la sintaxis de la vía de acceso a la ubicación.
Indica si la vía de acceso a la ubicación de este elemento o atributo se puede utilizar más de una vez en un documento.
Importante Si especifica aparición múltiple para una columna, puede especificar sólo una columna en la tabla secundaria que contenga la columna.
Puede actualizar una tabla secundaria cambiando las definiciones de las columnas existentes.
Para eliminar toda una tabla secundaria, suprima cada columna de la tabla.
El archivo DAD es un archivo XML que se puede crear en un editor de texto cualquiera.
Siga los pasos siguientes para crear un archivo DAD:
<?xml versión="1.0"?> <!DOCTYPE DAD SYSTEM "path\dtd\dad.dtd"> --> vía de acceso y nombre de archivo de la DTD para el archivo DAD
<dtdid>vía\nombre_dtd.dtd</dtdid> --> vía de acceso y nombre de archivo de la DTD para la aplicación
El ID de DTD es necesario para la validación y debe coincidir con el valor de ID de DTD que se utiliza cuando se inserta la DTD en la tabla de referencia de DTD (db2xml.DTD_REF).
<validation>SÍ</validation> --> especifique YES o NO
Si especifica SÍ, es necesario que haya especificado un DTDID en el paso anterior y que haya insertado una DTD en la tabla DTD_REF.
<Xcolumn> </Xcolumn>
<table name="order_tab"> </table>
<table ...> <column name="order_key" type="integer" path="/Order/@key" multi_occurrence="NO"/> <column name="customer" type="varchar(50)" path="/Order/Customer/Name" multi_occurrence="NO"/> </table>
Para guardar documentos XML inalterados en una tabla, debe crear o modificar una tabla que contiene una columna con un tipo definido por el usuario (UDT) XML. Esta tabla se denomina tabla XML, y es una tabla que contiene documentos XML. La tabla puede ser una tabla alterada o una tabla nueva. Cuando una tabla contiene una columna de tipo XML, puede habilitar la columna para XML.
Puede modificar una tabla existente con una columna de tipo XML utilizando el asistente de administración o utilizando el shell de mandatos de DB2.
SALES_DB
ORDER
XMLVARCHAR
Cree o modifique una tabla con una columna de tipo XML en la cláusula de columna de la sentencia CREATE TABLE o ALTER TABLE.
Ejemplo: En la aplicación ventas, puede almacenar un pedido, utilizando un formato de línea XML, en una columna llamada ORDER de una tabla de aplicación llamada SALES_TAB. Esta tabla también tiene las columnas INVOICE_NUM y SALES_PERSON. Debido a que es un pedido pequeño, para almacenarlo puede utilizar el tipo XMLVARCHAR. La clave primaria es INVOICE_NUM. La siguiente sentencia CREATE TABLE crea la tabla con una columna de tipo XML:
CREATE TABLE sales_tab( invoice_num char(6) NOT NULL PRIMARY KEY, sales_person varchar(20), order XMLVarchar);
Para guardar un documento XML en una base de datos DB2, debe habilitar una columna para XML. La habilitación de una columna permite indexarla para poder buscarla con rapidez. Puede habilitar una columna mediante el asistente de administración del XML Extender o utilizando el shell de mandatos de DB2. La columna debe ser de tipo XML.
Cuando el XML Extender habilita una columna XML, realiza estas acciones:
Después de habilitar la columna XML, puede
Puede crear una tabla XML creando o alterando una tabla DB2 que contenga una columna que sea un UDT de XML.
Siga los pasos siguientes para habilitar columnas XML:
SALES_TAB
ORDERLa columna debe existir y ser de tipo XML.
c:\dxx\samples\dad\getstart.dad
El espacio de tablas contiene las tablas secundarias que el XML Extender creó. Si especifica un espacio de tablas, las tablas secundarias se crean en el espacio de tablas especificado. Si no especifica ningún espacio de tablas, las tablas secundarias se crean en el espacio de tablas por omisión.
Si se especifica, la vista por omisión se crea automáticamente cuando se habilita la columna y se une la tabla XML y todas las tablas secundarias relacionadas.
El XML Extender utiliza el valor de ID RAÍZ como un identificador exclusivo para asociar todas las tablas secundarias con la tabla de aplicación. Si no se especifica el ID raíz, el XML Extender añade la columna DXXROOT_ID a la tabla de aplicación y genera un identificador.
Para habilitar una columna XML, entre el mandato siguiente:
Sintaxis:
dxxadm enable_column |
---|
>>-dxxadm---enable_column---nombreBd---nombreTb---nombreCol-----> >----archivo_DAD----+--------------------+----------------------> '--t--espaciotablas--' >-----+------------------------+---+--------------+------------>< '--v--vista_predefinida--' '--r--id_raíz--' |
Parámetros:
Restricción: Si la tabla de aplicación tiene una columna llamada DXXROOT_ID, pero esta columna no contiene el valor de id_raíz, debe especificar este parámetro; de lo contrario se produce un error.
Ejemplo: El ejemplo siguiente habilita una columna utilizando el shell de mandatos de DB2. El archivo DAD y el documento XML se pueden encontrar en el Apéndice B, Ejemplos.
dxxadm enable_column SALES_DB sales_tab order getstart.dad -v sales_order_view -r invoice_num
Este ejemplo habilita la columna ORDER de la tabla SALES_DB.SALES_TAB. El archivo DAD es getstart.dad, la vista por omisión es sales_order_view y el ID RAÍZ es INVOICE_NUM.
De acuerdo con este ejemplo, la tabla SALES_TAB tiene el esquema
siguiente:
Nombre de columna | INVOICE_NUM | SALES_PERSON | ORDER |
---|---|---|---|
Tipo de datos | CHAR(6) | VARCHAR(20) | XMLVARCHAR |
De acuerdo con la especificación DAD, se crean las tabla secundarias siguientes:
ORDER_SIDE_TAB:
Nombre de columna | ORDER_KEY | CUSTOMER | INVOICE_NUM |
---|---|---|---|
Tipo de datos | INTEGER | VARCHAR(50) | CHAR(6) |
Vía de acceso | /Pedido/@clave | /Pedido/Cliente/Nombre | N/D |
TAB_SECUND_PIEZAS:
Nombre de columna | PART_KEY | PRICE | INVOICE_NUM |
---|---|---|---|
Tipo de datos | INTEGER | DOUBLE | CHAR(6) |
Vía de acceso | /Order/Part/@key | /Order/Part/ExtendedPrice | N/D |
SHIP_SIDE_TAB:
Nombre de columna | FECHA | INVOICE_NUM |
---|---|---|
Tipo de datos | FECHA | CHAR(6) |
Vía de acceso | /Order/Part/Shipment/ShipDate | N/D |
Todas las tablas secundarias tienen la columna INVOICE_NUM del mismo tipo, pues la clave primaria INVOICE_NUM especifica el ID RAÍZ en la tabla de aplicación. Una vez habilitada la columna, el valor de INVOICE_NUM se inserta en las tablas secundarias. Si especifica el parámetro vista_predefinida al habilitar la columna XML, ORDER, se crea la vista predefinida sales_order_view. La vista asocia las tablas anteriores utilizando la sentencia siguiente:
CREATE VIEW sales_order_view(invoice_num, sales_person, order, order_key, customer, port_key, price, date) AS SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order, order_tab.order_key, order_tab.customer, part_tab.part_key, part_tab.price, ship_tab.date FROM sales_tab, order_tab, part_tab, ship_tab WHERE sales_tab.invoice_num = order_tab.invoice_num AND sales_tab.invoice_num = part_tab.invoice_num AND sales_tab.invoice_num = ship_tab.invoice_numSi el espacio de tablas se especifica en el mandato enable_column, las tablas secundarias se crean en el espacio de tablas especificado. Si el espacio de tablas no se especifica, las tablas secundarias se crean en el espacio de tablas predefinido.
Después de habilitar una columna XML y crear las tablas secundarias, puede indexar las tablas secundarias. Las tablas secundarias contienen los datos XML en las columnas que ha especificado cuando ha creado el archivo DAD. La indexación de estas tablas ayuda a mejorar el rendimiento de las consultas de documentos XML.
Utilice el mandato DB2 CREATE INDEX.
Ejemplo:
En el ejemplo siguiente se crean índices en cuatro tablas secundarias:
DB2 CREATE INDEX KEY_IDX ON ORDER_SIDE_TAB(ORDER_KEY) DB2 CREATE INDEX CUSTOMER_IDX ON ORDER_SIDE_TAB(CUSTOMER) DB2 CREATE INDEX PRICE_IDX ON PART_SIDE_TAB(PRICE) DB2 CREATE INDEX DATE_IDX ON SHIP_SIDE_TAB(DATE)
Inhabilite una columna si necesita actualizar un archivo DAD para la columna XML o si desea suprimir la columna XML o la tabla que contiene la columna. Una vez inhabilitada la columna, puede volver a habilitar la columna con el archivo DAD actualizado, suprimir la columna o llevar a cabo otras tareas. Puede inhabilitar una columna utilizando el asistente de administración del XML Extender o utilizando el shell de mandatos de DB2.
Cuando el XML Extender habilita una columna XML, realiza estas acciones:
Importante: Si elimina una tabla con una columna XML, sin inhabilitar primero la columna, el XML Extender no puede eliminar ninguna tabla secundaria asociada con la columna XML, lo que podría generar resultados inesperados.
Asegúrese de que la columna XML que debe inhabilitarse exista en la base de datos DB2 actual.
Realice los pasos siguientes para inhabilitar columnas XML:
Para inhabilitar una columna XML, entre el mandato siguiente:
Sintaxis:
dxxadm disable_column |
---|
>>-dxxadm---disable_column---nombreBd---nombreTb---nombreCol--->< |
Parámetros:
Ejemplo: En el ejemplo siguiente se inhabilita una columna utilizando el shell de mandatos de DB2. El archivo DAD y el documento XML se pueden encontrar en el Apéndice B, Ejemplos.
dxxadm disable_column SALES_DB sales_tab order
En este ejemplo, se inhabilita la columna ORDER de la tabla SALES_DB.SALES_TAB.
Cuando la columna está inhabilitada, las tablas secundarias se eliminan.