Idealny przykład zespołów lub indywidualnych programistów, którzy nie rozmawiają ze sobą. Chociaż główna eav_attributetabela atrtibute_codema wartość a varchar(255), ta wartość kodu jest często używana w innych tabelach.
Jest catalog_product_link_attributetam product_link_attribute_codeatrybut (który jest kodem atrybutu), a ta kolumna to varchar(32). W czasach prehistorycznych, gdy obiektami sprzedaży były obiekty EAV, mieli kolumnę z kodem atrybutu varchar(50)o długości.
# 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');
Wyobrażam sobie, że są też inni.
Bez faktycznej specyfikacji lub porozumienia co do tego, co jest budowane, programista odpowiedzialny za interfejs użytkownika dla sekcji atrybutów prawdopodobnie przejrzał wszystkie attribute_codekolumny, wybrał najkrótszą i wprowadził długość, aby użytkownicy nie mogli utworzyć kodu atrybutu byłoby to zbyt długo na jedną z różnych tabel, nad którymi pracowali inni programiści.
Co do tego, dlaczego programista wybrał varchardługość, która nie była 255- istnieje szkoła myślenia o projektowaniu baz danych, która mówi, że tworzysz kolumny tylko tak długo, jak trzeba, aby zaoszczędzić miejsce na dysku, zmniejszyć pamięć RAM, być bardziej wydajnym w operacjach łączenia itp. Niektórzy programiści nadal trzymają się tego w przeciwieństwie do współczesnego trendu „zwiększania rozmiaru do maksimum i martwienia się o wpływ na wydajność później”. To jasne, nie było różnicy zdań w sprawie maksymalnej długości od a varchardo attribute_code„s między rdzeń zespołu Magento w jednym punkcie, a teraz żyje w starszych kod.
ATTRIBUTE_CODE_MAX_LENGTHstała nie istniała.