Skip to content

Instantly share code, notes, and snippets.

@xieyuheng
Created July 9, 2019 15:08
Show Gist options
  • Save xieyuheng/d043b370259401822b50ce64631901d8 to your computer and use it in GitHub Desktop.
Save xieyuheng/d043b370259401822b50ce64631901d8 to your computer and use it in GitHub Desktop.

access path dependence

  • the problem of tree-structured data model: many ways to model the same data, if the model changed, API must change.
  • Structure 1. Projects Subordinate to Parts
    part: {
      part id
      part name
      part description
      quantity-on-hand
      quantity-on-order
      project: {
        project id
        project name
        project description
        quantity committed
      }
    }
        
  • Structure 2. Parts Subordinate to Projects
    project: {
      project id
      project name
      project description
      quantity committed
      part: {
        part id
        part name
        part description
        quantity-on-hand
        quantity-on-order
    
      }
    }
        
  • Structure 3. Parts and Projects as Peers Commitment Relationship Subordinate to Projects
    part: {
      part id
      part name
      part description
      quantity-on-hand
      quantity-on-order
    }
    
    project: {
      project id
      project name
      project description
      part: {
        part id
        quantity committed
      }
    }
        
  • Structure 4. Parts and Projects as Peers Commitment Relationship Subordinate to Parts
    part: {
      part id
      part name
      part description
      quantity-on-hand
      quantity-on-order
      project: {
        project id
        quantity committed
      }
    }
    
    project: {
      project id
      project name
      project description
    }
        
  • Structure 5. Parts, Projects, and Commitment Relationship as Peers
    part: {
      part id
      part name
      part description
      quantity-on-hand
      quantity-on-order
    }
    
    project: {
      project id
      project name
      project description
    }
    
    commit: {
      part id
      project id
      quantity committed
    }
        
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment