Question

J'ai remarqué que de nombreuses entreprises utilisent un préfixe pour leurs tables de base de données. Par exemple. les tables s'appelleraient MS_Order, MS_User, etc. Y a-t-il une bonne raison pour cela?

La seule raison pour laquelle je peux penser est d'éviter la collision de noms. Mais est-ce que ça arrive vraiment? Les gens exécutent-ils plusieurs applications dans une base de données? Y a-t-il une autre raison?

Était-ce utile?

La solution

Dans SQL Server 2005 et versions ultérieures, la fonctionnalité de schéma élimine le besoin de tout type de préfixe. Vous trouverez un bon exemple de leur utilisation en lisant les Schémas dans AdventureWorks .

Dans certaines versions plus anciennes de SQL Server, il pouvait s'avérer utile de disposer d'un préfixe pour créer un pseudo-espace-noms avec des DB comportant de nombreuses tables.

En dehors de cela, je ne vois pas vraiment le problème.

Autres conseils

Personnellement, je n'y vois aucune valeur. En fait, c’est décevant pour les fonctionnalités de type intellisense car tout commence par MS_. :) Le Maître est également d'accord avec moi .

Les schémas gigantesques comportent souvent de nombreuses tables ayant des objectifs similaires, mais distincts. Ainsi, divers "segmentés &"; conventions de dénomination.

Zut, n'a pas eu le premier message: -)

Même lorsque la base de données ne contient qu'une seule application, les préfixes peuvent être utiles pour regrouper des parties identiques de l'application. Ainsi, les tables contenant des informations de client peuvent être précédées de cust_, celles qui contiennent des informations d’entrepôt peuvent être précédées de inv_ (pour inventaire), celles qui contiennent des informations financières peuvent être précédées de fin_, etc.

J'ai travaillé sur des systèmes comportant une base de données existante pour une application créée et gérée par une société différente et nous devions ajouter une autre application utilisant de grandes quantités de données identiques avec seulement quelques tables supplémentaires. de notre côté, alors dans ce cas, avoir un préfixe spécifique à l'application peut aider à la séparation.

Légèrement tangentiellement à la question initiale, j'ai constaté que les bases de données utilisaient des préfixes pour indiquer le type de données qu'une table est en train de contenir. Il y aurait un préfixe pour les tables de recherche qui sont évidemment assez statiques à la fois en taille et en contenu et un préfixe différent pour les tables contenant des données variables. Cela peut à son tour être divisé en un préfixe pour les tables ajoutées mais non réellement modifiées, comme la consignation, les ordres traités, les transactions client, etc., et un autre pour les données plus variables telles que le solde client ou autre. Les tables de liens peuvent également avoir leur propre préfixe pour les séparer également.

Je n'ai jamais vu de conflit de noms, car il n'est généralement pas logique de placer des tables de différentes applications dans le même espace de noms de base de données. Si vous aviez une sorte de bibliothèque réutilisable pouvant être intégrée à différentes applications, peut-être que ce serait une raison, mais je n'ai rien vu de tel.

Bien que, maintenant que j'y réfléchisse, il existe des fournisseurs d'hébergement Web bon marché qui n'autorisent que les utilisateurs à créer un très petit nombre de bases de données. Il serait donc possible d'exécuter différentes applications à l'aide d'une seule base de données. tant que les noms ne se sont pas entrés en collision (et une telle convention de préfixage serait certainement utile).

Plusieurs applications utilisant une table particulière, correct. Les préfixes empêchent la collision de noms. En outre, il est assez simple de sauvegarder les tables et de les conserver dans la même base de données. Il suffit de changer le préfixe pour que votre sauvegarde soit pleinement fonctionnelle, etc. Cela mis à part, il ne s'agit que d'une bonne pratique.

Les préfixes sont un bon moyen de déterminer quels objets SQL sont associés à quelle application lorsque plusieurs applications plongent dans la même base de données.

J'ai également préfixé les objets SQL différemment au sein de la même application pour faciliter la gestion de la sécurité. c'est-à-dire que tous les objets avec admin_ ont besoin de cette sécurité et le reste a besoin d'autre chose.

Les préfixes peuvent être pratiques pour les humains, les outils de recherche et les scripts. Si la situation est simple, cependant, ils ne serviront probablement à rien.

Il est le plus souvent utilisé si plusieurs applications partagent une même base de données. Par exemple, si vous installez Wordpress, il préfixe toutes les tables avec "wp_". Cela est utile si vous souhaitez que vos applications partagent très facilement les données (sessions sur toutes les applications de votre entreprise, par exemple).

Cependant, il existe de meilleures façons de le faire, et je ne préfixe jamais les noms de mes tables, car chaque application possède sa propre base de données autonome.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top