Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tốt nhất để lưu trữ tên danh mục từ php trong bảng mysql

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn cập nhật động PHP PDO tới MYSQL

  2. MySqlDb ném Toán hạng phải chứa 1 (các) cột trên câu lệnh chèn bỏ qua

  3. Làm cách nào để đếm các cột của bảng

  4. DATATYPE nào tốt hơn để sử dụng TEXT hoặc VARCHAR?

  5. làm thế nào để sử dụng `charset` và` encoding` trong `create_engine` của SQLAlchemy (để tạo khung dữ liệu gấu trúc)?