Contoh sempurna tim atau pengembang individual yang tidak saling berbicara. Sementara eav_attributetabel utama atrtibute_codeadalah a varchar(255), nilai kode ini sering digunakan di tabel lain.
Di catalog_product_link_attributesana adalah product_link_attribute_codeatribut (yang merupakan kode atribut), dan kolom ini adalah a varchar(32). Kembali pada zaman prasejarah ketika objek penjualan adalah objek EAV, mereka memiliki kolom atribut_code yang varchar(50)panjangnya.
# 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');
Saya membayangkan ada orang lain juga.
Tanpa spesifikasi aktual atau kesepakatan tentang apa yang sedang dibangun, pengembang yang bertanggung jawab atas UI untuk bagian atribut cenderung melihat semua attribute_codekolom, memilih yang terpendek, dan menegakkan panjang untuk memastikan pengguna tidak dapat membuat kode atribut itu akan terlalu lama untuk salah satu dari berbagai tabel yang sedang dikerjakan pengembang lain.
Adapun mengapa seorang pengembang akan memilih varcharpanjang yang tidak 255- ada sekolah pemikiran tentang desain database yang mengatakan Anda hanya membuat kolom Anda selama mereka perlu menghemat ruang disk, mengurangi RAM, lebih efisien dalam bergabung operasi , dll. Beberapa pengembang masih berpegang pada ini vs tren modern "membuatnya sebesar mungkin dan khawatir tentang implikasi kinerja nanti". Jelas ada ketidaksepakatan pada panjang maksimum varcharuntuk attribute_codedi antara tim inti Magento pada satu titik, dan sekarang ia hidup dalam kode warisan.
ATTRIBUTE_CODE_MAX_LENGTHkonstanta tidak ada.