Nó phụ thuộc,
Bạn sẽ có bao nhiêu danh mục, bạn cần cập nhật chúng thường xuyên như thế nào?
Tôi đã thực hiện cách tiếp cận trước khi thêm Enum, nhưng cũng đã viết một phương thức tĩnh trong một lớp và lưu trữ các tên hợp lệ ở đó
class Item{
public static function get_categories()
{
// only works in php >=5.4 otherwise use return array('Category1'...);
return [
'Category1' => 'Category1',
'Category2' => 'Category2',
'Category3' => 'Category3'
];
}
}
Làm như trên, bạn có thể dễ dàng truy cập vào mảng bằng Item ::get_categories (), mảng này phải tương ứng với các giá trị trong trường ENUM trong cơ sở dữ liệu. Nếu bạn cần thêm nhiều danh mục hơn, hãy thêm chúng vào cơ sở dữ liệu và sau đó vào chức năng này. Bạn có thể sử dụng điều này để xác thực lựa chọn của người dùng và tạo các tùy chọn javascript.
Tuy nhiên !!!!
Bạn đề cập đến một seeding điền vào bảng của bạn, điều này sẽ không thể dễ dàng cập nhật ENUM cho bạn.
Tôi muốn sử dụng ENUM, bởi vì
1). Thật dễ dàng để thiết lập 2). Nó dễ dàng hơn một chút so với việc tham gia hai bảng (nhưng JOINS là át chủ bài khi bạn học chúng) 3). Nếu bạn đã sử dụng bảng phụ, bạn (như bạn đã chỉ ra) phải tra cứu giá trị từ bảng đó trước rồi mới chèn hoặc nếu danh mục được sử dụng trong menu thả xuống, hãy sử dụng id danh mục và tên của nó để điền vào menu thả xuống (tôi sẽ làm theo cách này)
Suy nghĩ cuối cùng
Hiệu suất của cả hai cách (bảng tra cứu và ENUM) bạn thậm chí sẽ nhận thấy sự khác biệt trừ khi trang web của bạn rất bận rộn. Bạn vẫn phải cập nhật bảng danh mục với mỗi phiên bản theo cả hai cách, nhưng sẽ dễ dàng hơn một chút nếu sử dụng câu lệnh CHÈN thay vì BẢNG BÁO CÁO
Cho dù bạn chọn cách nào, nếu bạn không thích nó, sẽ khá dễ dàng để cập nhật mã của bạn.
Hy vọng điều này sẽ hữu ích và chúc may mắn
Hãy nhớ giữ nó đơn giản KI.S.S ngu ngốc