title: GraphQL: How nested to make schema?
body: <p>This past year I converted an application to use Graphql. Its been great so far, during the conversion I essentially ported all my services that backed my REST endpoints to back grapqhl queries and mutations. The app is working well but would like to continue to evolve my object graph. </p>
  
  <p>Lets consider I have the following relationships.</p>
  
  <p>User -> Team -> Boards -> Lists -> Cards -> Comments</p>
  
  <p>I currently have two different nested schema: User -> team: </p>
  
  <pre><code>    type User {
    id: ID!
    email: String!
    role: String!
    name: String!
    resetPasswordToken: String
    team: Team!
    lastActiveAt: Date
  }
  
  type Team {
    id: ID!
    inviteToken: String!
    owner: String!
    name: String!
    archived: Boolean!
    members: [String]
  }
  </code></pre>
  
  <p>Then I have Boards -> Lists -> Cards -> Comments</p>
  
  <pre><code>type Board {
    id: ID!
    name: String!
    teamId: String!
    lists: [List]
    createdAt: Date
    updatedAt: Date
  }
  
  type List {
    id: ID!
    name: String!
    order: Int!
    description: String
    backgroundColor: String
    cardColor: String
    archived: Boolean
    boardId: String!
    ownerId: String!
    teamId: String!
    cards: [Card]
  }
  
  type Card {
    id: ID!
    text: String!
    order: Int
    groupCards: [Card]
    type: String
    backgroundColor: String
    votes: [String]
    boardId: String
    listId: String
    ownerId: String
    teamId: String!
    comments: [Comment]
    createdAt: Date
    updatedAt: Date
  }
  
  type Comment {
    id: ID!
    text: String!
    archived: Boolean
    boardId: String!
    ownerId: String
    teamId: String!
    cardId: String!
    createdAt: Date
    updatedAt: Date
  }
  </code></pre>
  
  <p>Which works great. But I'm curious how nested I can truly make my schema. If I added the rest to make the graph complete:</p>
  
  <pre><code>type Team {
        id: ID!
        inviteToken: String!
        owner: String!
        name: String!
        archived: Boolean!
        members: [String]
        **boards: [Board]**
      }
  </code></pre>
  
  <p>This would achieve a much much deeper graph. However I worried how much complicated mutations would be. Specifically for the board schema downwards I need to publish subscription updates for all actions. Which if I add a comment, publish the entire board update is incredibly inefficient. While built a subscription logic for each create/update of every nested schema seems like a ton of code to achieve something simple. </p>
  
  <p>Any thoughts on what the right depth is in object graphs? With keeping in mind the every object beside a user needs to be broadcast to multiple users. </p>
  
  <p>Thanks</p>