Duyệt cây đa cấp trên MS SQL Server

Tôi là lập trình viên thường làm việc trên hệ quản trị cơ sở dữ liệu MS SQL Server. Tình cờ tôi có dịp "đụng" vấn đề duyệt cây đa cấp khá hay nên muốn chia sẻ kinh nghiệm qua bài viết này. | Duyệt cây đa cấp trên MS SQL Server Nguồn Tôi là lập trình viên thường làm việc trên hệ quản trị cơ sở dữ liệu MS SQL Server. Tình cờ tôi có dịp đụng vấn đề duyệt cây đa cấp khá hay nên muốn chia sẻ kinh nghiệm qua bài viết này. Chương trình ở đây viết bằng script Transact-SQL đương nhiên các bạn cũng có thể chuyển sang bất kỳ ngôn ngữ lập trình nào tùy thích. Qui tắc duyệt cây đề cập ở đây là theo chiều sâu duyệt từ trái sang phải thứ tự duyệt được thể hiện bằng các chữ số bên trong các node ở hình 1. Bảng Tree lưu trữ thông tin của cây đa cấp có cấu trúc như sau Column Name Data Type Size Allow Null Description NodeID Int No Khóa chính của bảng Tree NodeName varchar 20 No Tên node ParentID Int Yes Mã của node cha gần nhất WoodenLeg varchar 100 Yes Cột giả hỗ trợ khi sắp xếp dữ liệu Scrip tạo bảng Tree như sau Create Table Tree NodeID int Primary Key NodeName varchar 20 Not Null ParentID int Null WoodenLeg varchar 100 Null Dữ liệu trong bảng Tree mô tả cây đa cấp ở hình 1 được thể hiện ở hình 2. Qui tắc tạo dữ liệu như sau NodeName NodeName ParentID WoodenLeg 1 Root Node Null 1 2 Node 1 1 12 3 Node 2 1 13 4 Node 3 1 14 5 Node 4 1 15 6 Node A 2 126 7 Node B 2 127 8 Node C 3 138 9 Node D 3 139 10 Node E 3 1310 11 Node F 5 1511 12 Node G 5 1512 13 Node X 11 151113 14 Node Y 11 151114 15 Node Z 11 151115 Hình 2 Dữ liệu mô tả cấu trúc cây đa cấp Đừng quan tâm đến giá trị column WoodenLeg tôi sẽ giải thích ở phần sau NodelD của node cha sẽ nhỏ hơn NodelD của node con. Đối với các node cùng cấp NodelD của node trái sẽ nhỏ hơn NodelD của node phải. Đọc đến đây các bạn có thể thắc mắc nếu NodelD của một cây có sẵn có giá trị không thoả điều kiện trên thì chúng ta có sắp xếp được hay không. Câu trả lời là hoàn toàn có thể vì khi đó chúng ta có thể tạo thêm một column mới với các giá trị thoả điều kiện. Vì muốn giữ tính đơn giản cho bài viết nên cho phép tôi không nêu ra cách tính cho trường hợp này. Nếu có bất kỳ thắc mắc gì các bạn có thể liên hệ trực tiếp

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.