Existe um motivo para usar nomes de tabela extremamente abreviados?

22

Estamos usando uma configuração de banco de dados do aplicativo de um fornecedor que dificilmente lê os nomes das tabelas de banco de dados e não há documentação sobre o que está armazenado onde. Eu posso ver por que alguém pode querer ofuscar sua estrutura de tabela em um aplicativo proprietário, mas um dos pontos de venda desse aplicativo (Enterprise Resource Planning) foi a capacidade de personalização.

Os nomes das tabelas são como aptrx (transações de contas a pagar) e apmaster_all (curiosamente, esta é a tabela de fornecedores). É um banco de dados extremamente complexo, então eu queria saber se havia alguma lógica na convenção ou se ela estava sendo ofuscada intencionalmente ou não.

Que eu saiba, o comprimento do nome da tabela não afetará o desempenho visivelmente, correto? O banco de dados é muito complexo (centenas de tabelas), portanto, a classificação faz sentido, mas não consigo imaginar por que AccountsPayableTransactions não é preferível ao aptrx ....

Ben Brocka
fonte
8
alguém não foi smaked na parte de trás da cabeça com força suficiente para saber melhor
DForck42
2
* sorrisos * é para segurança no trabalho, o custo de despedir programadores antigos e contratar novos se torna muito maior se você tiver nomes enigmáticos.
Lie Ryan
@Lie_Ryan que certamente parece ser o caso, que vai espero que você vai contratar um consultor ...
Ben Brocka
FWIW, se você trabalha em sistemas de contabilidade, "aptrx" não é enigmático. É obvio. Mais detalhes na minha resposta abaixo.
Mike Sherrill 'Cat Recall'
ofuscação é uma razão
Arnaud Le Blanc

Respostas:

23

A Oracle tem um limite de longa data em nomes de tabelas de 30 caracteres. Suspeito que este seja um problema herdado baseado em um ambiente original de 16 bits.
O comprimento de um nome de tabela pode ter algum efeito minúsculo no desempenho, pois todos os nomes precisam ser armazenados em um dicionário de dados e também analisados ​​para consultas, mas não acho que você possa medir a ocorrência.

Um efeito mais importante dos nomes curtos das tabelas é que é difícil trabalhar com elas. Eu também tenho que manter um esquema de banco de dados corporativo com nomes abreviados. Não há um bom motivo para ter nomes curtos de tabela. A facilidade de manutenção supera a ofuscação ou os velhos hábitos do DOS sempre.

kevinsky
fonte
2
Se 30 caracteres não forem suficientes para criar nomes exclusivos para tabelas, você terá um problema muito mais sério do que qualquer DBMS ou ambiente de desenvolvimento pode resolver: você tem um problema com o nível de expressividade do seu idioma e / ou vocabulário.
Erwin Smout
18

Eu sinto que há duas coisas que ainda precisam ser ditas ou elaboradas:

  1. Nomear coisas não é tão trivial quanto parece

    Existem apenas dois problemas difíceis na Ciência da Computação: invalidação de cache e nomeação de coisas. Phil Karlton

  2. Embora nomes curtos e sem sentido sejam sempre ruins, nomes longos nem sempre são bons - nossos cérebros têm um limiar interno embutido , que é surpreendentemente baixo. Normalmente, 30 caracteres são suficientes, mas eu prefiro o RDBMS para permitir mais casos excepcionais quando não é (e, assim como no idioma, nomes mais longos são mais úteis para coisas sobre as quais não falamos com tanta frequência - como nomes de restrições e nomes mais curtos são mais úteis para tabelas que consultamos o tempo todo)

Fico sempre tentado a gastar muito pouco tempo escolhendo nomes e sempre me arrependo depois, se o fizer - a mudança de nomes acontece apenas raramente

Jack Douglas
fonte
2
Sou muito exigente quanto a nomes e minha atual capacidade limitada de alterá-los me incomoda sem fim. Eu gosto do UX, então os nomes não utilizáveis ​​podem me incomodar muito. Além disso, eu simplesmente preferem camelCase ...
Ben Brocka
7

