Design patterns for implementing directory structure in database