Tôi có một bảng Person
có 3 cột: Id, Name, ParentId
trong đó ParentId
là Id
của hàng chính.Truy vấn dữ liệu cấu trúc cây trong SQL Server
Hiện tại, để hiển thị toàn bộ cây, nó sẽ phải lặp qua tất cả các phần tử con cho đến khi không còn phần tử con nào nữa. Nó có vẻ không hiệu quả lắm.
Có cách nào tốt hơn và hiệu quả hơn để truy vấn dữ liệu này không?
Ngoài ra, có cách nào tốt hơn để đại diện cho cây này như cấu trúc trong cơ sở dữ liệu SQL Server không? Một thiết kế thay thế cho bảng/cơ sở dữ liệu của tôi?
Xem http://stackoverflow.com/questions/935098/database-structure-for-tree-data-structure cho câu hỏi tương tự với câu trả lời. – JeremyDWill
Xem bài viết về trang trình bày [SQL Antipatterns] (http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back) của Bill Karwin - ông mô tả một số antipatterns - trong số đó là "cây ngây thơ" mà bạn có - và đưa ra các giải pháp khả thi cho nó. Ông cũng có một cuốn sách tuyệt vời cùng tên [SQL Antipatterns] (http://pragprog.com/book/bksqla/sql-antipatterns) - rất khuyến khích! –