Idealny przykład zespołów lub indywidualnych programistów, którzy nie rozmawiają ze sobą. Chociaż główna eav_attribute
tabela atrtibute_code
ma wartość a varchar(255)
, ta wartość kodu jest często używana w innych tabelach.
Jest catalog_product_link_attribute
tam product_link_attribute_code
atrybut (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_code
kolumny, 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ł varchar
dł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 varchar
do attribute_code
„s między rdzeń zespołu Magento w jednym punkcie, a teraz żyje w starszych kod.
ATTRIBUTE_CODE_MAX_LENGTH
stała nie istniała.