Pregunta

Digamos que tengo dos tablas:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

¿Cómo debo llamar a la tabla que asigna el color a la forma?

Table: ???
Columns: ColorId, ShapeId
¿Fue útil?

Solución

  

Solo hay dos cosas difíciles en   Informática: invalidación de caché   y nombrar cosas
- Phil Karlton

La aparición de un buen nombre para una tabla que representa una relación muchos a muchos hace que la relación sea más fácil de leer y comprender. A veces, encontrar un gran nombre no es trivial, pero generalmente vale la pena pasar un tiempo pensando en eso.

Un ejemplo: Reader y Newspaper .

Un Periódico tiene muchos Lectores y un Reader tiene muchos Newspapers

Podría llamar a la relación NewspaperReader pero un nombre como Subscription podría transmitir mejor de qué trata la tabla.

El nombre Subscription también es más idiomático en caso de que desee asignar la tabla a objetos más adelante.

La convención para nombrar tablas many-to-many es una concatenación de los nombres de ambas tablas que están involucradas en la relación. ColourShape sería un valor predeterminado razonable en su caso. Dicho esto, creo que Nick D se le ocurrieron dos excelentes sugerencias: Style y Texture .

Otros consejos

¿Qué tal ColorShapeMap o Estilo o Textura .

Interesante sobre la mitad de las respuestas dan un término general para cualquier tabla que implemente una relación de muchos a muchos, y la otra mitad de las respuestas sugiere un nombre para esta tabla específica.

Llamé a estas tablas tablas de intersección en general.

En términos de convenciones de nomenclatura, la mayoría de las personas dan un nombre que es una amalgama de las dos tablas en la relación de muchos a muchos. Entonces, en este caso, " ColorShape " o " ShapeColor . " Pero me parece que esto parece artificial y extraño.

Joe Celko recomienda en su libro "Estilo de programación SQL" nombrar estas tablas de alguna manera en lenguaje natural. Por ejemplo, si una Forma está coloreada por un Color, entonces nombra la tabla ColoredBy . Entonces podría tener un diagrama que se lea más o menos naturalmente de esta manera:

Shape <-- ColoredBy --> Color

Por el contrario, se podría decir que un Color colorea una Forma:

Color <-- Colors --> Shape

Pero parece que la tabla del medio es lo mismo que Color con una convención de nomenclatura plural. Demasiado confuso.

Probablemente sea más claro usar la convención de nomenclatura ColoredBy . Es interesante que al usar la voz pasiva la convención de nomenclatura sea más clara.

Nombra la tabla como quieras, siempre que sea informativa:

COLOR_SHAPE_XREF

Desde la perspectiva del modelo, la tabla se denomina tabla de unión / corrollary / referencia cruzada. He mantenido el hábito de usar _XREF al final para hacer que la relación sea obvia.

Una tabla de mapeo es lo que generalmente se llama.

ColorToShape
ColorToShapeMap

Esta es una Entidad asociativa y a menudo es bastante importante por derecho propio.

Por ejemplo, una relación de muchos a muchos entre TRENES y TIEMPOS da lugar a un CALENDARIO.

Si no hay una entidad nueva obvia (como el horario), entonces la convención es ejecutar las dos palabras juntas, dando COLOUR_SHAPE o similar.

Por lo general, escucho que se llama una mesa de conexiones. Nombro la tabla por lo que une, así que en su caso, ya sea ColorShape o ShapeColor. Creo que tiene más sentido que una Forma tenga un color que un Color que tenga una forma, por lo que elegiría ShapeColor .

He trabajado con DBA que lo llaman una tabla de unión .

Colour_Shape es bastante típico, a menos que la relación tenga un nombre explícito específico del dominio.

Tabla de unión

O Tabla puente

O Unir tabla

O Tabla de mapas

O Tabla de enlaces

O Tabla de referencias cruzadas

Esto entra en uso cuando buscamos relaciones de muchos a muchos donde las claves de ambas tablas forman la clave primaria compuesta de la tabla de unión.

Tabla intermedia o una Tabla de unión

Lo llamaría " ColorShapes " o "ColorShape", dependiendo de su preferencia

Recomiendo usar una combinación de los nombres de las entidades y ponerlas en plural. Por lo tanto, el nombre de la tabla expresará la conexión "muchos a muchos".

En su caso:

  

Color + Shape = ColorsShapes

También escuché el término Asociación utilizado.

un nombre para su tabla podría ser ColorShapeAssociations , lo que significa que cada fila representa una asociación entre ese color y esa forma. La existencia de una fila implica que el color viene en esa forma y que la forma viene en ese color. Todas las filas con un color específico serían el conjunto de todas las formas con las que está asociado el color, y las filas para una forma específica serían el conjunto de todos los colores en los que apareció esa forma ...

