J'ai lu quelques questions / réponses sur StackOverflow en essayant de trouver le `` meilleur '', ou devrais-je dire le moyen accepté, de nommer des tables sur une base de données.
La plupart des développeurs ont tendance à nommer les tables en fonction du langage qui requiert la base de données (JAVA, .NET, PHP, etc.). Cependant, je pense que ce n'est pas juste.
La façon dont j'ai nommé les tables jusqu'à présent est de faire quelque chose comme:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Les choses qui me concernent sont:
- Lisibilité
- Identification rapide du module de la table (médecins || patients)
- Facile à comprendre, pour éviter les confusions.
J'aimerais lire les opinions concernant les conventions de dénomination. Merci.
database
database-design
MarioRicalde
la source
la source
J'utilise généralement PascalCase et les entités sont singulières:
Il imite les conventions de dénomination des classes de mon application en gardant tout assez net, propre, cohérent et facile à comprendre pour tout le monde.
la source
Nature insensible à la casse des supports SQL
Underscores_Scheme
. Les logiciels modernes prennent cependant en charge tout type de schéma de dénomination. Cependant, parfois, certains bugs, erreurs ou facteurs humains peuvent conduire àUPPERCASINGEVERYTHING
ce que ceux qui ont choisi les deuxPascal_Case
et leUnderscore_Case
plan vivent avec tous leurs nerfs en bonne place.la source
Une agrégation de la plupart des éléments ci-dessus:
Ensuite, vous pouvez facilement traduire (même automatiquement) les noms entre les environnements.
Mais j'ajouterais une autre considération: vous constaterez peut-être qu'il existe d'autres facteurs lorsque vous passez d'une classe de votre application à une table de votre base de données: l'objet de base de données a des vues, des déclencheurs, des processus stockés, des index, des contraintes, etc. ont également besoin de noms. Ainsi, par exemple, vous pouvez vous retrouver à n'accéder qu'aux tables via des vues qui ne sont généralement qu'un simple "select * from foo". Ceux-ci peuvent être identifiés comme le nom de la table avec juste le suffixe «_v» ou vous pouvez les mettre dans un schéma différent. Le but d'une couche d'abstraction aussi simple est qu'elle peut être étendue si nécessaire pour permettre des changements dans un environnement afin d'éviter d'avoir un impact sur l'autre. Cela ne casserait pas les suggestions de nommage ci-dessus - juste quelques autres choses à prendre en compte.
la source
J'utilise des traits de soulignement. J'ai fait un projet Oracle il y a quelques années, et il semblait qu'Oracle forçait tous mes noms d'objet en majuscules, ce qui détruisait tout schéma de casse. Je ne suis pas vraiment un gars d'Oracle, alors peut-être qu'il y avait un moyen de contourner cela dont je n'étais pas au courant, mais cela m'a fait utiliser des traits de soulignement et je n'y suis jamais retourné.
la source
Étant donné que la question n'est pas spécifique à une plate-forme ou à un moteur de base de données particulier, je dois dire que pour une portabilité maximale, vous devez toujours utiliser des noms de table en minuscules.
/ [a-z _] [a-z0-9 _] * / est vraiment le seul modèle de noms qui se traduit de manière transparente entre différentes plates-formes. Les minuscules alphanumériques + soulignement fonctionneront toujours de manière cohérente.
Comme mentionné ailleurs, les noms de relation (table) doivent être au singulier: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
la source
J'ai tendance à être d'accord avec les gens qui disent que cela dépend des conventions de langage que vous utilisez (par exemple PascalCase pour C # et snake_case pour Ruby).
Jamais camelCase, cependant.
la source
Après avoir lu beaucoup d'autres opinions, je pense qu'il est très important d'utiliser les conventions de dénomination du langage, la cohérence est plus importante que les conventions de dénomination uniquement si vous êtes (et serez) le seul développeur de l'application. Si vous voulez une lisibilité (ce qui est d'une importance capitale), il vaut mieux utiliser les conventions de dénomination pour chaque langue. Dans MySQL par exemple, je ne suggère pas d'utiliser CamelCase car toutes les plates-formes ne sont pas sensibles à la casse. Donc, ici, le soulignement va mieux.
la source
camelCase
àcamelcase
. Donc, avoir un cas de serpent est bien mieux. De plus,Modern software however supports any kind of naming scheme
vous n'avez aucune garantie que vous écrirez du code pour la dernière version du logiciel. Surtout pour la base de données - la mise à jour de la version n'est pas anodine quand on pense aux coûts de régression.Ce sont mes cinq cents. Je suis arrivé à la conclusion que si des bases de données de différents fournisseurs sont utilisées pour un projet, il existe deux meilleures façons:
La raison en est que certaines bases de données convertissent tous les caractères en majuscules et certains en minuscules. Donc, si vous l'avez,
myTable
il deviendraMYTABLE
oumytable
quand vous travaillerez avec DB.la source
Malheureusement, il n'y a pas de «meilleure» réponse à cette question. Comme @David l'a déclaré, la cohérence est bien plus importante que la convention de dénomination.
la source
il y a une grande variabilité sur la façon de séparer les mots, vous devrez donc choisir ce que vous préférez; mais en même temps, il semble qu'il y ait presque un consensus sur le fait que le nom de la table doit être au singulier.
la source
Les conventions de dénomination existent dans le cadre d'une langue, et différentes langues ont des conventions de dénomination différentes.
SQL est insensible à la casse par défaut; ainsi, snake_case est une convention largement utilisée. SQL prend également en charge les identificateurs délimités; donc, casse mixte dans une option, comme camelCase (Java, où champs == colonnes) ou PascalCase (C #, où tables == classes et colonnes == champs). Si votre moteur de base de données ne prend pas en charge la norme SQL, c'est son problème. Vous pouvez décider de vivre avec cela ou choisir un autre moteur. (Et pourquoi C # devait juste être différent est un point d'aggravation pour ceux d'entre nous qui codent dans les deux.)
Si vous avez l'intention de n'utiliser qu'une seule langue dans vos services et applications, utilisez les conventions de cette langue à toutes les couches. Sinon, utilisez les conventions les plus largement utilisées de la langue dans le domaine où cette langue est utilisée.
la source