Ідеальний приклад команд чи окремих розробників, які не спілкуються один з одним. Якщо основна eav_attribute
таблиця atrtibute_code
є a varchar(255)
, це значення коду часто використовується в інших таблицях.
В catalog_product_link_attribute
є product_link_attribute_code
атрибут (який є код атрибута), і цей стовпець є varchar(32)
. Ще в доісторичні часи, коли об’єктами продажу були об’єкти EAV, вони мали стовпчик коду attribute_code, який мав varchar(50)
довжину.
# 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');
Я думаю, що є й інші.
Без фактичної специфікації чи згоди щодо того, що будується, розробник, відповідальний за користувальницький інтерфейс для розділу атрибутів, ймовірно, переглянув усі attribute_code
стовпці, вибрав найкоротший і застосував довжину, щоб переконатися, що користувачі не змогли створити код атрибута це було б занадто довго для однієї з різних таблиць, над якими працювали інші розробники.
Що стосується того, чому розробник обрав би таку varchar
довжину 255
- існує школа думок щодо дизайну баз даних, яка говорить про те, що ви створюєте свої стовпчики лише стільки, скільки потрібно для економії місця на диску, зменшення оперативної пам’яті, щоб бути ефективнішими в операціях приєднання. і т. д. Деякі розробники все ще дотримуються цього, порівняно із сучасною тенденцією "зробіть це якомога більше і пізніше переживайте про наслідки для продуктивності". Зрозуміло, що в основний колектив Magento в один момент існувала розбіжність щодо максимальної тривалості " varchar
для attribute_code
", і тепер це продовжується в застарілому коді.
ATTRIBUTE_CODE_MAX_LENGTH
константа не існувала.