DATA - Data Architecture > Conception des données et des bases de données > Générer des scripts SQL > Ajouter des propriétés physiques aux objets d'une base de données
Ajouter des propriétés physiques aux objets d'une base de données
Une fois votre base de données définie dans un diagramme relationnel, vous pouvez générer les scripts SQL correspondants à destination de différents SGBD.
Le volet de navigation des données physiques vous permet de compléter la modélisation physique d'une base de données en spécifiant les paramètres propres à chaque SGBD et de produire ainsi des scripts SQL complets.
Vous pouvez également importer dans HOPEX les paramètres physiques définis sur des objets rétro-générés. Voir la Rétro-génération des propriétés physiques.
Vous pouvez adapter un même modèle logique à plusieurs SGBD. Il n'est pas nécessaire de dupliquer les objets. 
SGBD cibles
Pour définir un SGBD cible sur une base de données :
1. Ouvrez la fenêtre de propriétés de la base de données concernée.
2. Cliquez sur la page Caractéristiques.
3. Indiquez le champ SGBD cible dans le champ correspondant.
Créer des propriétés physiques
Pour créer des propriétés physiques sur les objets d'une base de données dans HOPEX Data Governance :
1. Cliquez sur le menu de navigation puis sur Actifs de données > Vue hiérarchique.
*Dans HOPEX Data Architecture, cliquez sur le menu de navigation puis sur Architecture de données > Données physiques.
2. Dans la zone d'édition, dépliez le dossier et les sous-dossiers de la base de données concernée.
Les paramètres sont présentés sous forme arborescente, conformément à la grammaire SQL du SGBD considéré (référez-vous à la documentation SQL du SGBD).
Deux types de dossier sont présentés dans l'arbre :
Les dossiers de navigation.
Les groupes de paramètres que vous devez instancier.
Chaque groupe de paramètres, représenté par un objet "clause SQL", dispose d'une page de propriétés permettant de définir leur valeur.
Les clauses SQL ainsi définies sont accessibles comme des objets standard du référentiel. Il est par exemple possible de rechercher des objets SQL ayant une valeur donnée pour un paramètre.
Par défaut, les clauses ne sont pas réutilisables d'un objet à l'autre. Il est néanmoins possible de définir une clause pour un objet et de la relier à d'autres objets. Dans ce cas, toute modification de la clause affecte les objets qui l'utilisent.
Objets contenant des paramètres physiques
Tous les objets dans HOPEX ne supportent pas les paramètres physiques. Ceux-ci concernent uniquement :
Les groupes de données
Les tables
Les index
Les clusters
Créer une nouvelle clause
Pour définir les paramètres d'un objet :
1. Cliquez avec le bouton droit sur le groupe de paramètres correspondant et sélectionnez Nouveau > SQL clause.
2. Ouvrez la fenêtre de propriétés de la clause et saisissez la valeur du paramètre à définir.
Relier une clause
Vous pouvez affecter une même clause à plusieurs objets, à condition de relier le bon type de clause.
Prenons la base de données "Gestion des commandes" ayant pour SGBD Oracle 9i.
Sur la colonne "Code_catalogue", créez la "Clause 1" de type "inline_constraint".
Vous pouvez relier la "Clause 1" à une autre colonne. S'agissant du même type de clause, celle-ci est copiée sans problème sur la nouvelle colonne.
En revanche, si vous reliez la "Clause 1" à un objet dont le type est différent de celui défini initialement sur la "Clause 1" - par exemple "Storage_clause " - alors la "Clause 1" change de type pour prendre celui du dernier élément relié. Autrement dit, la "Clause 1" qui était de type "inline_constraint" prend le type "storage_clause". Ce changement se répercute sur les colonnes de départ auxquelles était reliée la "Clause 1".
Nommage des clauses
Cas standard 
Par défaut, le nom de la clause prend le nom de la clause type à laquelle elle est rattachée. Lorsque vous rattachez une clause à un autre type, le nom s'adapte automatiquement.
Nommage spécifique 
Vous avez la possibilité de donner un nom spécifique à une clause. Dans ce cas, le nom de la clause devient statique; le changement de clause type ne modifie pas le nom de la clause.
*Vous pouvez revenir en mode dynamique en forçant le nom à vide.
Un nommage spécifique est indispensable lorsqu'une clause est utilisée dans différents contextes (clause générique).
Clauses multiples 
Pour un niveau donné, plusieurs clauses peuvent être rattachées à une même clause type. Afin de distinguer les différentes clauses, le nom de la clause est constitué du nom de la clause type puis de son hexaIdAbs.
Nommage à partir d'une propriété 
Il est possible de modifier le comportement standard en définissant une règle de nommage automatique pour un type de clauses SQL. Ce paramétrage s'effectue au niveau de la propriété _settings de la clause type. Dans l'exemple ci-dessous, le paramétrage effectué sur la clause type "range_PARTITION" pour Oracle 9i indique que le nom des clauses SQL de ce type se construit à partir de la valeur de la propriété PARTITION.
Une fois ce paramètre effectué, les noms des clauses SQL est automatiquement calculé à partir des valeurs de la propriété PARTITION.
 
