I have two Controllers: one for viewing a single player, and one for viewing a team. I currently have it where the team is composed of a bunch of Player Models.
I'm new to MVC and out of everything I've read, I haven't seen much on Models being composed of other Models. Is there an alternative way to approach this situation, or does this seem like a pretty standard implementation?
Of course! That's object oriented programming!
A Team is naturally a Collection of Players with some additional data (name, manager, etc). I think this should be okay.
Yes, a thousand times yes! This is how the Dependency Injection Frameworks (such as Robotlegs and Swiz) work. They have an Injector which acts as a combination Model and Factory to provide just the bits needed by a View or Command (for the most part, they also don't really have the idea of a large, monolithic Controller, either).
Model is not a "thing" or a "class". It is a layer.
And model layer is made up from multiple elements. Two of most important types are Domain Objects [1] [2] and Data Access Object ( usually implemented as DataMappers [1] [2] pattern). The third type of structures would be services, but i'm gonna try to keep it simple.
The domain objects is where the business logic is withing the model layer. And not only it is possible to have domain object containing other domain objects, it is usually the best way to to go. Here is a small example:
You also might benefit from reading this topic.
Given your question, you're referring to the model as a single entity (e.g. the user model). If you take the only the model and forget about the application, the model is literally what the word states, a conceptual model.
http://en.wikipedia.org/wiki/Domain_model
http://en.wikipedia.org/wiki/Conceptual_model_(computer_science)
Answering your question: Your domain model will be composed of entities with associations between then, in other words, one single entity can have a composition containing a collection of other entities (associations or aggregations).
http://martinfowler.com/eaaCatalog/domainModel.html
In order to it turn into a layer of something else, you need to jump from the OOA (Object-oriented Analyzes) to the OOD (object-oriented Design).
http://en.wikipedia.org/wiki/Object-oriented_analysis_and_design
So, keep in mind the two meanings of the "model" keyword. It can be the mental model of the problem domain or a layer of your application describing how the mental model will be technically implemented.