Rational Programming Patterns for System z

Lignes -DR dans un Bloc Base de Données

Dans l'onglet Lignes -DR, vous décrivez les objets SQL qui composent la base de données (Tables, Vues, Index...). Une section Définition de la ligne -DR permet d'indiquer le type de l'objet, son nom externe, le code du Segment qui le représente, le type de clé supporté par le Segment et le code de génération.

Définition d'une ligne -DR

Les sections Définition de la ligne -DR et Lignes -GG s'affichent simultanément lorsqu'une ligne de description est créée ou sélectionnée dans la liste des Lignes -DR.
Type de record SQL
Cette zone vous permet de saisir le type de l'objet SQL. Le contenu de la liste est conditionné par le type de Bloc sélectionné dans la Définition du Bloc de Base de Données.
Certains objets SQL ne sont pas pris en compte pour des types de Blocs donnés :
  • L'objet Espace n'est pas pris en compte dans SQL SERVER, NONSTOP SQL, DBD2/D2, DB2/600, INTEREL RDBC, INTEREL RFM, SYBASE. Pour ALLBASE/SQL, la notion d'Espace a été assimilée à la notion de DBEfileset.
  • L'objet Alter Table n'est pas pris en compte dans un Bloc de type INTEREL RFM, seul l'ajout de colonne est possible.
  • L'objet Primary Key n'est pas pris en compte dans NONSTOP SQL, ORACLE (versions antérieures à la V6), INTEREL RDBC, INTEREL RFM.
D'autres objets SQL sont exclusivement pris en compte dans ORACLE V7, SYBASE et SQL SERVER :
  • Package : package de fonction et de procédures,
  • Fonction,
  • Procédure,
  • Trigger.

Les objets appartiennent à l'espace qui les précède. Un Alter Table doit être précédé de la ligne appelant la Table qu'il modifie. Un Index doit être précédé de la ligne appelant la Table à laquelle il se rapporte. De même, une Primary key ou Foreign key doit être précédée d'une ligne Table portant le même code Table. Il n'est pas possible de créer un Index sur une Vue; l'ordre CREATE INDEX généré sera rejeté lors de la mise à jour du catalogue. Pour les Blocs de type RDMS et ALLBASE/SQL, la Primary Key n'est pas générée par une ligne dont le type d'objet est Index; sa génération est incluse dans celle de la Table qui le précède (ligne T). Le type d'une ligne Index, Primary key ou Foreign key ne peut être modifié. Il est nécessaire d'annuler la ligne puis de la recréer avec un autre type. De même, le code Table indiqué sur une ligne Index, Primary key ou Alter ne peut être modifié.

Tableau 1. Liste des objets SQL
Valeurs Description
P : Package Espace Table (sauf pour INTEREL RDBC, INTEREL RFM, NONSTOP SQL, SYBASE et SQL SERVER)
T : Table Table
V : Vue Vue
I : Index Index
A : Alter table Alter Table : Mise à jour colonnes
K : Primary key RDMS : prise en compte lors de la génération de la table qui la précède.

DB2, DATACOM/DB, SQL/DS, ORACLE V6 V7, DB2/2, DB2/6000, SYBASE et SQL SERVER : prise en compte lors de la génération par un ordre Alter table.

J : Foreign key DB2, DATACOM/DB, SQL/DS, ORACLE V6 et V7, SYBASE et SQL SERVER : prise en compte lors de la génération par un ordre Alter table
C : Package Package (uniquement ORACLE V7 )
E : Fonction Fonction (uniquement ORACLE V7)
Q : Procédure Procédure (uniquement ORACLE V7, SYBASE, SQL SERVER)
R : Trigger ORACLE V7, SYBASE et SQL SERVER: Trigger
Nom externe
Saisissez dans cette zone le nom manipulé par l'utilisateur. Il est obligatoire pour un Espace Table. Par contre il est interdit pour une Primary Key dans les Blocs de type DB2, DB2/2, DB2/6000 or DATACOM/DB). Pour les autres types, le nom externe peut être défini à plusieurs niveaux (type P ). Pour les autres types, le nom externe peut être défini à plusieurs niveaux. A la génération, le nom externe est généré par priorité dans l'ordre suivant :
  • Le nom indiqué à ce niveau,
  • Ou bien, le nom indiqué dans le Code Structure du Segment définissant l'objet concerné qui est pris en compte,
  • Ou encore, le code du Segment définissant l'objet concerné qui est pris en compte en dernier lieu.
