Présentation rapide des vues dans la géodatabase
Vous pouvez utiliser trois types de vues dans une géodatabase ArcSDE :
- Vues de base de données (ou vues non spatiales)
- Vues spatiales
- Vues multi-versionnées
Vous pouvez utiliser les vues uniquement dans des géodatabases ArcSDE sous licence ArcGIS Server Enterprise.
Vues de base de données
Les vues de base de données sont des requêtes stockées qui sélectionnent des données dans les tables non versionnées, non spatiales spécifiées. Avec ArcSDE, il est possible de définir les vues de base de données pour une seule table non versionnée ou entre deux tables non versionnées. Vous pouvez également créer des vues plus complexes qui contiennent des sous-requêtes ou couvrent des bases de données.
Lorsque vous créez une vue dans un jeu de données versionné, vous ne voyez que la table métier (de base) et non les modifications des tables de deltas. Pour afficher les modifications des tables de deltas, créez plutôt une vue multi-versionnée dans la table métier.
Vous pouvez utiliser le SQL natif de votre système de gestion de base de données (SGBD) pour créer une vue de base de données ou faire appel à la commande sdetable d'ArcSDE avec l'opération create_view.
La syntaxe de sdetable –o create_view est la suivante :
sdetable –o create_view –T <view_name> –t <table1,table2...tablen> –c <table_col1,table_col2...table_coln [–a <view_col1,view_col2...view_coln>] [–w <"where_clause">] [–i {<direct connection> | <service> | <port#>}] [–s <server_name>] [–D <database>] –u <DB_User_name> [–p <DB_User_password>] [–N] [–q]
Vous devez afficher les colonnes (–c) de votre choix dans la vue. Pour en savoir plus sur la commande sdetable, ses opérations et ses options, consultez le manuel ArcSDE Administration Command Reference.
Des autorisations spécifiques sont nécessaires pour permettre à un utilisateur de créer une vue ; par exemple, des privilèges CREATE VIEW doivent être accordés à l'utilisateur dans les bases de données Oracle ou SQL Server. Si vous ne disposez pas des privilèges appropriés dans la base de données pour créer une vue, vous ne pouvez pas exécuter la commande sdetable –o create_view. En outre, avec certains systèmes de gestion de bases de données, si vous créez une vue sur une classe ou une table d'entités dont vous n'êtes pas propriétaire, vous ne pouvez pas accorder de droits sur la vue aux autres utilisateurs, à moins que le propriétaire des tables sous-jacentes ne vous ait autorisé à accorder des privilèges à d'autres utilisateurs.
Vues spatiales
Les vues spatiales sont des vues de base de données qui contiennent une seule colonne spatiale. Vous pouvez uniquement les créer sur des tables spatiales qui n'ont pas été inscrites avec la géodatabase ou sur des classes d'entités non versionnées si les tables ont été inscrites avec la géodatabase.
Reportez-vous à la rubrique Qu'est-ce qu'une vue ? pour connaître les raisons motivant l'utilisation des vues de base de données. Vous trouverez également ci-après quelques raisons de créer des vues spatiales :
- Lorsque vous définissez la vue spatiale, vous pouvez joindre une classe d'entités à une table non spatiale, en combinant ainsi les colonnes des deux.
- Les clients ArcGIS ne peuvent fonctionner qu'avec des tables contenant une seule colonne spatiale. Pour utiliser une table spatiale contenant plusieurs colonnes spatiales, vous pouvez créer une vue spatiale qui contient une seule colonne spatiale de la table.
Pour créer une vue spatiale, vous pouvez faire appel à la commande sdetable d'ArcSDE avec l'opération create_view ou utiliser SQL. Si vous utilisez la commande sdetable, vous devez inclure l'identifiant de ligne (ou l'IdObjet) et la colonne spatiale dans la liste de colonnes spécifiées avec l'option –c. La colonne d'identifiant de ligne ou d'IdObjet doit provenir de la même table que la colonne spatiale. Si ce n'est pas le cas, la relation unique qui existe entre l'identifiant de ligne ou l'IdObjet et la colonne de forme risque d'être altérée et de produire des résultats inexacts lors de l'exécution d'opérations de requête ou de rendu dans ArcGIS.
Pour créer une vue spatiale à l'aide de SQL, vous devez inclure la colonne spatiale et la colonne d'identifiant de ligne ou d'IdObjet appropriée de la classe d'entités ou de la table spatiale dans la vue. Une fois la vue créée avec SQL, vous devez l'inscrire avec ArcSDE pour qu'elle apparaisse en tant que classe d'entités dans les clients ArcGIS.
Lorsque vous créez une vue à l'aide des outils ArcSDE, SQL ou d'autres outils DBMS, vous devez réfléchir à la pertinence de la nouvelle vue. Par exemple, vous devez déterminer si les colonnes spécifiées existent réellement dans les tables spécifiées et si les colonnes présentent des index permettant d'accélérer l'exécution des requêtes. Si vous décidez de remplacer des vues créées par ArcSDE en les modifiant ultérieurement, vous êtes responsable non seulement de la justesse et de l'efficacité de la requête, mais également de sa pertinence et du fait qu'elle puisse être utilisée avec les clients ArcSDE. Par exemple, la création de vues de type un vers plusieurs impliquant des classes d'entités se traduit par la duplication d'identifiants ObjectID. Cela entraîne un comportement inattendu dans des applications telles qu'ArcMap et ArcCatalog, dans la mesure où l'identifiant ObjectID est censé ne contenir que des valeurs uniques.
Vues multi-versionnées
Les vues multi-versionnées intègrent des vues de base de données, des procédures stockées, des déclencheurs et des fonctions pour accéder à (ou modifier) une version particulière d'une table ou d'une classe d'entités dans une géodatabase à l'aide du langage SQL.
Pour créer une vue multi-versionnée, utilisez la commande sdetable avec l'opération create_mv_view. La syntaxe de sdetable -o create_mv_view est la suivante :
sdetable –o create_mv_view –T <view_name> –t <table_name> [–i {<direct connection> | <service> | <port#>}] [–s <server_name>] [–D <database>] –u <DB_User_name> [–p <DB_User_password>] [–N] [–q]
Pour en savoir plus sur la commande sdetable, ses opérations et ses options, consultez le manuel ArcSDE Administration Command Reference.
Les vues multi-versionnées ne fonctionnent qu'avec une seule table versionnée ou classe d'entités. Vous ne pouvez pas utiliser une clause Where pour joindre plusieurs tables ou limiter les lignes ou les colonnes qui sont incluses dans une vue multi-versionnée.
Les vues multi-versionnées permettent avant tout de modifier des données versionnées à l'aide du langage SQL. Vous ne pouvez pas modifier la table ou la classe d'entités sous-jacente par le biais d'une vue multi-versionnée à l'aide d'une application cliente ArcGIS. La table ou la classe d'entités sur laquelle repose la vue multi-versionnée doit répondre aux exigences ArcGIS en matière de modification des données de géodatabase à l'aide du langage SQL. Reportez-vous à la rubrique Type de données pouvant être modifié avec SQL pour plus d'informations.