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 SQLValeurs |
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 :
- 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.
- Pour Modifier les caractéristiques d'une colonne,
vous devez créer des lignes entre les lignes des repères de début
et de fin d'insertion et saisir <CORUB> sur la première ligne,
puis la nouvelle description sur les lignes suivantes.
- Pour insérer une colonne dans une Table, vous utilisez
la même technique. Vous devez créer une ou plusieurs ligne(s) entre
les lignes des repères de début et de fin d'insertion.
- Pour écraser le source d'une colonne dans une Vue ,
vous devez sélectionner la ligne, cliquer sur Ecraser et
créer une ou plusieurs ligne(s) entre les lignes des repères de début
et de fin d'insertion. Pour modifier la colonne source d'une colonne
dans une vue, créez une ligne de type "G" de la forme <FFNN-CORUB>
où FFNN est le code Segment de la source et CORUB le nouveau code
Rubrique.
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.