2011-07-09 7 views
27

¿Los guiones bajos en los nombres de tablas afectan el rendimiento o causan problemas en algunas plataformas?¿Los subrayados en una tabla MySQL causan problemas?

Por ejemplo, user_profiles

¿Sería mejor utilizar userProfiles o es sólo una cuestión de preferencia personal?

+3

Si tiene dos que comienzan con el mismo prefijo, PHPMyAdmin los agrupará en un árbol, sin embargo, esto no afecta a la base de datos subyacente de ninguna manera. –

+0

No, no hay problemas de rendimiento. –

Respuesta

39

No. Los subrayados son perfectamente legales en los nombres de las tablas.

Este page here en la documentación de MySQL le informa sobre qué caracteres están permitidos.

Básicamente:

caracteres permitidos en los identificadores no cotizados:

ASCII: [0-9, az, AZ $ _]
extendido: U + 0080 .. U + FFFF

caracteres permitidos en identificadores entre comillas:

ASCII: U + 0001 .. U + 007F
extendido: U + 0080 .. U + FFFF

Personalmente tiendo a quedarme con la minúscula a-z, el número ocasional y los guiones bajos. Pero como dijo @Vince, es solo preferencia personal.

+0

¿Quién votó mi respuesta al menos puede decirme por qué? – Ben

+1

Quizás no para guiones bajos, pero para un guion (signo menos) tiene un error conocido en algunas versiones, al menos: https://bugs.mysql.com/bug.php?id=55556 – RobIII

1

No hay problema con el uso de guiones bajos. Creo que es solo preferencia personal.

3

Encontré algunos enlaces a errores de MySQL que se han marcado como cerrados o no se pueden reproducir con guiones bajos. Por lo que yo sé, no hay problemas. Siempre uso guiones bajos sobre camel-case y no he tenido ningún problema.

2

No hay nada de malo con el uso de guiones bajos, pero tenga en cuenta que puede haber ocasiones en las que necesite escapar del guión bajo, p. Ej. My\_Table

+2

Esto generalmente se puede evitar si cita tus nombres de tabla. por ejemplo, '\' My_Table \ '' – Ben

0

Nunca tuve problemas con el guión bajo al nombrar mis tablas. Es solo preferencia personal.

3

El único problema que he visto es que al usar mysqlshow para ver la estructura de una tabla, parece tratar el guión bajo como un comodín y devuelve solo los nombres de tabla coincidentes si hay un guión bajo en el nombre.

No pude encontrar la forma de ver la estructura de la tabla si hay un guion bajo en el nombre. Acabo de descubrirlo y confirmé esto esta mañana.

Sé que esto es cierto para las versiones de MySQL 4.0.18 y 4.1.22 para las versiones anteriores y 5.1.52 para las más recientes. Tal vez esto esté documentado en alguna parte (no me he tomado el tiempo para mirar todavía), pero podría ser algo desconcertante para los demás, así que decidí mencionarlo cuando me encontré con esta pregunta cuando busqué información sobre el problema yo mismo.

+2

Me alegro de que haya notado esto, me confundió también. Más explicación aquí: http://kb.ucla.edu/articles/why-doesnt-mysqlshow-work-for-databases-or-tables-with-underscores-in-their-names – dukedave

2

No, está perfectamente bien. De hecho, es la denominación más recomendada de MySQL (¡en función de a quién nombren sus tablas internas!).

Tenga en cuenta que nombrar que en Microsoft Windows el comportamiento predeterminado de MySQL es en minúsculas los nombres de su tabla. Esto puede causar problemas.No estoy seguro de qué causa esto.

Sin embargo, yo personalmente prefiero nombrar mis tablas como UserLikesPage, User y PostComment por ejemplo, ya que refleja el nombre de clase en mi código y no uso de Windows con MySQL.

0

Muchas herramientas de visualización de bases de datos como SQuirreL SQL y DbVisualizer también tratan el guión bajo como una especie de comodín, agrupando tablas que "coinciden" en un árbol. Por ejemplo, una tabla "document_a" y tablas relacionadas "document_a_details", "document_a_history". En DbVisualizer, mirar la tabla "document_a" muestra columnas para las tres tablas.

Esto generalmente no es un problema, pero puede ser confuso. Por ejemplo, el uso de las herramientas de gráficos de SQuirreL SQL para generar ERD combina columnas de varias tablas en una sola tabla y dibuja conectores para las relaciones de todas estas columnas en el ERD. Esto da como resultado el establecimiento de relaciones que en realidad no existen.

Por esta razón, no incluiría guiones bajos en los nombres de las tablas.

2

Debe evitarlo. Aunque es un carácter permitido en la documentación de MySQL, parece que podría causar problemas. Por ejemplo, en MySQL 5.0 & 5.1 (y pueden ser versiones posteriores), el caché de consultas nunca se utiliza para consultas que implican un nombre de tabla que contiene un guión bajo.

2

No, los subrayados en una base de datos nunca causan ningún problema. Mi experiencia dice que es una mejor idea identificar palabras en una columna de base de datos.

Si usamos 'thisIsMyColumn' como nombre de columna, es fácil escribirlos, pero 'this_is_my_column' como nombre de columna es más legible que el anterior.

Cuestiones relacionadas