Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1008 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL: Bonnes pratiques et conventions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL: Bonnes pratiques et conventions

n°2341559
tompouss
Petit chat
Posté le 15-11-2019 à 18:38:55  profilanswer
 

Bonjour,
 
j'ouvre ce topic pour connaitre les bonnes pratiques et conventions (standardisées ou non) que vous utilisez pour créer vos schémas de DB.
Je pense que c'est important pour éviter des problèmes (surtout quand on est un débutant)
 
Voici les miennes:
 
nom de tables et champs
 
- toujours au singulier:
avant je nommais mes tables au pluriel, car c'était plus logique, mais apparemment, le standard SQL préconise le singulier (donc user au lieu de users).
(Après lectures d'articles, il semblerait que le pluriel pose des problèmes dans certains cas)
 
- noms en anglais
- minuscules
- nom composés: séparés par des undescores


Message édité par tompouss le 16-11-2019 à 21:49:35
mood
Publicité
Posté le 15-11-2019 à 18:38:55  profilanswer
 

n°2341563
antac
..
Posté le 15-11-2019 à 20:26:07  profilanswer
 

Nom des tables : toujours au singulier, toujours en minuscule
Nom des colonnes : lower camelcase : id_Candiat
Tables filles (relation 1-n)  : nom du parent en préfixe, séparé par un undescore. ex: candidat, candidat_suivi et candidat_suivi_avis par exemple sur 3 niveaux  
Noms composés : collés (exemple : candidat_compterendu)
 
Déclaration des clés étrangères dans le schéma en évitant la suppression en cascade (je préfère le remplacement par NULL). Gestion de la suppression en cascade via triggers (after_delete) pour logger l'opération.
Nom des clés étrangères correspondant à la clé primaire : id_Candidat de la table candidat (clé primaire) et id_Candidat dans candidat_suivi comme clé étrangère
 
En gros pour ma part.


Message édité par antac le 15-11-2019 à 20:29:28
n°2341877
TotalRecal​l
Posté le 21-11-2019 à 08:26:32  profilanswer
 

Mes habitudes (qui ne sont pas forcément des conventions) :
 
- Bases en majuscules, tables et colonnes en minuscule (PascalCase, pas d'underscores sauf parfois pour séparer des groupes de noms composés).
- Tables au pluriel, colonnes au singulier. Pk : NomDeLaTableId, FK : NomDeLaTableId.
 
Les tables au pluriel c'est pas systématique, c'est une considération pour le dév : lors de l'utilisation d'un ORM ça permet d'avoir des noms de classes différents entre la DAL et les couches métiers/UI vu que le "s" va disparaitre.  
 
Une autre option c'est d'ajouter à la main un suffixe pour toutes les classes liées à l'ORM (genre "Record" ).
 
Pas d'actions en cascades.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2341976
rufo
Pas me confondre avec Lycos!
Posté le 21-11-2019 à 22:50:14  profilanswer
 

Je fais à peu près comme TotalRecall sauf pour les majuscules/minuscules.
Tables au pluriel. Ex : MeetingRooms
Colonnes en reprenant le nom de la table mais au singulier. Ex : MeetingRoomID, MeetingRoomName...
Pour les clés étrangères, je reprends le nom de la clé primaire d'où provient la clé étrangère.
Pour les relations n-n, j'accole le nom des 2 ou 3 tables concernées.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2342536
Hermes le ​Messager
Breton Quiétiste
Posté le 30-11-2019 à 22:10:19  profilanswer
 

Dans mon cas :
 
Tables toujours au pluriel.
Colonnes toujours au singulier sauf exception si la colonne contient un array ou un JSON.
Aucune majuscule. J'utilise l'underscore pour séparer les mots
J'utilise le "2" pour les relations. Exemple message2users
 
Mais bon, tout cela est une question d'habitude avant tout. L'essentiel, c'est que celui qui récupère le code comprenne bien de quoi il s'agit.


---------------
Expert en expertises
n°2386584
djinto
Posté le 30-05-2021 à 19:06:40  profilanswer
 

Bonjour,

 

pour les tables : en majuscules et noms singuliers, courts. pas d'acronymes.

 

pour les colonnes :
idem
je mets souvent les 3 premieres lettres du nom de la table puis un 'underscore' en séparateur ( pour une lecture plus facile ) et le nom de colonne toujours en majuscule.

 

ID toujours en premier ( un ID ça types la table , relation aussi , car des tables n'ont pas toujours un ID pour elles ).
les ID ( clé étrangères ) en fin de table, c'est un reste de cours ( CREATE TABLE .... ).

 

Je vais vers les majuscules , car :
- c'est core ..  c'est pas du texte pour GUI
- c'est une ressource system/software au moment ou je code.
- et surtout pour éviter de m'emmeler les pinceaux quand c'est la grande heure de la requete de 15 km ... je me trompes moins comme ça.
- lecture + rapide, c'est des repères visuels oui. ( min != caps )
- je rends développement durable les touches Verr Maj et la touche shift.
- moins de swap MIN / maj

 

PK : primary Key  , c'est comme ID ... pourquoi pas après tout.


Message édité par djinto le 30-05-2021 à 19:19:17

---------------
Nom : Prénom : Age : Adresse : Ville : Code Postal : Num Trois Tel
n°2386601
rufo
Pas me confondre avec Lycos!
Posté le 31-05-2021 à 08:24:14  profilanswer
 

djinto, c'est moi ou depuis 3-4j, tu nous fais des réponses très détaillées à tous les topics sur le SQL (voire déterrages comme dans le cas présent) ?  :whistle:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2386708
djinto
Posté le 31-05-2021 à 22:15:24  profilanswer
 

rufo a écrit :

djinto, c'est moi ou depuis 3-4j, tu nous fais des réponses très détaillées à tous les topics sur le SQL (voire déterrages comme dans le cas présent) ?  :whistle:

 

euh ... si c'est toi , préviens quand même ... je lui dirai tout de suite  ;)
je voulais répondre à toutes cases 'input' disponibles , mais au boulot ils ont grognés. [ //fin joke

 

pour le déterrage ... je lis pas les dates , c'est autre chose.

 

Une autre fois, j'ai dit "merci" sur un post qui avait presque 20 ans... ça m'a pas trop gêné.


Message édité par djinto le 31-05-2021 à 22:17:26
n°2386755
TotalRecal​l
Posté le 01-06-2021 à 07:19:10  profilanswer
 

Bon, en même temps le déterrage sur une cat aussi populaire que celle-ci c'est très relatif, il suffit de descendre rien qu'en bas de la première page pour avoir fait un bond de deux ans en arrière :o


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2387016
rufo
Pas me confondre avec Lycos!
Posté le 02-06-2021 à 18:46:03  profilanswer
 

djinto, il est en train de nous remonter tous les topics de la cat SQL, avec des réponses en mode "pavé" à chaque fois. Il est chaud :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL: Bonnes pratiques et conventions

 

Sujets relatifs
[SQL] Double compte sur 2 tables en 1 requete [résolu]Problème pour structurer le résultat d'une requete SQL
[RÉSOLU] [SQL] simplifier 4 requetes en 1Identifier la clause where succès dans requête SQL
Création d'une liste en SQL[PHP] SQL_SRV ne fonctionne point :(
SQL Créer une vue avec Nom Champs et Valeur dans des enregistrements[SQL Server - Cobol] Donnée DATETIME2
Boucle en SQLGestionnaire de contenu moderne [PHP, SQL] Forum de discussion
Plus de sujets relatifs à : SQL: Bonnes pratiques et conventions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR