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

Cơ sở dữ liệu thiết kế cho danh mục, danh mục con và sách liên quan

Không có lý do gì để có nhiều hơn một bảng cho "danh mục", cho dù đó là danh mục cấp cao nhất hay danh mục phụ. Tất cả chúng chỉ là "danh mục".

Vì vậy, có một bảng duy nhất được gọi là "danh mục", với parent_id lĩnh vực:

// categories table
id
name
user_id
parent_id

Khi bạn muốn kéo tất cả các danh mục cấp cao nhất, chỉ cần chạy truy vấn của bạn đối với các danh mục categories bảng với điều kiện parent_id là null.

Sau đó, khi bạn muốn kéo các danh mục phụ, chỉ cần chạy truy vấn đối với categories bảng với điều kiện parent_id = 123 (hoặc bất cứ điều gì).

Điều này không chỉ giúp mọi thứ gọn gàng hơn rất nhiều, mà còn cho phép mở rộng trong trường hợp bạn muốn tiếp tục thêm các danh mục phụ phụ phụ ... vv.

Một tùy chọn khác là sử dụng TreeBehavior của CakePHP .

Cá nhân tôi chỉ thích sử dụng cách tôi đã đề xuất ở trên, nhưng có thể chỉ là do tôi chưa dành thời gian để thực sự hiểu đủ về hành vi này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn tất cả các cột bắt đầu bằng XXX bằng ký tự đại diện?

  2. MYSQL PHP Không có cơ sở dữ liệu nào được chọn - Không thể tìm thấy lỗi

  3. Cách chọn các hàng mysql theo thứ tự của mệnh đề IN

  4. Ngày hiển thị từ cơ sở dữ liệu PHP

  5. sử dụng PHP để tạo bảng HTML từ truy vấn MSQL, không có hàng trùng lặp?