Le nom des clauses SQL n'est pas pris en compte dans la génération SQL. Dans l'exemple fourni, c'est bien la valeur de la propriété PARTITION qui alimente les scripts SQL générés.
Exemple de personnalisation d'un modèle physique 
Vous pouvez partitionner une table afin de faciliter l'accès aux données ou de gérer différemment des blocs d'informations.
Supposons que vous vouliez partionner la table "Ligne de commande" de la base de données "Gestion des commandes" selon la méthode by hash d'Oracle. Cette méthode permet de calculer dynamiquement la partition d'une table.
Syntaxe de l'instruction Hash partitioning
Vérifiez que la base de données a pour SGBD cible Oracle 9i.
*Ouvrez sa fenêtre de propriétés et cliquez sur la page Caractéristiques.
Le nom du SGBD est indiqué dans le champ SGBD cible.
Affichez les propriétés physiques de la base de données "Gestion des commandes" :
1. Cliquez sur le menu de navigation puis sur Actifs de données > Vue hiérarchique (pour HOPEX Data Governance).
*Dans HOPEX Data Architecture, cliquez sur le menu de navigation puis sur Architecture de données > Données physiques.
2. Dans la zone d'édition, dépliez le dossier et les sous-dossiers de la base de données "Gestion des commandes" pour afficher les paramètres liés à la grammaire Oracle.
Pour partitionner la table "Ligne de commande" :
1. Dépliez la table "Ligne_de_commande".
2. Dépliez le groupe de paramètres "MEGA_Oracle::relational_table".
3. Cliquez avec le bouton droit sur le type de clause "MEGA_Oracle::table_properties" et sélectionnez Nouveau > SQL clause.
4. Nommez la clause "Ligne_de_commande/Table_properties".
Elle apparaît dans l'arbre de navigation.
5. Sous cette clause, dépliez le groupe de paramètres "MEGA_Oracle::table_partitioning_clauses". Il contient les différents types de partionnement qu'il est possible de réaliser dans Oracle.
6. Sur le dossier "MEGA_Oracle::hash_partitioning", créez la clause "Ligne_de_commande/hash_partitioning".
7. Ouvrez sa fenêtre de propriétés.
8. Dans la page PARTITION BY HASH, indiquez les colonnes sur lesquelles s'applique le découpage. Pour cela, reliez les colonnes concernées par la partition.
9. Fermez la fenêtre de propriétés.
10. Sous la clause "Ligne_de_commande/hash_partitioning" sont disponibles deux types de clauses :
individual_hash_partitions : permet de nommer chaque partition.
hash_partitions_by_quantity : permet de définir le nombre de partitions que vous voulez créer.
11. Créez la clause "Ligne_de_commande/Hash_partition_by_quantity".
12. Ouvrez sa fenêtre de propriétés.
13. Cliquez sur la page PARTITIONS.
14. Dans le champ Hash partition quantity, indiquez le nombre de partitions. Ces partitions sont représentées par des groupements de données.
15. Sous le champ STORE IN, reliez les groupements de données.
Pour obtenir le script correspondant à ce partitionnement, cliquez avec le bouton droit sur la table "Ligne de commande" et sélectionnez Générer le code.
Générer le fichier SQL
Lorsque vous avez personnalisé un objet, vous pouvez générer le fichier script correspondant afin d'observer les résultats, sans pour autant re-générer toute la base de données.
Par exemple, pour générer le fichier SQL d'un index :
*Faites un clic droit sur l'index et sélectionnez Générer le code.