Before I start going into more depth on data dependencies and mutations, I think it makes sense for me to throw some general Relay + GraphQL terminology definitions out there.
Relay: A library that manages application data fetching and data mutations and provides higher-order components that feed data into our application components
GraphQL: A query language used to specify data requirements and data mutations
Data dependency: An abstract concept that says a given React component depends on particular data
Query: A query is the part of a data dependency, expressed in GraphQL syntax and executed by an encapsulated Relay mechanism
Fragment: A part of a larger GraphQL query
Container: A Relay React component that passes fetched data into the application React component
Mutation: A special type of GraphQL query that changes the state of some remote resource, and Relay has to figure out how to reflect this change in the frontend once it completes
Confused yet? Good. Let's quickly...