Création d'un index

Vous pouvez créer plusieurs types d'index.

  • Index utilisateur - Associé à une ou plusieurs colonnes.

  • Index lié à une clé - Mise à jour automatiquement lorsque la ou les colonnes de clé sont modifiées. Un index lié à une clé est unique car il utilise le même jeu de colonnes unique que la clé.

  • Index basé sur une fonction - [si pris en charge par le SGBD] Précalcule la valeur de la fonction ou de l'expression et stocke le résultat dans un index. La fonction ou l'expression remplacera la colonne d'index dans la définition de l'index. Les index basés sur une fonction constituent un mécanisme très efficace pour évaluer les instructions qui contiennent des fonctions dans leur clause WHERE.

Utilisez les conventions de dénomination suivantes pour les index :

Index

Convention de dénomination

Clé primaire

Spécifie le code de table, suivi de PK (pour Primary Key, clé primaire). Par exemple, SALARIE_PK).

Clé étrangère

Spécifie le code de table, suivi de FK (pour Foreign Key, clé étrangère). Par exemple, PROJET_ FK.

Clé alternative

Spécifie le code de table, suivi de AK (pour Alternate Key, clé alternative). Par exemple, SALARIE_ AK.

Prenons le cas d'une table comportant une clé primaire composée, c'est-à-dire une clé primaire portant sur plusieurs colonnes de cette table. Vous créez un index et le liez à la clé primaire. Si vous supprimez une colonne de clé primaire, l'index correspondant est également supprimé.

  1. Double-cliquez sur un symbole de table dans le diagramme pour afficher sa feuille de propriétés, puis cliquez sur l'onglet Index.
  2. Cliquez sur l'outil Ajouter une ligne et spécifiez un nom et un code d'index.


  3. Cliquez sur le bouton Propriétés pour afficher la feuille de propriétés du nouvel index.
  4. Saisissez ou sélectionnez des propriétés d'index, puis cliquez sur l'onglet Colonnes.
  5. Pour:
    • Créer un index utilisateur, cliquez sur l'outil Ajouter des colonnes, sélectionnez une ou plusieurs colonnes dans la liste, puis cliquez sur OK.
    • Créer un index lié à une clé, sélectionnez une clé primaire, une clé alternative ou une clé étrangère dans la liste Définition.
    • Créer un index basé sur une fonction [si pris en charge par le SGBD], cliquez sur l'outil Ajouter une ligne, puis cliquez dans la colonne Expression et cliquez sur le bouton Points de suspension pour ouvrir l'éditeur SQL. Saisissez une expression dans l'éditeur, puis cliquez sur OK.


  6. Sélectionnez Ascendant ou Descendant dans la colonne Tri.
  7. Cliquez sur OK dans les boîtes de dialogue successives.

Reverse engineering d'un index basé sur une fonction

Une colonne d'index dotée d'une expression a un type de données LONG qui ne peut pas être concaténé dans une instruction de chaîne lors du reverse engineering. La seule façon de contourner cette limitation et de concaténer cette valeur est d'utiliser des variables dans la requête exécutée afin d'extraire les informations adéquates.

Dans les SGBD Oracle 8i et Oracle 8i2, la requête SqlListQuery définie dans la catégorie Index contient la variable suivante, utilisée pour récupérer l'expression d'index dans une colonne dotée du type de données LONG.

'%SqlExpression.Xpr'||i.table_name||i.index_name||c.column_position||'%'

Par exemple, les index basés sur une fonction définis sur UPPER(nom_colonne) ou LOWER(nom_colonne) peuvent faciliter les recherches qui ignorent la casse des caractères.

Si vous souhaitez définir un index qui convertira tous les noms en majuscules dans la table EMPLOYE afin de faciliter la recherche, vous pouvez définir l'index suivant (syntaxe pour Oracle 8i) :

CREATE INDEX low_name_idx ON EMPLOYEE (LOWER(EMPLNAM))

Le SGBD peut alors l'utiliser pour le traitement de requêtes telles que la suivante :

SELECT * FROM EMPLOYEE WHERE LOWER(EMPLNAM)="brown"

Pour plus d'informations sur l'utilisation des variables dans les requêtes de reverse engineering, voir Personnalisation et extension de PowerAMC > Fichiers de définition de SGBD.