Stupide !!!

Envoyé par
KiLVaiDeN
Bonjour,
Théoriquement, on ne peut pas faire d'INSERT dans une vue étant donné qu'il ne s'agit que d'une projection des données réelles.
[...]
Peut-être aussi, si la vue n'est associée qu'à une seule table, le SGBD peut faire la "traduction" de ton INSERT pour que les données aillent au bon endroit. Dans le cas d'une vue qui concernerait de multiples tables en même temps, cela me parait plus compliqué par contre.
Avant d'affirmer n'importe quoi révisez vos cours... Une vue n'est juste qu'une forme particulière de table et peut être mise à jour sous conditions. Cela est même dans l'ADN des bases de données relationnelles. Pour information la règle de Codd n°6 (l'inventeur des bases de données relationnelles) le précise depuis 1985 ! A lire : http://sqlpro.developpez.com/SGBDR/ReglesCodd/
Ce n'est pas parce que certains pseudo SGBDR comme MySQmerde ne savaient pas le faire et que malheureusement on enseigne maintenant sur cet ersatz de SGBD non relationnel qu'il faut affirmer des conneries !
Je vous prie de revoir vos cours et lire par exemple mon livre sur SQL qui en parle à plusieurs reprises : 
Notez aussi que la norme SQL ne fait pas de distinction entre les vues et les tables d'un point de vue métadonnées. En effet si vous demandez la liste des tables en lançant la requêtes de métadonnées suivantes :
SELECT * FROM INFORMATION_SCHEMA.TABLES
Vous y verrez les tables ET les vues. Les tabels étant des tables de type "base table" et les vues des "view"...
L'intérêt des vues est magistral et toutes les applications ne devraient travailler qu'à travers les vues. C'est ce que l'on appelle le MED ou Modele Externe de Données. Hélas rares sont les développeurs à le faire et surtout à comprendre pourquoi.
- Avantage n°1 : si une table a été ma structurée (par exemple une table obèse), le fait d'avoir attaqué l'application par des vues permet de la casser en plusieurs tables sans aucun impact sur l'application puisqu'il suffit de reconstituer la vue après éclatement de la table
- Avantage n°2 : protection des données... Par exemple une table d'employés peut comporter des données qui sont confidentielles pour certains utilisateurs et pas d'autres. La vue assure la publication correcte des données pour chacun des acteurs, par exemple RH, syndicat, médecin du travail.
Pour ce qui est de la mise à jour des vues, lisez l'article déjà cité sur les règles de CODD vous trouverez tout ce qu'il faut pour comprendre les choses....

Envoyé par
KiLVaiDeN
Mais, si il s'agit d'une vue matérialisée, il se peut que ce soit tout de même possible, parce que la vue matérialisée bien que renseignée par une ou plusieurs tables est un véritable enregistrement physique.
Aussi stupide !!!
En effet une vue matérialisée (ou indexée) ne peut pas être mise à jour directement. C'est une forme de redondance qui automatise la mise à jour des données primaires des tables dans une vue qui contrairement à l’ordinaire ne stocke pas les données. Autrement dit une vue matérialisée (ou indexées dans SQL Server) stocke des données qui sont des extractions d'autres tables et sont "rafraichies" de manière automatique (vues indexées) ou manuelles (vue matérialisées).
A +
Partager