Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/10/2007, 17h04   #1
Membre habitué
 
Homme
Inscription : octobre 2007
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 81
Points : 107
Points : 107
Par défaut [Débutant] Quid des schémas ?

Bonjour

Je découvre PostgreSQL et m'interroge sur l'utilité réelle des schémas, en dehors des accès inter-bases.

Dans la doc (5.7), on trouve ceci :
"• pour autoriser de nombreux utilisateurs à utiliser une base de données sans interférences entre eux ;
• pour organiser les objets de la base de données en groupes logiques afin de faciliter leur gestion ;
• les applications tiers peuvent être placées dans des schémas séparés pour éviter les collisions avec les noms d'autres objets."

En surfant assidument, je n'ai pas trouvé d'informations et d'exemples pratiques de l'usage de ces schémas dans la conception d'une application (oublions ici les instructions de programmation).
Certains stockent leurs procédures dans un schéma, comme le suggère le second alinéa ci-dessus, ce qui impose le nommage explicite lorsqu'on les utilise.
D'autres créent un schéma par client car ceux-ci ont des fichiers spécifiques. Je suppose qu'alors, tout ce qui touche à l'applicatif est regroupé dans un schéma qui fait fonction de serveur vis à vis des autres schémas qui sont "clients" et ne contiennent que des données.

Je ne saisis pas très bien la portée du point relatif aux interférences éventuelles entre de nombreux utilisateurs et je suppose qu'on traite là d'utilisateurs actifs effectuant de nombreuses mises à jours de fichiers de données.
Mais qu'en est-il par exemple dans le cas d'un site d'information ou de documentation où l'interactivité est limitée et se résume éventuellement à la sélection de rubriques ou à des recherches sur critères, voire à la participation à des forums comme je le fais pour l'instant sur Développez.com ?


Enfin, si je commence un développement en me contentant du schéma implicite (soit "public"), sera-t-il possible de transférer ultérieurement certaines entités (tables, procédures, ...) vers un autre schéma ?
"ALTER SCHEMA ... RENAME / OWNER ..." ne fonctionne apparemment qu'au niveau global du schéma et ne permet pas de sélection de ses composants.

Merci de m'avoir lu et dans l'attente de vos réponses.
MG
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 23h10   #2
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Si je reformule un peu la doc, je dirais que ça facilite principalement la gestion des droits et le travail de l'administrateur.

Disons que je veux installer un module contrib comme, disons, TSearch2. Ce dernier va installer des nouveaux types, des nouvelles fonctions, voire même une méthode d'indexage. Si je planque tout ça dans un schéma, sa suppression sera ensuite aisée.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 10h06   #3
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

Citation:
Envoyé par Hemgé
Mais qu'en est-il par exemple dans le cas d'un site d'information ou de documentation où l'interactivité est limitée et se résume éventuellement à la sélection de rubriques ou à des recherches sur critères, voire à la participation à des forums comme je le fais pour l'instant sur Développez.com ?
Les informations qui vont être stockées dans cette base peuvent être classées grosso modo en deux catégories : celles qui concernent les comptes d'utilisateur (pseudo, mot de passe, email, etc.), et celles liées au contenu rédactionnel.

Dans un contexte d'entreprise, il est fort probable que ces deux catégories vont être gérées par des entités différentes ; les RH se chargeront des données concernant les utilisateurs habilités, tandis que les rédacteurs qui alimenteront l'autre catégorie pourront être issus de différents services de l'entreprise. Chaque intervenant d'un domaine n'est pas censé intervenir sur l'autre, d'où l'utilité de placer les informations de chacun de ces domaines dans son schéma spécifique pour les cloisonner. Dans le schéma "public" on placera les relations nécessaires au site pour fonctionner, mais il n'y aura pratiquement pas de tables, que des vues ou des procédures stockées qui font appel aux tables des deux autres schémas.

Avec cette structure, la définition des rôles d'utilisateurs et la définition des droits d'accès à chaque table devient bien plus simple que si tout avait été placé dans un seul schéma (le schéma "public"), tout en assurant la sécurité, la confidentialité et le cloisonnement fonctionnel.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 09h00   #4
Membre habitué
 
Homme
Inscription : octobre 2007
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 81
Points : 107
Points : 107
Merci pour vos réponses.
Cela devient plus clair.

Reste le problème du reclassement ultérieur d'un fichier, d'une vue ou d'une prodédure d'un schéma dans un autre.
Apparemment, pas de solution autre que le copier/couper - coller ?
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 09h59   #5
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Je ne sais pas ce que tu entends par déplacement de fichiers.

Par contre, si tu parles du déplacement d'un objet de la base (étant donné que tu parlais de vue et de procédure stockée) vers un autre schéma, la plupart (tous ?) des objets possèdent une instruction du style
Code :
ALTER <type_objet> <nom_objet> SET SCHEMA <nouveau_schema>
. Par exemple, pour une procédure stockée, tu feras :
Code :
ALTER FUNCTION ma_fonction SET SCHEMA mon_nouveau_schema;
Et pour une vue, tu feras :
Code :
ALTER TABLE ma_vue SET SCHEMA mon_nouveau_schema;
(parce qu'une vue est considérée comme une table un peu spéciale).

Voir http://www.postgresql.org/docs/8.2/i...ltertable.html, http://www.postgresql.org/docs/8.2/s...rfunction.html, et certainement d'autres.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 10h37   #6
Membre habitué
 
Homme
Inscription : octobre 2007
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 81
Points : 107
Points : 107
Oui, objet plutôt que fichier !! Oups.


Avec cela, je sais TOUT
Pas mal pour un débutant, non ?

Merci à tous
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web