Pour une Foreign Key, deux codes séparés sont nécessaires : le nom de la contrainte (8 caractères maximum) et le code Segment de la Table référencée, c'est-à-dire, le code Segment de ligne Table qui précède la ligne Foreign key.
Mode de préfixation :
  • La présence d'un point dans le nom externe d'une Table ou Vue conditionnera le mode de préfixation pour DB2, SQL/DS, DB2/2 et DB2/6000 :
    • Si le nom est de la forme PREFIXE.NOM, ce nom sera considéré tel quel par Pacbase et le SGBD, c'est à dire explicitement préfixé par vous.
    • Si le nom ne contient ni point ni préfixe, il sera généré avec un préfixe égal à votre code utilisateur (8 positions). Il sera considéré tel quel par le SGBD, c'est-à-dire explicitement préfixé par Pacbase.
    • Si le nom est de la forme .NOM, il sera généré sans le point (NOM), de façon à ce que la préfixation soit assuré par le SGBD.
Code Table ou Vue
Vous devez sélectionner dans cette zone le code du Segment représentant l'ensemble des colonnes d'une Table, d'une Alter Table ou d'une Vue. Pour un Index, une Primary ou Foreign key, vous devez sélectionner le Segment qui supportera la clé. Sur un objet de type Espace, cette zone ne doit pas être renseignée. Pour renseigner ou modifier le contenu de cette zone, cliquez sur Modifier. Dans la boîte de dialogue qui s'ouvre, sélectionnez un Segment dans la liste. Vous pouvez aussi créer un nouveau Segment dans l'assistant de création qui s'ouvre avec le bouton Nouveau Segment.
Avertissement : Seuls les Blocs de type DB2 ou ORACLE peuvent appeler des Segments ayant des Large Objects dans leur composition. Les LOBs sont incompatibles avec tout autre type de Bloc.
Lorsque cette sélection est effectuée, une icone précède le code du Segment, elle indique si l'instance représente un Segment mono-structure ou non.

Vous pouvez ouvrir l'éditeur du Segment sélectionné à partir de cette zone, en double-cliquant sur le code du Segment pour connaître, par exemple, sa composition.

Type de clé
Entrez dans cette zone le type de clé à générer.
Options Description
U : UNIQUE Sur une ligne de type I : génère l'ordre UNIQUE.
De 0: Rubrique du sous-schéma 10 à 9 : Rubrique du sous-schéma 9 Sur une ligne de type V : Vue constituée de la sélection des Rubriques de ce sous-schéma dans le Segment. La valeur 0 correspond au sous-schéma 10.
Toutes : Toutes Rubriques Toutes les Rubriques du Segment sont incluses dans la Vue.
R : restrict

C : Cascade

S : set null

Sur une ligne de type J : Restrict (valeur par défaut pour les bases de type DB2 uniquement)

Cascade (DB2, SQL/DS, DB2/2, DB2/6000 et ORACLE V7 uniquement)

S : Set null (DB2, SQL/DS, DB2/2 et DB2/6000 uniquement)

BLANC : package standard BODY : package BODY Sur une ligne de type C (ORACLE V7): indique le type de package. package BODY ou package normal.
A: after B: before Sur une ligne de type R : indique le déclenchement du trigger ou de la rule : Après (After), Avant (Before).
Type de mouvement généré
Cette zone permet de générer les ordres CREATE, ALTER et DROP.
Options Description
C : Création (CREATE) Création : Valeur attribuée par défaut à la création de la ligne; génère un ordre CREATE. Seule valeur possible pour un Alter Table (ligne de type A).
M : Modification (ALTER) Modification (sauf pour SQL/400 et INGRES SQL) : Ce choix est possible sur les lignes de type Table uniquement, et pour tous les types de bases sauf SQL/400 et INGRES SQL. Le choix Modification génère un ordre ALTER.
D : Annulation (DROP) Annulation : Génère un ordre DROP. Pour un type de ligne J (Foreign Key) et K (Primary Key), génère un DROP PRIMARY KEY et un DROP FOREIGN KEY dans un ordre ALTER TABLE.
N : pas de génération Pas de génération par la procédure GPRT en option C2.

Lignes -GG

