IBM Books

Extension XML Administration et programmation

Activation de colonnes XML

Pour pouvoir stocker un document XML dans une base de données DB2, vous devez activer une colonne pour l'Extension XML. Lorsque vous activez une colonne, vous la préparez en vue de son indexation pour optimiser les recherches. Vous pouvez activer une colonne à l'aide de l'assistant d'administration de l'Extension XML ou du shell de commandes DB2. Le colonne doit être de type XML.

Lorsque DB2 Extension XML active une colonne XML, il exécute les tâches suivantes :

Une fois la colonne XML activée, vous pouvez effectuer les tâches suivantes :

Avant de commencer

Générez une table XML en créant ou en modifiant une table DB2 dotée d'une colonne de type UDT XML.

A l'aide de l'assistant d'administration

Pour activer des colonnes XML :

  1. Configurez et démarrez l'assistant d'administration. Pour plus d'informations, reportez-vous à la section Démarrage de l'assistant d'administration.
  2. A partir du tableau de bord, cliquez sur Utilisation des colonnes XML pour afficher les tâches liées aux colonnes de l'Extension XML. La fenêtre Sélection d'une tâche s'affiche.
  3. Cliquez sur Activation d'une colonne puis sur Suivant, pour activer une colonne de table existant dans la base de données.
  4. Dans la zone Nom de la table, sélectionnez la table qui contient la colonne XML. Par exemple :
    SALES_TAB
    
  5. Dans la zone Nom de la colonne, sélectionnez la colonne à activer. Par exemple :
    ORDER
    
    Il doit s'agir d'une colonne existante de type XML.
  6. Tapez le chemin et le nom du fichier DAD dans la zone Nom de fichier DAD, ou cliquez sur ... pour parcourir la liste des DAD disponibles. Par exemple :
    c:\dxx\samples\dad\getstart.dad
    
  7. Vous pouvez également indiquer dans la zone Espace table le nom d'un espace table existant.

    L'espace table contient les tables annexes générées par l'Extension XML. Les tables annexes sont créées dans l'espace table que vous précisez, ou dans l'espace table par défaut, si vous n'en indiquez aucun.

  8. Vous pouvez également indiquer dans la zone Vue par défaut le nom de la vue par défaut.

    Si vous l'indiquez, la vue par défaut est automatiquement générée lors de la création de la colonne. Elle effectue la jointure de la table XML et de toutes ses tables annexes.

  9. Vous pouvez également indiquer dans la zone ID racine (ROOT ID) le nom de colonne de la clé primaire figurant dans la table d'application. Cette méthode est recommandée.

    L'Extension XML utilise la valeur ROOT ID en tant qu'identificateur unique pour associer toutes les tables annexes à la table d'application. Si vous n'indiquez aucun ID racine, l'Extension XML ajoute une colonne DXXROOT_ID dans la table d'application et génère un identificateur par défaut.

  10. Cliquez sur Fin pour activer la colonne XML, créer les tables annexes et revenir au tableau de bord.

A partir du shell de commandes DB2

Pour activer une colonne XML, entrez la commande suivante :

Syntaxe :
dxxadm enable_column
>>-dxxadm---enable_column---dbName---tbName---colName----------->
 
>----DAD_file----+-----------------+---+-------------------+---->
                 '--t--tablespace--'   '--v--default_view--'
 
>-----+--------------+-----------------------------------------><
      '--r--root_id--'
 

Paramètres :

dbName
Nom de la base de données.

tbName
Nom de la table contenant la colonne à activer.

colName
Nom de la colonne XML activée.

DAD_file
Nom du fichier contenant la DAD (définition d'accès au document).

tablespace
Espace table existant contenant les tables annexes générées par Extension XML. Si vous laissez cette zone à blanc, l'Extension XML utilise un espace table par défaut.

default_view
Facultatif. Nom de la vue par défaut créée par Extension XML pour réaliser la jointure de la table d'application et de toutes ses tables annexes.

root_id
Facultatif. Nom de colonne de la clé primaire appartenant à la table d'application et identificateur unique associant toutes les tables annexes à cette table d'application. Nous vous recommandons d'indiquer la valeur ROOT ID. Si vous ne le faites pas, l'Extension XML ajoute une colonne DXXROOT_ID dans la table d'application et génère un identificateur par défaut.

Restriction : Si la table d'application comporte une colonne DXXROOT_ID, mais que celle-ci ne contient pas de valeur pour le paramètre root_id, vous devez définir cet identificateur racine sinon une erreur se produit.

Exemple : L'exemple ci-après illustre l'activation d'une colonne à partir du shell de commandes DB2. Le fichier DAD et le document XML se trouvent à l'Annexe B, Exemples.

dxxadm enable_column SALES_DB sales_tab order getstart.dad
            -v sales_order_view -r invoice_num
 
 

Dans cet exemple, la colonne ORDER est activée dans la table SALES_DB.SALES_TAB. Soient un fichier DAD getstart.dad, une vue par défaut sales_order_view et une valeur ROOT ID INVOICE_NUM.

Le schéma de la table SALES_TAB est désormais le suivant :
Nom de colonne INVOICE_NUM SALES_PERSON ORDER
Type de données CHAR(6) VARCHAR(20) XMLVARCHAR

Les tables annexes suivantes sont créées en fonction de la définition DAD :

ORDER_SIDE_TAB :
Nom de colonne ORDER_KEY CUSTOMER INVOICE_NUM
Type de données INTEGER VARCHAR(50) CHAR(6)
Chemin d'accès /Order/@key /Order/Customer/Name Non applicable

PART_SIDE_TAB :
Nom de colonne PART_KEY PRICE INVOICE_NUM
Type de données INTEGER DOUBLE CHAR(6)
Chemin d'accès /Order/Part/@key /Order/Part/ExtendedPrice Non applicable

SHIP_SIDE_TAB :
Nom de colonne DATE INVOICE_NUM
Type de données DATE CHAR(6)
Chemin d'accès /Order/Part/Shipment/ShipDate N/A

Toutes les tables annexes possèdent une colonne INVOICE_NUM de même type car la valeur du paramètre ROOT ID est indiquée par la clé primaire INVOICE_NUM de la table d'application. Une fois la colonne activée, la valeur INVOICE_NUM est insérée dans les tables annexes. La définition du paramètre default_view lors de l'activation de la colonne XML ORDER entraîne la création de la vue par défaut sales_order_view. Cette vue réalise la jointure des tables ci-dessus à l'aide de l'instruction suivante :

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_num
Si vous précisez un espace table dans la commande enable_column, les tables annexes sont créés dans celui-ci. Si vous n'indiquez aucun espace table, les tables annexes sont créées dans l'espace table par défaut.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]