Digamos que eu tenho duas tabelas:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Como devo chamar a tabela que mapeia as cores para moldar?
Table: ???
Columns: ColorId, ShapeId
Digamos que eu tenho duas tabelas:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Como devo chamar a tabela que mapeia as cores para moldar?
Table: ???
Columns: ColorId, ShapeId
Shape2Color
,ShapeXColor
,ShapeColorLink
.Respostas:
A criação de um bom nome para uma tabela que representa um
many-to-many
relacionamento facilita a leitura e o entendimento. Às vezes, encontrar um ótimo nome não é trivial, mas geralmente vale a pena gastar algum tempo pensando.Um exemplo:
Reader
eNewspaper
.A
Newspaper
tem muitosReaders
e aReader
tem muitosNewspapers
Você pode chamar o relacionamento,
NewspaperReader
mas um nome comoSubscription
pode transmitir melhor do que se trata a tabela.O nome
Subscription
também é mais idiomático, caso você queira mapear a tabela para objetos posteriormente.A convenção para nomear
many-to-many
tabelas é uma concatenação dos nomes das duas tabelas envolvidas na relação.ColourShape
seria um padrão sensato no seu caso. Dito isto, acho que Nick D apresentou duas ótimas sugestões:Style
eTexture
.fonte
Que tal ColorShapeMap ou Estilo ou Textura .
fonte
Interessante cerca de metade das respostas fornece um termo geral para qualquer tabela que implemente um relacionamento muitos-para-muitos, e a outra metade sugere um nome para essa tabela específica.
Eu chamei essas tabelas de interseções em geral.
Em termos de convenções de nomenclatura, a maioria das pessoas atribui um nome que é uma amálgama das duas tabelas no relacionamento muitos para muitos. Portanto, neste caso, "
ColorShape
" ou "ShapeColor
." Mas acho isso artificial e estranho.Joe Celko recomenda em seu livro "SQL Programming Style" para nomear essas tabelas de alguma maneira em linguagem natural. Por exemplo, se uma Forma é colorida por uma Cor, nomeie a tabela
ColoredBy
. Então você pode ter um diagrama que mais ou menos se lê naturalmente assim:Por outro lado, você poderia dizer que uma cor colore uma forma:
Mas isso parece que a tabela do meio é a mesma coisa que
Color
com uma convenção de nomenclatura plural. Muito confuso.Provavelmente é mais claro usar a
ColoredBy
convenção de nomenclatura. Interessante que o uso da voz passiva torne a convenção de nomenclatura mais clara.fonte
HasColor
poderia ser outro nome possível para a tabela de interseção que usa linguagem natural.hasColour
/ColouredBy
para quê? Isso anula o propósito de nomear a ser usadoDESCRIBE
para descobrir os relacionamentos.ShapeHasColor
eTextHasColor
?Nomeie a tabela como desejar, desde que seja informativa:
Da perspectiva do modelo, a tabela é chamada de tabela de junção / corrollary / referência cruzada. Eu mantive o hábito de usar
_XREF
no final para tornar o relacionamento óbvio.fonte
Esta é uma entidade associativa e muitas vezes é significativa por si só.
Por exemplo, um relacionamento muitos para muitos entre TRAINS e TIMES dá origem a um HORÁRIO.
Se não houver uma nova entidade óbvia (como horário), a convenção é executar as duas palavras juntas, fornecendo COLOUR_SHAPE ou similar.
fonte
Uma tabela de mapeamento é o que geralmente é chamada.
fonte
To
o nome. E se você tiver Forma com HighlightColor. Se você chamá-loShapeHighlightColor
, é um pouco ambíguo se é um ShapeHighlight mapeado para uma cor ou uma Forma mapeada para uma Highlight Color. Então,ShapeToHighlightColor
pode ser mais claro.Eu trabalhei com DBAs que chamam de tabela de junção .
Colour_Shape é bastante típico - a menos que o relacionamento tenha um nome específico de domínio explícito.
fonte
Colour_Shape_Colour
eColour_Shape_Shape
.Normalmente, ouço isso chamado Tabela de junção. Eu nomeio a tabela pelo que ela une, portanto, no seu caso, ColorShape ou ShapeColor. Eu acho que faz mais sentido para uma Forma ter uma cor do que para uma Cor ter uma forma, então eu continuaria
ShapeColor
.fonte
Junction table
OU
Bridge Table
OU
Join Table
OU
Map Table
OU
Link Table
OU
Cross-Reference Table
Isso entra em uso quando buscamos relacionamentos muitos para muitos, em que as chaves de ambas as tabelas formam a chave primária composta da tabela de junção.
fonte
Eu recomendo usar uma combinação dos nomes das entidades e colocá-los no plural. Assim, o nome da tabela expressará a conexão "muitos para muitos".
No seu caso:
fonte
Tabela intermediária ou uma tabela de junção
Eu o chamaria de "ColorShapes" ou "ColorShape", dependendo da sua preferência
fonte
Também ouvi o termo tabela associativa usada.
um nome para sua tabela pode
ColorShapeAssociations
significar que cada linha representa uma associação entre essa cor e essa forma. A existência de uma linha implica que a cor entra nessa forma e que a forma entra nessa cor. Todas as linhas com uma cor específica seriam o conjunto de todas as formas às quais a cor está associada e as linhas de uma forma específica seriam o conjunto de todas as cores em que a forma veio ...fonte
Em geral, a maioria dos bancos de dados possui algum tipo de convenção de nomenclatura para índices, chave primária e assim por diante. No PostgreSQL, a seguinte nomeação foi sugerida:
Sua mesa é uma tabela vinculada para mim. Para ficar de acordo com a nomeação acima, eu escolheria o seguinte:
Em uma lista de objetos de tabela, a tabela vinculada será após tablename1. Isso pode ser visualmente mais atraente. Mas você também pode escolher um nome que descreva o objetivo do link, como outros sugeriram. Isso pode ajudar a manter o nome da coluna id curto (se o seu link precisar ter seu próprio ID nomeado e for mencionado em outras tabelas).
fonte
Eu sempre fui parcial com o termo "Hamburger Table". Não sei por que - parece bom.
Ah, e eu chamaria a tabela ShapeColor ou ColorShape, dependendo de qual é a tabela mais usada.
fonte
Tabela "Muitos-muitos". Eu chamaria isso de "ColourShape" ou vice-versa.
fonte
É difícil responder a algo tão arbitrário quanto isso, mas eu tendem a preferir a idéia de nomeá-lo após algo no domínio real, em vez de alguma descrição genérica dos relacionamentos subjacentes.
Muitas vezes, esse tipo de tabela evolui para algo mais rico para o modelo de domínio e assume atributos adicionais acima e além das chaves estrangeiras vinculadas.
Por exemplo, e se você precisar armazenar uma textura além da cor? Pode parecer um pouco estranho expandir a tabela SHAPE_COLOR para manter sua textura.
Por outro lado, também há algo a ser dito para tomar uma decisão bem informada com base em quais requisitos você possui hoje e estar preparado para refatorar quando requisitos adicionais forem introduzidos posteriormente.
Tudo isso dito, eu o chamaria SUPERFÍCIE se tivesse a percepção de que haveria propriedades adicionais de superfície introduzidas mais tarde. Caso contrário, não teria problemas em chamá-lo de SHAPE_COLOR ou algo do tipo e passar para problemas de design mais prementes.
fonte
Talvez apenas
ColoredShape
?Não tenho certeza se entendi a pergunta. É sobre este caso específico ou você está procurando diretrizes gerais?
fonte
Eu o nomearia com os nomes exatos das tabelas que estão sendo unidas = ColorShape.
fonte
Além do que a Developer Art relacionou,
seria uma convenção de nomenclatura usual. No diagrama de ER, seria uma relação.
fonte
Chame de tabela de referência cruzada.
fonte
Eu usaria
r_shape_colors
our_shape_color
dependendo do seu significado.r_
seria um substituto paraxref_
neste caso.fonte
Meu voto é para um nome que descreva melhor a tabela. Nesse caso, pode ser,
ShapeColor
mas em muitos casos um nome diferente de uma concatenação é melhor. Eu gosto de legibilidade e, para mim , isso significa sem sufixos, sem sublinhados e sem prefixos.fonte
Eu pessoalmente escolheria o Colour_Shape, com o sublinhado: só porque vi essa convenção aparecer bastante. [mas concordo com os outros posts aqui de que provavelmente existem maneiras mais 'poéticas' de fazer isso].
Lembre-se de que as chaves estrangeiras também devem ser construídas nesta tabela de junção, que fará referência a ambas as tabelas Cor e forma, o que também ajudaria a identificar o relacionamento.
fonte
Uma convenção que vejo muito por juntar tabelas que eu pessoalmente gosto é 'Colour_v_Shape', que eu ouvi pessoas se referirem coloquialmente como 'versus tables'.
Deixa muito claro que a tabela representa um relacionamento muitos para muitos e ajuda a evitar essa situação (embora rara) confusa quando você tenta concatenar duas palavras que poderiam formar uma palavra composta, por exemplo 'Manteiga' e 'Milk' pode se tornar 'ButterMilk', mas e se você também precisasse representar uma entidade chamada 'Buttermilk'?
Fazendo dessa maneira, você teria 'Butter_v_Milk' e 'Buttermilk' - sem confusão.
Além disso, eu gosto de pensar que há uma referência ao Foo Fighters na pergunta original.
fonte