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
informatique:sgbd-best-practises [2020/05/12 16:29] – créée bertrandinformatique:sgbd-best-practises [2024/02/20 10:04] (Version actuelle) – [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\\ +=== Le nom des objets et le commentaire doivent être en anglais === 
-: langue internationale\\ +{{:informatique:plus-circle.png|}} langue internationale\\ 
-: langue non maitrisée par tous (les nuances mises dans les commentaires peuvent être mal interprétées) \\ +{{: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 ».\\ + 
-: porte sur une seule colonne et plus rapide pour l’indexation\\ +=== La clef primaire doit être de type « serial » et nommée « table_id » === 
-: non significative et l’unicité de l’enregistrement est à la charge du développeur\\ +{{: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\\ 
-  La clef étrangère doit avoir le même nom que la clé primaire de la table référente (table_id)\\ +{{: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\\ 
-: 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\\ +=== La clef étrangère doit avoir le même nom que la clé primaire de la table référente (table_id) === 
-  Le nom des vues doit être préfixé par « v_ »\\ +{{:informatique:plus-circle.png|}} utilisation de jointure de type join using (table_id) mais cela peut rend plus difficile la compréhension du contenu\\ 
-: plus facile de les repérer\\ +{{:informatique:minus-circle.png|}} utilisation de jointure de type join using (table_id) est impossible\\ 
-: 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 _\\ +=== Le nom des vues doit être préfixé par « v_ » === 
-: lecture des requêtes facilité (absence d’ambiguïté)\\ +{{:informatique:plus-circle.png|}} plus facile de les repérer\\ 
-: nom à rallonge\\ +{{:informatique:minus-circle.png|}} peu d’intérêt de les repérer\\ 
-  Le nom des tables doit être aliaisé par une abréviation\\ + 
-: lecture des requêtes facilité (absence d’ambiguïté) et nom court\\ +=== 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 === 
-: pas toujours facile de trouver une abréviation parlante\\+{{: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 tables doit être aliaisé par une abréviation === 
 +{{:informatique:plus-circle.png|}} lecture des requêtes facilité (absence d’ambiguïté) et nom court\\ 
 +{{:informatique:minus-circle.png|}} pas toujours facile de trouver une abréviation parlante\\
  
  
 ===== Les requêtes ===== ===== Les requêtes =====
 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
 +
 +===== Références =====
 +  * [[wpfr>12_règles_de_Codd|les 12 règles de Codd]] et notamment la règle 1 : l’unicité
 +  * [[wpfr>Propriétés_ACID|les propriétés ACID]]
  
informatique/sgbd-best-practises.1589293777.txt.gz · Dernière modification : 2020/05/12 16:29 de bertrand