Quelle est la meilleure pratique pour nommer les tables de base de données pour fournir une organisation naturelle?
Nous mettre le bon préfixes sur les tables connexes pour assurer qu'ils affichent les uns à côté des autres dans notre logiciel de gestion de base de données (Crapaud, Enterprise Manager, etc).
Ainsi, par exemple, toutes les tables utilisateur de commencer par le mot d'Utilisateur:
- Utilisateur
- UserEvent
- UserPurchase
Idéalement, en l'honneur de la trois grandes vertus d'un programmeur ces tableaux doit être nommé de l'Utilisateur, l'Événement, l'Achat, respectivement, pour sauver un peu de temps, d'accord?
Est cette convention de nommage le meilleur (le seul?) pratique pour le regroupement des tables liées ensemble naturellement?
source d'informationauteur Cory House
Vous devez vous connecter pour publier un commentaire.
J'ai tendance à aller à contre-courant dans les conventions de nommage sur deux chefs d'accusation ici...
Je n'aime pas utiliser les préfixes de sorte que les choses se regrouper dans une INTERFACE utilisateur. Pour moi, les tables doivent être nommés tels que dans le code, ils sont facilement lisibles et intelligibles. Il existe de nombreuses études (souvent ignorés par les programmeurs) qui montrent que des choses comme l'utilisation de traits de soulignement, des noms logiques, en éliminant les abréviations, et en éliminant des choses comme les préfixes ont un très grand impact sur la compréhension et la vitesse de travail avec code. Aussi, si vous utiliser des préfixes à briser les tables que faites-vous quand un tableau est utilisé par plusieurs - ou même pire, il commence dans une seule région, mais plus tard, commence à être utilisé dans une autre région. Avez-vous maintenant à renommer la table?
J'ai presque complètement ignorer le nom de longueurs. Je suis beaucoup plus préoccupé par la lisibilité et la compréhensibilité que je suis sur le point de prendre 1/10e de seconde de plus pour le type d'une colonne ou d'un nom de table. Lorsque vous gardez aussi à l'esprit tout le temps gaspillé à essayer de se rappeler si vous avez abrégé "nombre", "non", "num" ou "nbr" et garder à l'esprit l'utilisation de choses comme Intellisense, à l'aide de plus de, de noms plus significatifs est une évidence pour moi.
Avec ces choses à l'esprit, si votre UserEvents table a vraiment à voir avec les événements liés à un utilisateur alors que nom tout à fait logique. En utilisant seulement les Événements finiront de vous donner un mal nommée table parce que le nom n'est pas assez clair à mon avis.
Espérons que cette aide!
Je ne voudrais pas utiliser une convention de nommage pour les fins de classement en ordre alphabétique les noms de table. C'est agréable quand il fonctionne de cette façon, mais cela ne devrait pas être de par leur conception.
Lire Joe Celko du livre "SQL Style de Programmation." Son premier chapitre de ce livre est à propos des conventions de nommage, guidée par la norme ISO 11179 norme de métadonnées de nommage. L'une de ses recommandations est d'éviter les préfixes dans votre convention de nommage.
Je voudrais utiliser cette notation, je.e "UserEvent" dans le cas où ce tableau est une représentation de plusieurs-à-plusieurs relation entre "Utilisateur" et "Événement" tables de.
Je pense que cela dépend de la façon dont vous envisagez d'élargir votre modèle de données. Par exemple, si vous avez décidé que non seulement vous voulez avoir les Événements de l'Utilisateur, mais aussi, Compte des Événements ou des Événements d'ouverture de session, et de l'Utilisateur, les Comptes et les Connexions sont tous les différents types d'entités, mais ils partagent certains Événements. Dans ce cas, vous pourriez vouloir une base de données normalisée modèle:
Je suppose que la convention de nommage dans SQL est ou, au moins, devrait suivre les mêmes lignes directrices que celles utilisées dans d'autres langages de programmation. J'ai toujours préféré les noms de variables /nom de la classe qui identifie clairement le but et cela signifie généralement plus de la frappe. Je pense que le importent chose à retenir est que le code est écrit une fois, mais lire un grand nombre de fois, de sorte que la clarté est essentielle.
Depuis 4 ou 5 ans, j'ai remarqué que les noms de variable sont passés de "eDS" à "employeeDataSet" et je pense que cette fonctionnalité est la principale raison pour cela.
Je pense que nous verrons la même chose se produire dans SQL depuis la Porte Rouge Invite SQL et maintenant MME SQL2008 ont introduit Intellisense dans le mainstrem base de données au monde.
J'ai aussi éviter d'utiliser des préfixes afin d'obtenir un sens de l'classés par ordre alphabétique de la liste. C'est généralement une mauvaise gestion des données l'utilisation des noms de cette façon. Si les tables sont étroitement liés, puis le logiciel qui gère le modèle de données doit être en mesure de modéliser les relations entre les tables, indépendamment de la façon dont les tables sont nommés.
Un nom comme UserEvents doit être utilisée lorsque le contenu de chaque ligne décrit une relation entre un Utilisateur et un Événement. Si je n'ai vu une table dans une base de données qui était nouveau pour moi, je m'attends à voir une clé primaire de cette table composée de deux clés étrangères, l'un à la table des Utilisateurs et l'autre à la table des Événements.
Si j'ai vu quelque chose de différent, j'aurais à ralentir, jusqu'à ce que j'ai compris le concepteur de la convention.
Ce dernier point soulève quelques questions: la maison de nombreuses nouvelles personnes viendront jusqu'à la vitesse sur la base de données? Quels sont les documents ces gens ont-ils disponibles? Quelle est l'importance de ces nouvelles personnes à la réussite du projet que ijncludes la base de données, ou le succès du concepteur de base de données?
Personnellement, je préfère de nommage des conditions similaires à ce que vous avez indiquées, car c'est un très logique, elles sont organisées de sorte que vous pouvez les trouver facilement, et dans l'ensemble des bits supplémentaires de taper n'a généralement pas causer de nombreux problèmes ou des réductions de temps.
Personnellement je renomme mes tables comme ceci: