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 28/01/2008, 20h53   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Par défaut De la meilleure façon d'appréhender les vues PostgreSQL dans du code

Bonjour,

C'est mon premier message ici et il est peut-être un peu hors sujet (si vous trouvez que c'est le cas, je m'en excuse par avance), mais j'aimerais quand même avoir l'avis d'experts PostgreSQL sur la question.

Voilà : d'un côté j'ai une base PostgreSQL avec une table et une vue (assez complexe) basée sur cette table, et d'un autre côté j'ai une appli écrite en QtJambi (Qt en Java) qui va utiliser cette base.

Le framework Model/View de Qt permet de définir une QTableModel qui constitue un modèle (au sens MVC) correspondant à une table. A l'utilisation, on modifie les données dans cette QTableModel puis on fait un database().commit() pour répercuter les modifs dans la base. Très pratique.

Bien sûr du point de vue de Qt, les vues PostgreSQL ne présentent aucune différence avec les tables. On peut donc utiliser une vue comme source de données d'une QTableModel. Pas de problème... en tout cas tant qu'on essaie pas de modifier les données. Je n'ai pas osé essayer un commit() sur une vue, mais comme les vues PostgreSQL sont read-only, je suis à peu près sûr du résultat.

Pour pouvoir éditer les données la démarche logique est donc d'utiliser la table comme source de données et non plus la vue. Mais alors pour présenter les données comme dans la vue il faut réécrire dans le code, l'équivalent de toutes les fonctions utilisées dans la vue, et comme j'ai passé pas mal de temps à développer toutes ces fonctions pour construire cette vue, j'aimerais bien éviter d'avoir à me retaper tout le boulot dans le code. D'autant que les premiers tests font apparaitre une chute de perf assez considérable.

Est-ce que vous auriez des idées sur la meilleure façon d'appréhender la question ?

Merci pour toute information à ce sujet.

jMax
jMax31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 10h54   #2
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,

D'abord bienvenue sur les forums de Developpez.com, et puis je te rassure, ce n'est absolument pas un HS.

PostgreSQL propose un système qui consiste à pouvoir réécrire une requête SQL avant son exécution selon des règles définies par le développeur. Cela permet notamment de rendre des vues "modifiables", ce qui est théoriquement impossible : on substitue selon les règles un INSERT sur une vue par un INSERT sur des tables. Ce processus est totalement transparent pour le code client, ce qui devrait t'épargner d'avoir à le modifier en profondeur. Les règles se créent avec CREATE RULE.
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h50.


 
 
 
 
Partenaires

Hébergement Web