Um exemplo perfeito de equipes ou desenvolvedores individuais que não conversam entre si. Enquanto a eav_attribute
tabela principal atrtibute_code
é a varchar(255)
, esse valor de código é frequentemente usado em outras tabelas.
Em catalog_product_link_attribute
que há um product_link_attribute_code
atributo (que é o código de atributo), e esta é uma coluna varchar(32)
. Nos tempos pré-históricos, quando os objetos de vendas eram objetos EAV, eles tinham uma coluna attribute_code que tinha varchar(50)
um comprimento.
# Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php
$installer->getConnection()->addColumn($this->getTable('sales_order'), $attribute['attribute_code'], 'varchar(50) NULL');
Eu imagino que há outros também.
Sem uma especificação ou acordo real sobre o que estava sendo construído, o desenvolvedor responsável pela interface do usuário da seção de atributos provavelmente examinou todas as attribute_code
colunas, escolheu a mais curta e aplicou um comprimento para garantir que os usuários não pudessem criar um código de atributo isso seria muito longo para uma das várias tabelas em que outros desenvolvedores estavam trabalhando.
Quanto ao motivo pelo qual um desenvolvedor escolheria um varchar
tamanho que não era 255
- existe uma escola de pensamento sobre o design do banco de dados que diz que você só cria suas colunas o tempo necessário para economizar espaço em disco, reduzir a RAM, ser mais eficiente nas operações de junção , etc. Alguns desenvolvedores ainda mantêm isso em relação à tendência moderna de "torná-lo o maior possível e se preocupar com implicações no desempenho posteriormente". É claro que houve discordância quanto ao tamanho máximo de um varchar
for attribute_code
's entre a equipe principal do Magento em um ponto, e agora ele permanece no código legado.
ATTRIBUTE_CODE_MAX_LENGTH
constante não existia.