Dans les lignes -GG, vous pouvez modifier les lignes de génération associées aux lignes. Des lignes sont générées automatiquement pour vous permettre de modifier les lignes de génération en respectant le format requis. Ces lignes sont identifiées par "VIRT" ou "GUID" dans la dernière colonne du tableau des lignes -GG. Communément, ces lignes sont appelées lignes virtuelles. Les lignes identifiées par "VIRT" sont générées. Pour modifier ces lignes, vous devez les écraser et créer de nouvelles lignes entre les repères de début et fin d'insertion dans le tableau. Lorsque vous cliquez sur Ecraser, les identifiants "GUID" et "VIRT" sont changés en "FromGUID" et "FromVIRT". Ces lignes deviennent saisissables, vous pouvez également les éditer avec la touche F2. Vous pouvez ajouter des lignes où vous le souhaitez, mais elles doivent avoir un type "G" pour être prises en compte à la génération.

Dans le tableau, vous pouvez voir les colonnes suivantes :
Type
Lorsque vous cliquez sur une ligne dans la colonne Type, une liste déroulante apparaît et vous offre les choix suivants :
  • * : lignes de commentaires à générer,
  • V : lignes générées avant les éléments de génération automatiques,
  • G : lignes générées à la place des éléments de génération automatiques,
  • P : lignes générées entre la partie des éléments de génération automatiques et leurs descriptions,
  • Z : lignes générées après les éléments de génération automatiques.
    Remarque : Les types P et Z sont disponibles pour les lignes -GG associées à la définition des Blocs CODASYL et Lignes -DC.
Description
Cette colonne doit être utilisée pour saisir les éléments de génération ou les commentaires qui doivent être générés. Son contenu varie selon le type de Bloc et le type de ligne sélectionné.

Des lignes virtuelles sont générées pour chaque type de record SQL (Table, Vue, index...) décrit dans les "Lignes de description" du Bloc. Vous avez la possibilité de modifier les caractéristiques d'une colonne ou indiquer le source d'une colonne dans une Vue. Pour ce faire, vous pouvez créer ou modifier les lignes donnant lieu à la génération.

Définition de la ligne -DRXXXK

Sur les lignes -K, vous trouvez les Rubriques composant le Segment utilisé comme clé de la Table (ou Index), ou Alter Table. Dans la section configuration des clés, vous sélectionnez les colonnes qui composent la clé de la Table ou un Alter Table et vous spécifiez l'ordre SQL à prendre en compte pour la génération.
Ordre ou type d'action
Vous indiquez ici l'ordre SQL devant être pris en compte pour la génération du Bloc. Les choix proposés dans la liste déroulante de cette zone sont spécifiques aux Index et Alter Table seulement.
Les choix communs pour les Index et Alter Table sont les suivants :
Options Description
Pas d'ordre ou ajout d'une colonne (ADD) Pas de genération d'ordre de tri (valeur par défaut)
A : Ordre ascendant ou annulation d'une colonne (DROP) La colonne est triée en ordre ascendant.
D : Ordre descendant ou annulation d'une colonne (DROP) La colonne est triée en ordre descendant.
Pour une Alter table, vous disposez d'un choix supplémentaire :
Options Description
M : Modification d'une colonne (MODIFY) La colonne peut être modifiée.
Pour une Rubrique appartenant à un Index, vous pourrez sélectionner un ordre de tri ascendant ou descendant. Il est également possible de choisir l'ordre de tri par défaut. Ainsi, aucun ordre de tri ne sera précisé dans le DLL et c'est l'ordre de tri par défaut du SGBD qui sera utilisé. Pour une Rubrique appartenant à une Alter Table, comme vous pouvez le voir dans les deux tableaux, vous pouvez choisir entre l'ajout, l'annulation ou la modification d'une colonne. Il s'agit ici d'indiquer le type de modification sur la colonne représentée par la Rubrique en question : ORDRE ADD pour l'ajout d'une colonne, ORDRE MODIFY pour la modification d'une colonne, ou ORDRE DROP pour l'annulation d'une colonne.
Ces ordres seront pris en compte à la génération du Bloc. Aucun ordre SQL n'est à indiquer pour une Primary ou Foreign key.
Rubrique
Dans cette section, vous pouvez sélectionner les Rubriques qui composeront la Clé (ou Index) de la Table, ou les colonnes d'un Alter Table. Vous devez pour cela cliquer sur Modifier. Une boîte de dialogue s'ouvre et affiche la liste des Rubriques appelées dans le Segment. Vous pouvez trouver dans cette liste des Rubriques qui n'ont pas été définies dans le Référentiel parce qu'elles ont été créées localement, sous l'onglet Lignes -CE de l'éditeur de Segments; elles sont identifiées ici comme des Descriptions de Rubriques.