Trong khi tạo lại CMS, tôi muốn thay thế cho cách tiếp cận cha/mẹ truyền thống để quản lý hệ thống phân cấp sơ đồ trang/sơ đồ trang. Tôi đã nhớ đã nhìn thấy mô hình tập hợp lồng nhau một lúc, nhưng không thể nhớ nó được gọi là gì. Vì vậy, tôi tình cờ gặp một cách tiếp cận tương tự mà tôi muốn đánh giá và so sánh các thuộc tính, đảm bảo rằng tôi sẽ không chạy vào những hạn chế câm sau này bởi vì tôi đã không đi với những gì đã được kiểm tra thời gian. Vì vậy, xin vui lòng tư vấn nếu A) nó đã được phát minh (những gì nó được gọi là ?!), B) có những sai sót cơ bản trong tài sản, hoặc C) đó là một cách tiếp cận tốt (xin vui lòng cho tốt biện minh!).Bộ phận lồng ghép của tôi cho các tập lồng nhau cho các tập dữ liệu phân cấp theo chiều sâu tùy ý: Tốt hay Xấu?
Xem xét danh sách này:
- Home
- Giới thiệu
- Liên hệ
- Sản phẩm
- Quần áo
- Sách
- Điện tử
- Kiến thức cơ sở
- thứ khác
Theo mô hình bộ lồng nhau, tôi tin rằng bạn lưu trữ bên trái/mô tả phù hợp với mỗi nút với một traversal sâu-đầu tiên:
Home 1-18
About Us 2-3
Contact Us 4-5
Products 6-13
Clothing 7-8
Books 9-10
Electronics 11-12
Knowledge Base 14-15
Other stuff 16-17
Và đây là "cách sai lầm" của tôi mà tôi bắt đầu thích hơn:
Home 1-9
About Us 2-2
Contact Us 3-3
Products 4-7
Clothing 5-5
Books 6-6
Electronics 7-7
Knowledge Base 8-8
Other stuff 9-9
Thay vì cặp trái/phải, tôi đang lưu trữ ID và LAST_CONTAINED_ID. Tôi thấy rằng rất nhiều các thuộc tính đều giống nhau (hoặc rất tương tự):
- Nút gốc là ID = 1
- Đối với "lá", cả hai thuộc tính đều bình đẳng, trong khi với các ngành, họ không
- tổng số "subnodes" cho bất kỳ nút nhất định là LAST_CONTAINED_ID - ID
- Tất cả chứa các nút có một ID> ID của container, nhưng < = của container LAST_CONTAINED_ID
- các nút tổ tiên có một ID < trẻ ID , mà còn LAST_CONTAINED_ID> = ID con
- Độ sâu là SUM của tổ tiên các nút
Bên cạnh đó, ID phục vụ, định danh duy nhất để cụ thể (không có khoảng trống!). Tôi đã tìm thấy nó dễ dàng hơn để lưu trữ các tham chiếu DEPTH và PARENT cho sự đơn giản, nhưng đó cũng là điều tương tự đối với các bộ lồng nhau từ những gì tôi hiểu.
Vì vậy, điều này có được tính là tập hợp lồng nhau không? Và nó đã là một cách tiếp cận phổ biến (nhưng tại sao tôi chưa nghe về nó trước đây ...)? Có một lý do chính đáng tại sao tôi nên sử dụng một tập hợp lồng nhau thực sự về điều này?
Tôi hoan nghênh suy nghĩ của bạn.
FYI, mô hình tập lồng nhau là một cách có một bảng duy nhất trong một RDBMS lưu trữ tất cả các thông tin cần thiết cho một hệ thống phân cấp của một chiều sâu không xác định (ví dụ: một danh sách vô hạn mà không đệ quy): http://en.wikipedia.org/wiki/Nested_set_model#Example – landons