Ein perfektes Beispiel für Teams oder einzelne Entwickler, die nicht miteinander sprechen. Während die eav_attribute
Haupttabelle a atrtibute_code
ist varchar(255)
, wird dieser Codewert häufig in anderen Tabellen verwendet.
In catalog_product_link_attribute
gibt es ein product_link_attribute_code
Attribut (das ist der Attributcode), und diese Spalte ist ein varchar(32)
. In prähistorischen Zeiten, als die Verkaufsobjekte EAV-Objekte waren, hatten sie eine Attributcode-Spalte mit varchar(50)
einer Länge.
# 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');
Ich stelle mir vor, es gibt auch andere.
Ohne eine tatsächliche Spezifikation oder Vereinbarung darüber, was erstellt wurde, hat der für die Benutzeroberfläche des Attributabschnitts verantwortliche Entwickler wahrscheinlich alle attribute_code
Spalten überprüft, die kürzeste ausgewählt und eine Länge erzwungen, um sicherzustellen, dass Benutzer keinen Attributcode erstellen konnten Das wäre zu lang für eine der verschiedenen Tabellen, an denen andere Entwickler arbeiteten.
Warum ein Entwickler eine varchar
Länge wählen würde, die nicht so ist 255
- es gibt eine Denkschule zum Datenbankdesign, die besagt, dass Sie Ihre Spalten nur so lange erstellen, wie es erforderlich ist, um Speicherplatz zu sparen, RAM zu reduzieren und bei Verknüpfungsvorgängen effizienter zu sein usw. Einige Entwickler halten immer noch an diesem modernen Trend fest: "Machen Sie es so groß wie möglich und sorgen Sie sich später um die Auswirkungen auf die Leistung." Es ist klar, dass es Meinungsverschiedenheiten über die maximale Länge eines varchar
for gabattribute_code
im Magento-Kernteam gab, und jetzt lebt es im Legacy-Code weiter.
ATTRIBUTE_CODE_MAX_LENGTH
Konstante existierte nicht.