Dans le cadre du processus de normalisation des tables de base de données, les colonnes redondantes sont extraites des tables de niveau supérieur vers des tables subsidiaires distinctes. Cela se produit souvent parce que certains champs ont une relation un-à-plusieurs (one-to-many en anglais) avec l'entité mère. Par exemple, prenons le modèle suivant généré à l'aide de Navicat Data Modeler:
![ups_model (189K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/ups_model.jpg)
« Appraisals » faisaient initialement partie de la table « Ups », mais cela a conduit à une redondance des données car plusieurs véhicules peuvent être évalués en une seule visite. Il était donc logique de supprimer les champs de véhicules de la table « Ups » et de les placer dans leur propre table.
L'inconvénient de la normalisation vers la troisième forme normale (3NF) est que vous vous retrouvez avec de nombreux champs d'identification dans la table principale. En tant que spécialiste des bases de données examinant une table, il devient très difficile de savoir sur quelle entité pointe chaque colonne d'ID. À titre d'illustration, jetez un œil à la table « Ups » du diagramme de modèle ci-dessus et remarquez comment les « CSR », les « Customers » et les « vehicles »ont tous été réduits à des identifiants numériques qui n'aident en aucun cas à identifier les entités sous-jacentes :
![ups_table (195K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/ups_table.jpg)
Ceci est en partie lié à l'utilisation d'identifiants auto-incrémentés ainsi qu'à la normalisation, mais, dans tous les cas, nous pouvons rendre les données beaucoup plus faciles à lire en créant une vue. Une vue de base de données est un sous-ensemble d'une base de données et est basée sur une requête qui s'exécute sur une ou plusieurs tables de base de données. Les vues de base de données sont enregistrées dans la base de données sous forme de requêtes nommées et peuvent être utilisées pour enregistrer des requêtes complexes fréquemment utilisées.
Dans Navicat 16, nous pouvons créer une nouvelle vue en choisissant Fichier -> Nouveau-> Vue...... dans le menu principal :
![new_view_menu_command (46K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/new_view_menu_command.jpg)
Cela ajoutera un nouvel onglet « Vue ».
L'étape suivante consiste à écrire l'instruction SQL qui générera les champs de la vue :
![view_definition (43K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/view_definition.jpg)
Si vous avez besoin d'aide pour rédiger vos requêtes, vous pouvez utiliser les boutons « Aperçu », « Expliquer », « Générateur de vue » et « Embellir SQL » dans la barre d'outils de l'onglet.
Disons que nous ne voulons pas attendre que la vue soit créée avant de visualiser les résultats, nous pouvons cliquer sur le bouton « Aperçu » pour la voir tout de suite :
![view_preview (207K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/view_preview.jpg)
Désormais, les colonnes ID contiennent des données textuelles plus descriptives et significatives.
Sous les boutons d'onglet, il y a trois autres onglets : « Definition », « Avancé » et « Aperçu SQL ». L'onglet « Avancé » contient des options supplémentaires telles que l'option "Algorithme », « Définir », « Sécurité » et « Cocher l’option », tandis que l'aperçu SQL affiche l'instruction « CREATE VIEW »:
![sql_preview (30K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/sql_preview.jpg)
La nouvelle vue est nommée « Untitled» jusqu'à ce que nous la sauvegardions. À ce stade, une boîte de dialogue apparaît dans laquelle nous pouvons spécifier le nom de la vue :
![save_as_dialog (46K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/save_as_dialog.jpg)
Lors de l'enregistrement, la nouvelle vue sera ajoutée au volet de navigation sur le côté gauche et pourra être invoquée à tout moment :
![ups_view_in_object_pane (20K)](https://www.navicat.com/link/Blog/Image/2023/20230519/FR/ups_view_in_object_pane.jpg)
Réflexions finales sur la création de vues dans Navicat 16
Dans le blog d'aujourd'hui, nous avons découvert les vues des bases de données et avons créé une vue pour aider à identifier les enregistrements dans une table qui renvoie à un certain nombre de tables dépendantes via des champs d'ID.