web-dev-qa-db-fra.com

Qu'est-ce qu'un préfixe de table?

Qu'est-ce qu'un préfixe de table et quels sont ses avantages et ses inconvénients? C'est en relation avec MySQL.

22
alioygur

Ceci est souvent utilisé pour distinguer les différentes installations du même script les unes des autres. Par exemple, disons que vous avez deux installations Joomla avec un contenu différent sur votre serveur, mais une seule base de données MySQL.

Maintenant, pour des raisons évidentes, les deux installations Joomla ne peuvent pas partager les mêmes tables de base de données, car cela entraînerait l'affichage des mêmes contenus sur les deux installations. Et c'est là que le préfixe entre en jeu.

En utilisant différents préfixes de table, vous pouvez indiquer à Joomla Installation # 1 qu'elle est censée utiliser toute la table avec Prefix JOS_ et Joomla Installation # 2 doit utiliser toutes les tables avec le préfixe JOS2_

21
user284291

Certaines personnes préconisent tbl ou tbl_ (par exemple tbl_MyTable ou tblMyTable) tandis que d'autres vont avec un suffixe tel que MyTable_T.

Personnellement j'évite les préfixes/suffixes. Je peux remplacer dans une vue à la place d'une table si un schéma change au fil du temps, donc je ne fais pas vraiment de distinction entre les deux types d'objet.

La chose la plus importante est que vous avez vos directives de dénomination documentées au sein de votre équipe et que vous respectez tous le même ensemble de directives pour la cohérence.

4
Chris W

Les tableaux ne nécessitent pas de préfixes.

Cela ne dépend que de vous.

Cependant, nous préfixons les tables par rapport aux MODULES dans l'application à laquelle elles appartiennent, juste pour regrouper les tables plus facilement.

3
Adriaan Stander

Les préfixes de table sont également utiles comme mesure de sécurité supplémentaire. Par exemple, l'ajout de préfixes de table masque les noms de table courants, ce qui rend plus difficile pour les pirates d'accéder aux données de votre base de données via l'injection SQL ou d'autres failles de sécurité, car ils devront d'abord découvrir quels sont vos noms de table.

Assurez-vous cependant de considérer les préfixes de table comme une autre couche de sécurité et non comme votre seule méthode de sécurité. Vous devez toujours prendre d'autres mesures de sécurité pour empêcher l'injection SQL et d'autres menaces similaires. Par exemple, selon la façon dont votre code est configuré, un pirate peut toujours exécuter une commande "show tables" via l'injection SQL pour obtenir les noms de vos tables de base de données.

3
kojow7

Étrange, personne n'a mentionné que vous pouvez également utiliser des préfixes de table pour utiliser des mots clés normalement réservés comme noms de table.

Par exemple. t_user ou t_order sont désormais possibles.

2
Tommy

Si vous avez un site Web et une structure de base de données compliqués, les préfixes de table peuvent aider à éviter les conflits de dénomination dans la base de données.

Vous voyez souvent des préfixes de table dans les situations où:

  • Plusieurs scripts sont intégrés ensemble dans un site Web et le site Web fini doit partager des données, mais les noms de table entreraient en conflit sans préfixe unique à chaque script.

  • Vous ajoutez des fonctionnalités à un script que vous avez acquis et vous souhaitez faire la distinction entre les tables natives de ce script et les nouvelles tables que vous créez manuellement. De cette façon, si vous créez une nouvelle table, elle n'entrera pas en conflit avec les futures mises à jour du script de base, car elle a un préfixe de table différent.

  • Vous avez un plan d'hébergement qui ne vous donne qu'une seule base de données et vous souhaitez utiliser cette base de données pour gérer plusieurs scripts. (Ce n'est pas recommandé pour diverses raisons, mais j'ai vu des utilisateurs le faire.)

Lorsque vous écrivez un script à partir de zéro, les préfixes de table ne sont généralement pas nécessaires car vous contrôlez tous les aspects de la structure de la base de données. C'est lorsque vous commencez à intégrer plusieurs scripts ensemble que cela devient utile et parfois même nécessaire. Il vous permet de créer des vues de données uniques et de joindre des tables, etc. entre plusieurs scripts sans vous soucier des conflits de dénomination dans la base de données.

1
Scott M. Stolz

Il peut être utile de faire la distinction entre les tables et les vues en fonction de votre convention de dénomination.

L'inconvénient est que vous pouvez être limité en ce qui concerne le nom d'une table. Oracle a une limite de 30 caractères pour cela. Si vous utilisez "Tbl_" comme préfixe, vous perdez automatiquement 4 caractères. C'est peut-être un problème.

0
sjngm