I'm doing a project in the field of multilevel marketing on .Net and SQL server. In the database it should save like a binary tree. How should i design a database?
3 Answers
id | parentid | name
---------------------
1 | null | node1
2 | 1 | node2
3 | 1 | node3
5 Comments
Tom Lokhorst
Exercise: Write a query that returns all decedents from node1.
Arsen Mkrtchyan
you mean this? select * From tab where parentid = (select id from table where name = 'node1')
ChssPly76
That's hilarious :-) However, you probably should have pointed out a better alternative, like using nested sets model.
ChssPly76
To Arsenmkrt - no, that would be direct descendants. You were asked for all descendants :)
user3012759
@ChssPly76 well, that's easy no? select * from tab where name != 'node1' ;) but seriously how does this answer have 3 upvotes?
This has been asked and answered before.
Here's a pretty decent tutorial which explains why adjacency model proposed by arsenmkrt is less than ideal.
1 Comment
Arsen Mkrtchyan
+1 I didn't think about that before ;)
SQL Server 2008 has a built-in data-type called hierarchyid to store hierarchical information. Here are some pointers.
And of course you can do this as mentioned by arsenmkrt in databases other than sqlserver2008.