Per impostare le colonne XML, è necessario definire il file DAD per accedere ai dati XML e per abilitare le colonne per questi dati in una tabella XML. Un importante concetto nella creazione della DAD è la comprensione della sintassi del percorso di ubicazione, in quanto viene utilizzata per associare i valori dell'elemento e dell'attributo alle tabelle DB2. Per ulteriori informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione.
Quando si specifica un file DAD, vengono definiti gli attributi e gli elementi chiave dei dati che si desidera ricercare. XML Extender utilizza queste informazioni per creare le tabelle laterali in cui vengono ordinati i dati per poterli richiamare velocemente. Per ulteriori informazioni sulla pianificazione della creazione del file DAD, consultare la sezione File DAD.
Eseguire i passi riportati di seguito per creare un file DAD:
Se non è stata importata alcuna DTD nel magazzino DTD del database, non è possibile convalidare i documenti XML.
Per aggiungere una nuova tabella laterale, definire le colonne nella tabella. Completare i passi riportati di seguito per ciascuna colonna in una tabella laterale.
ORDER_SIDE_TAB
CUSTOMER_NAME
XMLVARCHAR
30
/ORDER/CUSTOMER/NAMEPer informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione.
Indica se il percorso di ubicazione di questo elemento o attributo può essere utilizzato più volte all'interno di un documento.
Importante: Se si specifica l'opzione Più ricorrenze per una colonna, è possibile specificare solo una colonna all'interno della tabella laterale contenente tale colonna.
E' possibile aggiornare una tabella laterale modificando le definizioni delle colonne esistenti.
Per eliminare un'intera tabella laterale, è necessario cancellare tutte le colonne della tabella.
Il file DAD è un file XML che può essere creato in qualsiasi editor di testo.
Eseguire i passi riportati di seguito per creare un file DAD:
<?xml version="1.0"?> <!DOCTYPE DAD SYSTEM "path\dtd\dad.dtd"> --> il percorso e il nome file della DTD per il file DAD
<dtdid>path\dtd_name.dtd</dtdid> --> il percorso e il nome file della DTD per l'applicazione
L'ID DTD è richiesto per la convalida e deve corrispondere al valore dell'ID DTD utilizzato per l'inserimento della DTD nella tabella di riferimento DTD (db2xml.DTD_REF).
<validation>YES</validation> --> specificare Sì o No
Se si specifica Sì, è necessario che nel passo precedente sia stato specificato un ID DTD e che una DTD sia stata inserita nella tabella 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>
Per memorizzare documenti XML intatti in una tabella, è necessario creare o modificare una tabella in modo da contenere una colonna con un UDT XML. La tabella è nota come tabella XML contenente documenti XML. La tabella non può essere una tabella modificata o nuova. Quando una tabella contiene una colonna di tipo XML, è possibile abilitare la colonna per XML.
E' possibile modificare una tabella esistente con una colonna di tipo XML utilizzando il wizard di gestione o la shell dei comandi DB2.
SALES_DB
ORDER
XMLVARCHAR
Creare o modificare una tabella con una colonna di tipo XML nella clausola dell'istruzione CREATE TABLE o ALTER TABLE.
Esempio: Nell'applicazione sales, è possibile memorizzare un ordine di righe formattate da XML nella colonna ORDER di una tabella applicativa denominata SALES_TAB. Questa tabella contiene anche le colonne INVOICE_NUM e SALES_PERSON. Poiché si tratta di un ordine di piccole dimensioni, memorizzarlo utilizzando il tipo XMLVARCHAR. La chiave primaria è INVOICE_NUM. La seguente istruzione CREATE TABLE crea la tabella con una colonna di tipo XML:
CREATE TABLE sales_tab( invoice_num char(6) NOT NULL PRIMARY KEY, sales_person varchar(20), order XMLVarchar);
Per memorizzare un documento XML in un database DB2, occorre abilitare una colonna per XML. L'abilitazione di una colonna comporta la creazione di un indice in modo da eseguire ricerche più veloci. E' possibile abilitare una colonna utilizzando il wizard di gestione XML Extender o la shell dei comandi DB2. La colonna deve essere di tipo XML.
Per abilitare una colonna XML, XML Extender:
Dopo aver abilitato la colonna XML, sarà possibile:
Creare una tabella XML generando o modificando una tabella DB2 con una colonna UDT XML.
Eseguire i passi riportati di seguito per abilitare le colonne XML:
SALES_TAB
ORDERLa colonna deve esistere ed essere di tipo XML.
c:\dxx\samples\dad\getstart.dad
Il table space contiene tabelle laterali create da XML Extender. Se si specifica un table space, le tabelle laterali vengono create nel table space specificato. Se non si specifica un table space, le tabelle laterali vengono create nel table space predefinito.
Quando specificato, la vista predefinita viene creata automaticamente quando la colonna viene abilitata e unisce la tabella XML e tutte le relative tabelle laterali.
XML Extender utilizza il valore ID ROOT come identificativo univoco per associare tutte le tabelle laterali alla tabella applicativa. Se non è specificato, XML Extender aggiunge la colonna DXXROOT_ID alla tabella applicativa e genera un identificativo.
Per abilitare una colonna XML, immettere il seguente comando:
Sintassi:
dxxadm enable_column |
---|
>>-dxxadm---enable_column---dbName---tbName---colName-----------> >----DAD_file----+-----------------+---+-------------------+----> '--t--tablespace--' '--v--default_view--' >-----+--------------+----------------------------------------->< '--r--root_id--' |
Parametri:
Limitazione: Se la tabella applicativa contiene il nome colonna DXXROOT_ID, ma questa colonna non presenta alcun valore per root_id, è necessario specificare il parametro root_id, altrimenti si verificherà un errore.
Esempio: Il seguente esempio consente di abilitare una colonna utilizzando la shell dei comandi DB2. Il file DAD e il documento XML possono essere trovati nell'Appendice B, Esempi.
dxxadm enable_column SALES_DB sales_tab order getstart.dad -v sales_order_view -r invoice_num
In questo esempio, la colonna ORDER è abilitata nella tabella SALES_DB.SALES_TAB. Il file DAD è getstart.dad, la vista predefinita è sales_order_view e l'ID ROOT è INVOICE_NUM.
In questo esempio la tabella SALES_TAB presenta il seguente schema:
Nome colonna | INVOICE_NUM | SALES_PERSON | ORDER |
---|---|---|---|
Tipo di dati | CHAR(6) | VARCHAR(20) | XMLVARCHAR |
Le seguenti tabelle laterali vengono create in base alla specifica DAD:
ORDER_SIDE_TAB:
Nome colonna | ORDER_KEY | CUSTOMER | INVOICE_NUM |
---|---|---|---|
Tipo di dati | INTEGER | VARCHAR(50) | CHAR(6) |
Espressione percorso | /Order/@key | /Order/Customer/Name | N/D |
PART_SIDE_TAB:
Nome colonna | PART_KEY | PRICE | INVOICE_NUM |
---|---|---|---|
Tipo di dati | INTEGER | DOUBLE | CHAR(6) |
Espressione percorso | /Order/Part/@key | /Order/Part/ExtendedPrice | N/D |
SHIP_SIDE_TAB:
Nome colonna | DATE | INVOICE_NUM |
---|---|---|
Tipo di dati | DATE | CHAR(6) |
Espressione percorso | /Order/Part/Shipment/ShipDate | N/D |
Tutte le tabelle laterali hanno lo stesso tipo di colonna INVOICE_NUM, perché l'ID ROOT è stato specificato dalla chiave primaria INVOICE_NUM nella tabella applicativa. Dopo aver abilitato la colonna, il valore INVOICE_NUM viene inserito nelle tabelle laterali. Se si specifica il parametro default_view durante l'abilitazione della colonna XML, ORDER, viene creata la vista predefinita sales_order_view. Questa vita associa le tabelle precedenti utilizzando la seguente istruzione:
CREATE VIEW sales_order_view(invoice_num, sales_person, order, order_key, customer, part_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_numSe il table space viene specificato nel comando enable_column, le tabelle laterali vengono create nel table space specificato. Se non viene specificato alcun table space, le tabelle laterali vengono create nel table space predefinito.
Dopo aver abilitato una colonna XML e creato le tabelle laterali, è possibile creare un indice per le tabelle laterali. Le tabelle laterali contengono dati XML nelle colonne specificate durante la creazione del file DAD. L'indicizzazione di queste tabelle ottimizza le prestazioni delle interrogazioni per i documenti XML.
Utilizzare il comando DB2 CREATE INDEX.
Esempio:
Il seguente esempio consente di creare gli indici in quattro tabelle laterali:
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)
Disabilitare una colonna se occorre aggiornare un file DAD per la colonna XML o se si desidera cancellare la colonna XML o la tabella che contiene la colonna. Dopo aver disabilitato la colonna, è possibile riabilitarla con il file DAD aggiornato, cancellarla o eseguire altre attività. E' possibile disabilitare una colonna utilizzando il wizard di gestione XML Extender o la shell dei comandi DB2.
Per abilitare una colonna XML, XML Extender:
Importante: Se si cancella una tabella con una colonna XML, senza disabilitare la colonna, XML Extender non può cancellare le tabelle laterali associate alla colonna XML, altrimenti potrebbero verificarsi risultati non previsti.
Verificare se la colonna che si desidera disabilitare esiste nel database DB2 corrente.
Eseguire i passi riportati di seguito per disabilitare le colonne XML:
Per disabilitare una colonna XML, immettere il seguente comando:
Sintassi:
dxxadm disable_column |
---|
>>-dxxadm---disable_column---dbName---tbName---colName--------->< |
Parametri:
Esempio: Il seguente esempio consente di disabilitare una colonna utilizzando la shell dei comandi DB2. Il file DAD e il documento XML possono essere trovati nell'Appendice B, Esempi.
dxxadm disable_column SALES_DB sales_tab order
In questo esempio, la colonna ORDER viene disabilitata nella tabella SALES_DB.SALES_TAB.
Quando la colonna viene disabilitata, vengono cancellate le tabelle laterali.