Preguiça. O IntelliSense e as opções de terceiros tornam a digitação uma desculpa muito difícil de justificar. Prefiro que os nomes tenham palavras significativas e legíveis.

Aaron Bertrand
fonte
6

Os nomes das tabelas são como aptrx (transações de contas a pagar) e apmaster_all (curiosamente, esta é a tabela de fornecedores). É um banco de dados extremamente complexo, então eu queria saber se havia alguma lógica na convenção ou se ela estava sendo ofuscada intencionalmente ou não.

Abreviaturas conhecidas são geralmente preferíveis a esclarecer as coisas. Quando uma abreviação é conhecida por algumas pessoas, mas não por pessoas suficientes, paramos de chamá-la de abreviação e começamos a chamá-la de código.

Abreviações economizam espaço em plataformas que têm limites rígidos, embora isso seja menos importante agora do que há 30 anos. (Eu me lembro de ter trabalhado em um sistema na década de 1980 que o limitava a 6 ou 8 caracteres para o nome de uma tabela.)

As abreviações geralmente facilitam a leitura dos nomes de tabelas e colunas, desde que a abreviação seja bem-sucedida. Se eu trabalhasse no código do AP o dia inteiro, preferiria ler nomes de colunas como "ap_trx.inv_num" a "accounts_payable_transactions.invoice_number". (Gosto de sublinhados.) Digitar nomes longos não é um problema para um bom editor de texto.

Nos sistemas contábeis, "ap" e "trx" são abreviações conhecidas. Outros incluem "ar", "gl" e "gj", para contas a receber, contabilidade e diário geral.

Em um sistema bem projetado, se eu encontrasse transações de contas a pagar em uma tabela chamada "aptrx", esperaria encontrar transações de contas a receber no artrx, transações de contabilidade geral no gltrx e assim por diante. Acho "apmaster_all" um pouco intrigante, mas se eu também encontrasse "armaster_all", presumiria que o primeiro continha todos os fornecedores (em oposição aos fornecedores ativos ou inativos), e que o segundo continha todos os clientes da mesma forma.

Em outros domínios problemáticos, você encontra outras abreviações conhecidas. Ao endereçar, você encontrará abreviações como "addr" para endereço, "st" para rua, "usps" para o Serviço Postal dos Estados Unidos, "ups" para o United Parcel Service, "cty" para o condado, "zip" para Melhoria de Zona Código e assim por diante.

Eu não chamaria isso de ofuscação. Se as transações de contas a pagar fossem armazenadas em uma tabela chamada "cdrs21", eu chamaria isso de ofuscação. (Embora eu tenha trabalhado uma vez para uma empresa que nomeou todos os módulos montadores de mainframe dessa maneira. Limites de caracteres, não ofuscação.)

Porém, bancos de dados úteis crescem e você enfrenta um problema quando os bancos de dados ficam grandes. À medida que você adiciona domínios problemáticos ao seu banco de dados, você se depara com situações nas quais abreviações conhecidas colidem. Se você lida com a mídia, "ap" também pode abreviar "Associated Press", "Alternative Press" ou "Adiantamento". Quando isso acontece, é hora de abandonar as abreviações ou mudar para códigos. Quanto maior a organização (e maior o banco de dados), mais frequentemente encontro códigos.

Mike Sherrill 'Recolha de Gatos'
fonte
4
Parte do problema é que essas tabelas não são mantidas por contadores, são mantidas por um analista de sistemas e, geralmente, pelo nosso Departamento de TI. Aptrx é na verdade um dos nomes mais lógicos que encontrei, um dos únicos que eu 've lembrado . Observe também que existem várias centenas de tabelas; as abreviaturas básicos como "ap" para "contas a pagar" são muito fáceis de aprender, os literalmente 100 sufixos depois de "ap" não são ...
Ben Brocka
4

