Q: How do design multilevel database driven menu? I want to create a database driven menu with multiple levels, but I'm not sure what the best practice is in designing the database table(s).  I've done some searching, but can't find much relevant information.
Initially, I had thought to create a table for each level.  For instance, the parent level menu would simply be dbo.Menu with the immediate children menu items housed in dbo.SubMenu.  With that said, I envisioned the following design for dbo.Menu:

However, once I began populating this table, I realized that the site will have some items with a depth of 3, and there is potential for adding more levels later.  
Is there a best practice for designing a dynamic menu?  Should I have one table containing all menu items or should I separate the menu items into multiple tables?

A: Use a single table to hold all levels. You can do this by adding a ParentMenuId column (NULLABLE) which will reference the MenuId (of the same table). Top level menu items will have a ParentMenuId = NULL.
This type of implementation may seem complex in other contexts, but it really ideal here, where you will always access one single submenu at a time.
