title: Why are edges required in a Relay/GraphQL Connection?
body: <p>In a Relay/GraphQL schema configuration, one-to-many relationships (with pagination) are specified as in the <a href="https://github.com/facebook/relay/blob/master/examples/star-wars/data/schema.js#L74-L82">tutorial example</a></p>
  
  <pre><code>type ShipConnection {
    edges: [ShipEdge]
    pageInfo: PageInfo!
  }
  type ShipEdge {
    cursor: String!
    node: Ship
  }
  </code></pre>
  
  <p>However, the one-to-one connection made by <code>ShipEdge</code> seems redundant. Why can't we move the cursor to <code>ShipConnection</code> and store an array of <code>Ship</code> IDs as edges?</p>
  
  <pre><code>type ShipConnection {
    edges: [Ship]
    pageInfo: PageInfo!
    cursor: String!
  }
  </code></pre>
  
  <p>What were the design decisions to require one extra object for every <code>edge</code> in a one-to-many relationship?</p>