Les vues et les procédures stockées permettent d'encapsuler de la logique SQL réutilisable directement dans la base de données, plutôt que de la répéter dans chaque application ou chaque requête.
Views and stored procedures let you encapsulate reusable SQL logic directly in the database, instead of repeating it in every application or query.
Les vues : des requêtes nommées
Views: Named Queries
Une vue est essentiellement une requête SELECT enregistrée sous un nom, que l'on peut ensuite interroger comme une table normale.
A view is essentially a SELECT query saved under a name, which you can then query like a normal table.
CREATE VIEW clients_actifs AS
SELECT id, nom, courriel
FROM clients
WHERE statut = 'actif';
SELECT * FROM clients_actifs WHERE nom LIKE 'M%';
CREATE VIEW active_customers AS
SELECT id, name, email
FROM customers
WHERE status = 'active';
SELECT * FROM active_customers WHERE name LIKE 'M%';
Les vues sont utiles pour simplifier des requêtes complexes récurrentes, masquer des colonnes sensibles, ou stabiliser une interface de lecture même si la structure des tables sous-jacentes évolue.
Views are useful for simplifying recurring complex queries, hiding sensitive columns, or stabilizing a read interface even as the underlying table structure evolves.
Vues matérialisées
Materialized Views
Contrairement à une vue normale (recalculée à chaque appel), une vue matérialisée stocke physiquement le résultat et doit être rafraîchie explicitement — un bon compromis pour des rapports lourds peu fréquemment mis à jour.
Unlike a normal view (recomputed on every call), a materialized view physically stores the result and must be refreshed explicitly — a good trade-off for heavy reports that don't need frequent updates.
CREATE MATERIALIZED VIEW ventes_par_mois AS
SELECT DATE_TRUNC('month', date_commande) AS mois, SUM(montant) AS total
FROM commandes
GROUP BY 1;
REFRESH MATERIALIZED VIEW ventes_par_mois;
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS total
FROM orders
GROUP BY 1;
REFRESH MATERIALIZED VIEW monthly_sales;
Les procédures stockées
Stored Procedures
Une procédure stockée regroupe une séquence d'instructions SQL (avec logique conditionnelle, boucles, paramètres) exécutée sur le serveur de base de données.
A stored procedure groups a sequence of SQL statements (with conditional logic, loops, parameters) executed on the database server.
CREATE PROCEDURE transferer_fonds(
compte_source INT, compte_dest INT, montant DECIMAL
)
AS $$
BEGIN
UPDATE comptes SET solde = solde - montant WHERE id = compte_source;
UPDATE comptes SET solde = solde + montant WHERE id = compte_dest;
END;
$$ LANGUAGE plpgsql;
CREATE PROCEDURE transfer_funds(
source_account INT, dest_account INT, amount DECIMAL
)
AS $$
BEGIN
UPDATE accounts SET balance = balance - amount WHERE id = source_account;
UPDATE accounts SET balance = balance + amount WHERE id = dest_account;
END;
$$ LANGUAGE plpgsql;
| Objet | Usage typique |
|---|---|
| Vue | Simplifier ou masquer une requête de lecture |
| Vue matérialisée | Mettre en cache un résultat coûteux à recalculer |
| Procédure stockée | Encapsuler une logique métier multi-étapes côté serveur |
| Object | Typical Use |
|---|---|
| View | Simplifying or hiding a read query |
| Materialized view | Caching an expensive-to-recompute result |
| Stored procedure | Encapsulating multi-step business logic server-side |
Points clés à retenir
Key Takeaways
- Les vues simplifient et sécurisent l'accès en lecture sans dupliquer de données
- Les vues matérialisées améliorent la performance au prix d'une fraîcheur des données à gérer explicitement
- Les procédures stockées sont puissantes mais doivent être utilisées avec discipline pour rester maintenables
- Views simplify and secure read access without duplicating data
- Materialized views improve performance at the cost of data freshness you must manage explicitly
- Stored procedures are powerful but need discipline to stay maintainable