Apenas conversando com "meu deus, os óculos não fazem nada por esta horrível convenção de nomes". A equipe de gerenciamento de dados em meu último ambiente declarou que o motivo do uso de nomes de tabelas abreviados era uma limitação do DB2 (tivemos o DB2 no z / os e SQL Server) de 18 caracteres para tabelas e colunas. Eu indiquei prontamente que isso era impreciso na documentação do site da IBM. Eles então declararam que era um problema do COBOL (sim, eles foram ativamente desenvolvidos para o COBOL), caso fosse necessário conversar com o banco de dados que então foi refutado pelos jóqueis do MF. Finalmente, a resposta deles foi o nosso padrão de publicação.

Solicitamos ao comitê de padrões que aumentasse o tamanho de 18 para 32 caracteres e recebemos uma limitação de 30 caracteres. Isso resultou em tabelas passando de nomes inúteis de 'SR_M_DLY_ADV_PRD_S' para 'IDX_FDSHRCLAS_LIF_RTRN_STATS_X' FML

Assim, em minha dúzia de anos de experiência, os nomes abreviados das tabelas não fornecem benefícios tangíveis e resultam em um custo mais alto de desenvolvimento e manutenção, pois sempre devo me referir aos dicionários de dados para traduzir o lixo na tela em um identificador significativo. O que pode ser contrastado com as entidades nomeadas logicamente com as quais trabalhei e pode ser recriado principalmente a partir da memória, porque foram nomeadas intuitivamente.

billinkc
fonte
1
parece que os nomes vão de nomes totalmente inúteis para nomes ligeiramente menos inúteis. Talvez a normalização possa ajudar? Se cada tabela fizer menos, haverá menos motivos para ter nomes longos com várias palavras, portanto, menos motivos para abreviar.
Lie Ryan
Na verdade, essa mesa desagradável e comprida não poderia fazer menos se tentasse. Possui 4 colunas, 2 das quais eram chaves estrangeiras. É a tabela "estatísticas de retorno" para qualquer pessoa, exceto para aqueles que protegem os dicionários de dados sagrados do conhecimento. Lá está a tabela de referência cruzada de estatísticas de retorno ao longo da vida útil da classe de participação do fundo de índice.
billinkc
você apenas me deixou louco com isso; talvez eu não esteja familiarizado com o domínio do problema, mas a tabela não é imediatamente óbvia para mim, mesmo depois de ver o nome não abreviado. Algumas perguntas em minha mente (apenas uma lista de coisas que não eram imediatamente óbvias para mim, você não precisa respondê-las se não quiser): Essa é uma tabela de entidades ou uma tabela de relacionamento? "Index" tem algo a ver com "index database"? Por "referência cruzada" e "estatística de retorno", isso parece me sugerir que esta é uma tabela agregada desnormalizada (que pode ser útil ao calculá-las como caras)?
Lie Ryan
Indústria de serviços financeiros, mesa entidade, os índices que a taxa de investimento (classe de acções do fundo mútuo, neste caso) tinha estatísticas sobre algo que eu não me lembro ...
billinkc
3

É um hábito (eu concordo com Kevinsky). Foi a reação de alguns problemas antigos (talvez existam) à restrição (comprimento do nome, espaço entre palavras de nomes complexos, multilíngüe etc.) do sistema operacional (DOS, Windows, por exemplo) e algum software que não lidava com esses nomes. Pessoas experientes disseram: "Faça isso (use nomes curtos e separados com sublinhados) e tudo ficaria bem".

garik
fonte
2

Gosto de usar nomes descritivos pelos motivos acima mencionados em pôsteres.

Mas há também outro benefício. Por exemplo, com nomeação descritiva, permite usar nomes aninhados. Digamos que você tenha uma tabela chamada Funcionário. Se você tem um relacionamento com outra tabela, pode ser chamado de EmployeeAddress. Ou EmployeeDepartment. Com o nome abreviado e enigmático, isso é quase impossível.

Thomas Stringer
fonte
0

Depende de quão complexas são as definições subjacentes de cada coluna. Acho que as pessoas ficam preguiçosas com o gerenciamento de metadados quando veem esse tipo de nome de coluna muito descritivo e até são na verdade descrições incompletas. Você também pode perguntar por que abreviar alguma coisa.

Thx1160
fonte
Desde as tabelas não oferecem quaisquer metadados não automático eu não tenho certeza que é um argumento válido ...
Ben Brocka