Outils pour utilisateurs

Outils du site


informatique:sgbd-best-practises

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
informatique:sgbd-best-practises [2020/05/12 16:29] – créée bertrandinformatique:sgbd-best-practises [2020/05/13 14:27] – [Les requêtes] bertrand
Ligne 1: Ligne 1:
 +
 ====== Best practises Bases de données ====== ====== Best practises Bases de données ======
-Début 2020, j'ai questionné la liste de diffusion RBDD à propos des bonnes pratiques pour la création/modification et utilisation des bases de données. Après différents échanges, Marie-Claude Q a créé l'article:+Début 2020, j'ai questionné la liste de diffusion RBDD à propos des bonnes pratiques pour la création/modification et utilisation des bases de données. Après différents échanges (merci aussi à Éric Q), Marie-Claude Q a créé l'article:
  
 [[http://rbdd.cnrs.fr/spip.php?article338|Bonnes pratiques en matière de base de données]] [[http://rbdd.cnrs.fr/spip.php?article338|Bonnes pratiques en matière de base de données]]
 +<note important>Certaine de ses bonnes pratiques ne sont pas applicables si vous envisagez d'utiliser un ORM comme Doctrine, le "type" SERIAL n'est par exemple pas pris en compte, la clé primaire n'est pas demandée et sera toujours nommée //id// </note>
  
 Afin de l'illustrer, voici ce que j'en retiens: Afin de l'illustrer, voici ce que j'en retiens:
Ligne 10: Ligne 12:
 ==== Des constantes ==== ==== Des constantes ====
  
-Le nom des bases de données, des schémas, des tables et des attributs doit être:+=== Le nom des bases de données, des schémas, des tables et des attributs doit être === 
   * en minuscule   * en minuscule
   * au singulier   * au singulier
Ligne 18: Ligne 21:
 Il doit être parlant sans être verbeux. L’utilisation d’abréviation est déconseillée. Il doit être parlant sans être verbeux. L’utilisation d’abréviation est déconseillée.
  
-Les schémas, les tables et les colonnes porteuses d’informations doivent être commentés.+=== Les schémas, les tables et les colonnes porteuses d’informations doivent être commentés ===
 Le commentaire doit citer l’**unité de mesure, pour les données numériques** Le commentaire doit citer l’**unité de mesure, pour les données numériques**
  
-Des options :+=== Des options === 
 + 
 +=== Le nom des objets et le commentaire doivent être en anglais === 
 +{{:informatique:plus-circle.png|}} langue internationale\\ 
 +{{:informatique:minus-circle.png|}} langue non maitrisée par tous (les nuances mises dans les commentaires peuvent être mal interprétées) \\ 
 + 
 +=== La clef primaire doit être de type « serial » et nommée « table_id » === 
 +{{:informatique:plus-circle.png|}} porte sur une seule colonne et étant de type numérique (donc vrai aussi pour le type integer), c'est plus rapide pour l’indexation\\ 
 +{{:informatique:minus-circle.png|}} non significative (ne porte pas d'information métier) et l’unicité métier (une seule fois cette personne avec nom-prénom par exemple) de l’enregistrement est à la charge du développeur\\ 
 + 
 +=== La clef étrangère doit avoir le même nom que la clé primaire de la table référente (table_id) === 
 +{{:informatique:plus-circle.png|}} utilisation de jointure de type join using (table_id) mais cela peut rend plus difficile la compréhension du contenu\\ 
 +{{:informatique:minus-circle.png|}} utilisation de jointure de type join using (table_id) est impossible\\ 
 + 
 +=== Le nom des vues doit être préfixé par « v_ » === 
 +{{:informatique:plus-circle.png|}} plus facile de les repérer\\ 
 +{{:informatique:minus-circle.png|}} peu d’intérêt de les repérer\\ 
 + 
 +=== Le nom des attributs doit être préfixé par le nom de leur table et séparé par des _ s'il y a une ambiguïté possible avec d'autres tables === 
 +{{:informatique:plus-circle.png|}} lecture des requêtes facilité (absence d’ambiguïté), évite l'utilisation d'alias (cf. §Requêtes)\\ 
 +{{:informatique:minus-circle.png|}} nom à rallonge\\
  
-  * Le nom des objets et le commentaire doivent être en anglais\\ +=== Le nom des tables doit être aliaisé par une abréviation === 
-+ : langue internationale\\ +{{:informatique:plus-circle.png|}} lecture des requêtes facilité (absence d’ambiguïté) et nom court\\ 
-- : langue non maitrisée par tous (les nuances mises dans les commentaires peuvent être mal interprétées) \\ +{{:informatique:minus-circle.png|}} pas toujours facile de trouver une abréviation parlante\\
-  * La clef primaire doit être de type « serial » et nommée « table_id ».\\ +
-+ : porte sur une seule colonne et plus rapide pour l’indexation\\ +
-- : non significative et l’unicité de l’enregistrement est à la charge du développeur\\ +
-  * La clef étrangère doit avoir le même nom que la clé primaire de la table référente (table_id)\\ +
-+ : utilisation de jointure de type join using (table_id) mais cela peut rend plus difficile la compréhension du contenu\\ +
-- : utilisation de jointure de type join using (table_id) est impossible\\ +
-  * Le nom des vues doit être préfixé par « v_ »\\ +
-+ : plus facile de les repérer\\ +
-- : peu d’intérêt de les repérer\\ +
-  * Le nom des attributs doit être préfixé par le nom de leur table et séparé par des _\\ +
-+ : lecture des requêtes facilité (absence d’ambiguïté)\\ +
-- : nom à rallonge\\ +
-  * Le nom des tables doit être aliaisé par une abréviation\\ +
-: lecture des requêtes facilité (absence d’ambiguïté) et nom court\\ +
-: pas toujours facile de trouver une abréviation parlante\\+
  
  
Ligne 46: Ligne 54:
 L’utilisation de script SQL doit être privilégiée. Il doit être commentés et contenir les entêtes minimum suivantes (auteur / date de création / date de dernière mise à jour / utilité). Il doit être archivé, dans un gestionnaire de version de code si possible, ou dans un système de sauvegarde au moins journalier L’utilisation de script SQL doit être privilégiée. Il doit être commentés et contenir les entêtes minimum suivantes (auteur / date de création / date de dernière mise à jour / utilité). Il doit être archivé, dans un gestionnaire de version de code si possible, ou dans un système de sauvegarde au moins journalier
  
 +=== Utilisation des alias dans les requêtes complexes ===
 +{{:informatique:plus-circle.png|}}\\
 +  * facilite la lecture de la requête
 +  * indispensable si la même table est utilisée plusieurs fois dans la même requête (relations multiples)
 +  * les alias des tables sont utilisables dans les WHERE, HAVING et autre
 +{{:informatique:minus-circle.png|}}\\
 +  * compromis à trouver entre longueur de l'alias et signification
 +  * les alias des champs ne sont pas utilisables dans les mêmes WHERE, HAVING et autres
informatique/sgbd-best-practises.txt · Dernière modification : 2024/02/20 10:04 de bertrand