Một ví dụ hoàn hảo về các nhóm hoặc các nhà phát triển cá nhân không nói chuyện với nhau. Trong khi eav_attribute
bảng chính atrtibute_code
là a varchar(255)
, giá trị mã này thường được sử dụng trong các bảng khác.
Trong catalog_product_link_attribute
đó có một product_link_attribute_code
thuộc tính (là mã thuộc tính) và cột này là a varchar(32)
. Quay lại thời tiền sử khi các đối tượng bán hàng là các đối tượng EAV, họ có một cột thuộc tính_code có varchar(50)
chiều dài.
# 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');
Tôi tưởng tượng có những người khác là tốt.
Không có thông số kỹ thuật thực tế hoặc thỏa thuận về những gì đang được xây dựng, nhà phát triển phụ trách giao diện người dùng cho phần thuộc tính có thể đã xem xét tất cả các attribute_code
cột, chọn cột ngắn nhất và thực thi độ dài để đảm bảo người dùng không thể tạo mã thuộc tính điều đó sẽ quá dài đối với một trong những bảng khác nhau mà các nhà phát triển khác đang làm việc.
Về lý do tại sao nhà phát triển sẽ chọn varchar
độ dài không 255
- có một trường phái suy nghĩ về thiết kế cơ sở dữ liệu nói rằng bạn chỉ tạo các cột của mình miễn là họ cần để tiết kiệm dung lượng ổ đĩa, giảm RAM, hiệu quả hơn trong các hoạt động tham gia , v.v ... Một số nhà phát triển vẫn giữ điều này so với xu hướng hiện đại là "làm cho nó lớn nhất có thể và lo lắng về ý nghĩa hiệu suất sau này". Rõ ràng đã có sự bất đồng về độ dài tối đa của một varchar
cho attribute_code
's một trong những đội ngũ nòng cốt Magento tại một thời điểm, và bây giờ nó sống mãi trong mã di sản.
ATTRIBUTE_CODE_MAX_LENGTH
hằng số không tồn tại.