usar una tablas procedimiento para nomenclatura nombre nombrar los las hora estandares diseñar datos costumbre como campos buena almacenado sql database naming-conventions

sql - una - ¿Deberíamos usar prefijos en las convenciones de nombres de tablas de nuestra base de datos?



nomenclatura base de datos mysql (7)

Estamos decidiendo la convención de nombres para tablas, columnas, procedimientos, etc. en nuestro equipo de desarrollo en el trabajo. El nombramiento de la tabla singular-plural ya se ha decidido , estamos usando singular. Estamos discutiendo si usar un prefijo para cada nombre de tabla o no. Me gustaría leer sugerencias sobre el uso de un prefijo o no, y por qué.

¿Proporciona alguna seguridad (al menos un obstáculo más para un posible intruso)? Creo que generalmente es más cómodo nombrarlos con un prefijo, en caso de que usemos el nombre de una tabla en el código, para no confundirlos con variables, atributos, etc. Pero me gustaría leer opiniones de desarrolladores más experimentados.


Encuentro prefijos húngaros de objeto DB para indicar que sus tipos son bastante molestos.

He trabajado en lugares donde cada nombre de tabla tenía que comenzar con "tbl". En todos los casos, la convención de nombres terminó causando mucho dolor cuando alguien necesitaba hacer un cambio menor.

Por ejemplo, si su convención es que las tablas comienzan con "tbl" y las vistas comienzan con "v", entonces, ¿qué es lo que debe hacer cuando decide reemplazar una tabla con otras cosas en el back-end y proporciona una vista de compatibilidad o incluso como la interfaz preferida? Terminamos teniendo puntos de vista que comenzaron con "tbl".


No veo cómo una convención de nombres puede mejorar la seguridad ...

Si un intruso tiene acceso a la base de datos (con permisos dañinos), ciertamente tendrá permisos para enumerar nombres de tablas y seleccionar para ver para qué se utilizan.

Pero creo que los nombres de tabla realmente confusos podrían empeorar indirectamente la seguridad. Haría aún más difícil el desarrollo, reduciendo así las posibilidades de que se solucionen los problemas de seguridad, o incluso podría ocultar posibles problemas:

Si una tabla llamada (por ejemplo) ''sro235onsg43oij5'' está llena de columnas con números aleatorios con cadenas y números aleatorios, un nuevo desarrollador podría pensar que son datos de prueba aleatorios (a menos que toque el código que interactúa con ella), pero si fue nombrado ''userpasswords'' o similar cualquier desarrollador que mire la tabla quizás se sorprenda de que las contraseñas estén almacenadas en texto plano.


Prefiero tablas de prefijación y otros objetos de base de datos con un nombre corto de la aplicación o solución.

Esto ayuda en dos situaciones potenciales que vienen a la mente:

  1. Es menos probable que tenga conflictos de nomenclatura si opta por utilizar componentes de marco de terceros que requieren tablas en la base de datos de su aplicación (por ejemplo, el proveedor de membresía asp net).

  2. Si está desarrollando soluciones para clientes, pueden estar limitadas a una única base de datos (especialmente si están pagando por alojamiento externo), lo que requiere que almacenen los objetos de la base de datos para múltiples aplicaciones en una única base de datos.


Si le preocupa mezclar los nombres de su tabla, emplee un sistema de estilo de notación húngaro en su código. Tal vez "s" para string + "tn" para nombre de tabla:

stnUsers = ''users''; stnPosts = ''posts'';

Por supuesto, el prefijo depende de usted, dependiendo de qué tan detallado le gusta su código ... strtblUsers, strtblnmeUsers, thisisthenameofatableyouguysUsers...

Agregar un prefijo a los nombres de tabla tiene algunos beneficios, especialmente si no codifica ese prefijo en el sistema y permite que cambie por instalación. Por un lado, corre menos riesgo de conflictos con otros componentes, como dijo Ian, y en segundo lugar, si lo desea, podría tener dos o instancias de su programa ejecutándose en la misma base de datos.


Si usa SqlServer, el buen comienzo sería mirar las bases de datos de muestra proporcionadas para obtener alguna orientación.


¿Por qué no nombrar las tablas de acuerdo con las pautas que tiene establecidas para la codificación? Considere el nombre de la tabla como "clase" y las columnas como "propiedad" o "campo". Esto ayuda cuando se usa un ORM que puede automáticamente deducir la denominación de tabla / columna del nombre de clase / miembro.

Por ejemplo, Castle ActiveRecord , declarado como a continuación, asume que los nombres son los mismos que el miembro en el que se encuentran.

[ActiveRecord] public class Person { [PrimaryKey] public Int32 Id { get; set; } [Property] public String Name { get; set; } }


En el pasado, me he opuesto al uso de prefijos en nombres de tablas y columnas. Sin embargo, cuando se enfrenta con la tarea de rediseñar un sistema, tener prefijos es invaluable para realizar búsquedas y reemplazar. Por ejemplo, desgranar para "tbl_product" probablemente le dará resultados mucho más relevantes que "grepping" para "producto".