En general, la mayoría de las bases de datos tienen algún tipo de convención de nomenclatura para índices, clave primaria, etc. En PostgreSQL se han sugerido los siguientes nombres:

  • clave principal: tablename_columnname_ pkey
  • restricción única: tablename_columnname_ clave
  • restricción exclusiva: tablename_columnname_ excl
  • índice para otros fines: tablename_columnname_ idx
  • clave externa: tablename_columnname_ fkey
  • secuencia: tablename_columnname_ seq
  • disparadores: tablename_actionname_after | before_ trig

Tu tabla es una tabla vinculada para mí. Para estar en línea con los nombres anteriores, elegiría lo siguiente:

  • tabla vinculada: tablename1_tablename2_ lnk

En una lista de objetos de tabla, la tabla vinculada estará después de tablename1. Esto podría ser visualmente más atractivo. Pero también puede elegir un nombre que describa el propósito del enlace como otros han sugerido. Esto podría ayudar a mantener corto el nombre de la columna de identificación (si su enlace debe tener su propia identificación con nombre y se hace referencia en otras tablas).

  • o tabla de me gusta: purposeename_ lnk

Siempre he sido parcial al término "Hamburger Table". No sé por qué, simplemente suena bien.

Ah, y llamaría a la tabla ShapeColor o ColorShape dependiendo de cuál es la tabla más utilizada.

" Muchos-Muchos " mesa. Yo lo llamaría "ColourShape" o viceversa.

Es difícil responder algo tan arbitrario como esto, pero tiendo a preferir la idea de nombrarlo después de algo en el dominio real en lugar de una descripción genérica de las relaciones subyacentes.

Muy a menudo este tipo de tabla evolucionará en algo más rico para el modelo de dominio y tomará atributos adicionales por encima y más allá de las claves externas vinculadas.

Por ejemplo, ¿qué sucede si necesita almacenar una textura además del color? Puede parecer un poco extraño expandir la tabla SHAPE_COLOR para mantener su textura.

Por otro lado, también hay algo que decir para tomar una decisión bien informada basada en los requisitos que tiene hoy y estar preparado para refactorizar cuando se introduzcan requisitos adicionales más adelante.

Dicho todo esto, lo llamaría SUPERFICIE si tuviera la idea de que más adelante se introducirían propiedades similares a la superficie. Si no, no tendría problemas para llamarlo SHAPE_COLOR o algo por el estilo y pasar a problemas de diseño más urgentes.

¿Quizás solo ColoredShape ?

No estoy seguro de haber recibido la pregunta. ¿Se trata de este caso específico o buscas pautas generales?

Lo nombraría con los nombres exactos de las tablas que se están uniendo = ColorShape.

Además de lo que se ha relacionado Developer Art,

ColorShape

sería una convención de nomenclatura habitual. En el diagrama ER, sería una relación.

Llámelo tabla de referencias cruzadas.

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

Usaría r_shape_colors o r_shape_color dependiendo de su significado.
r_ reemplazaría a xref_ en este caso.

Mi voto es por un nombre que describa mejor la tabla. En este caso, podría ser ShapeColor pero en muchos casos es mejor un nombre diferente de una concatenación. Me gusta la legibilidad y para yo , eso significa sin sufijos, sin guiones bajos y sin prefijos.

Yo personalmente iría por Colour_Shape, con el guión bajo: solo porque he visto esta convención aparecer bastante. [pero estoy de acuerdo con las otras publicaciones aquí que probablemente hay formas más 'poéticas' de hacer esto].

Tenga en cuenta que las claves foráneas también deben construirse en esta tabla de unión que haría referencia tanto a Color como a amp; Tablas de formas que también ayudarían a identificar la relación.

Una convención que veo mucho para unir tablas que personalmente me gusta es 'Colour_v_Shape', que he escuchado a la gente referirse coloquialmente como 'versus tablas'.

Deja muy claro de un vistazo que la tabla representa una relación de muchos a muchos, y ayuda a evitar esa situación confusa (aunque rara) cuando intentas concatenar dos palabras que de otro modo podrían formar una palabra compuesta, por ejemplo 'Mantequilla' y 'Leche' pueden convertirse en 'Leche de mantequilla', pero ¿y si también necesitaras representar a una entidad llamada 'Suero de mantequilla'?

Al hacerlo de esta manera, tendrías 'Butter_v_Milk' y 'Buttermilk', sin confusión.

Además, me gusta pensar que hay una referencia de Foo Fighters en la pregunta original.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top