Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Schémas
Une base de données contient un ou plusieurs schémas désignés. Chaque schéma dans une base de données contient des tables et d’autres types d’objets nommés. Par défaut, une base de données possède un schéma unique, nomméPUBLIC. Vous pouvez utiliser des schémas pour regrouper des objets de base de données sous un nom commun. Les schémas sont similaires aux répertoires de système de fichiers, sauf qu’ils ne peuvent pas s’imbriquer.
Des noms d’objet de base de données identiques peuvent être utilisés dans des schémas distincts de la même base de données sans que cela entraîne de conflits. Par exemple, MY_ SCHEMA et YOUR _ SCHEMA peuvent contenir une table nomméeMYTABLE. Les utilisateurs disposant des autorisations nécessaires peuvent accéder aux objets sur plusieurs schémas dans une base de données.
Par défaut, un objet est créé dans le premier schéma du chemin d’accès de la base de données. Pour plus d’informations, consultez Chemin de recherche plus loin dans cette section.
Les schémas permettent de résoudre les problèmes d’organisation et de simultanéité dans un environnement multi-utilisateur comme suit :
-
Pour permettre à de nombreux développeurs d’utiliser la même base de données sans interférer dans leurs travaux respectifs.
-
Pour organiser les objets de base de données en groupes logiques afin de les rendre plus faciles à gérer.
-
Pour fournir à des applications la possibilité de placer leurs objets dans des schémas distincts, afin que leurs noms ne créent pas de conflits avec les noms des objets utilisés par d’autres applications.
Création, modification et suppression de schémas
N’importe quel utilisateur peut créer des schémas et modifier ou supprimer ceux qu’il possède.
Vous pouvez effectuer les opérations suivantes :
-
Pour créer un schéma, utilisez la commande CREATE SCHEMA.
-
Pour modifier le propriétaire d’un schéma, utilisez la commande ALTER SCHEMA.
-
Pour supprimer un schéma et ses objets, utilisez la commande DROP SCHEMA.
-
Pour créer une table dans un schéma, créez-la au format schema_name.table_name.
Pour afficher la liste de tous les schémas, interrogez la table du catalogue du NAMESPACE système PG_ :
select * from pg_namespace;
Pour afficher la liste des tables appartenant à un schéma, interrogez la table du catalogue du DEF système TABLE PG_ _. Par exemple, la requête suivante renvoie une liste de tables dans le CATALOG schéma PG_.
select distinct(tablename) from pg_table_def where schemaname = 'pg_catalog';
Chemin de recherche
Le chemin de recherche est défini dans le paramètre search_path avec une liste séparée par des virgules de noms de schémas. Le chemin d’accès spécifie l’ordre dans lequel les schémas sont recherchés lorsqu’un objet, comme une table ou une fonction, est référencé par un nom simple qui n’inclut pas de qualificateur de schéma.
Si un objet est créé sans spécifier de schéma cible, l’objet est ajouté au premier schéma qui est répertorié dans le chemin de recherche. Lorsqu’il existe des objets avec des noms identiques dans des schémas distincts, un nom d’objet qui ne spécifie pas de schéma fera référence au premier schéma du chemin d’accès qui contient un objet portant ce nom.
Pour modifier le schéma par défaut de la session en cours, utilisez la commande SET.
Pour plus d’informations, consultez la description de search_path dans la Référence de configuration.
Autorisations basées un schéma
Les autorisations basées sur un schéma sont déterminées par le propriétaire du schéma :
-
Par défaut, tous les utilisateurs disposent CREATE d'USAGEautorisations sur le PUBLIC schéma d'une base de données. Pour interdire aux utilisateurs de créer des objets dans le PUBLIC schéma d'une base de données, utilisez la REVOKE commande pour supprimer cette autorisation.
-
À moins d'USAGEobtenir l'autorisation du propriétaire de l'objet, les utilisateurs ne peuvent accéder à aucun objet dans des schémas qui ne leur appartiennent pas.
-
Si les utilisateurs ont obtenu l'CREATEautorisation d'accéder à un schéma créé par un autre utilisateur, ils peuvent créer des objets dans ce schéma.