I have a soccer team with 14 players (11 active + 3 substitutes). The team is going on a tour participating in different matches across the world. I have two very different design ideas of how for the classes for such match, and I am wondering if there is a better approach here. The language is Python and the database is Mongo.
My requirements:
-
At any time during a match, I want to know the current status of a player. (substitutes, active, injured) as well as their penalty cards if they got any. If they are actively playing, I want to know when they started. If they got back to sitting or got injured, I want to know their most recent start time and end time.
-
I want to be able to retrieve the information about a past match. For any player in a past match, I only need to know their latest status (as described above)
Here is my idea about db collections:
Players collection:
- Player ID
- Player Name
- Player Tshirt Size
Teams collection:
- Team ID
- Team Player IDs []
- Team Name
- Team logo
Matches collection:
- Match ID
- Team ID
- Match Location
- Match Time
Players History collection:
- Player ID
- Match ID
- Latest Status
- Latest Start Time
- Latest End Time
- Latest Penalty Card
- Latest Injury Note
As you see, I tried to separate the static information about a player (Players collection) from their dynamic information in a match (Players History collection) but I not sure how to define classes?
Class Player:
- Player ID
- Player Name
- Player Tshirt Size
- Latest Status
- Latest Start time
- Latest End time
- Latest Penalty Card
- Latest Injury Note
Class Match:
- Match ID
- Player IDs []
- Match Location
- Match Start time
- Match Tshirt color
The second option would be creating another class for the dynamic part to match to my db collection:
Class Player:
- Player ID
- Player Name
- Player Tshirt Size
Class Match:
- Match ID
- Player IDs []
- Match Location
- Match Start time
- Match Tshirt color
Class Match Participant:
- Player ID
- Match ID
- Latest Status
- Latest Start time
- Latest End time
- Latest Penalty Card
- Latest Injury Note
I do not know how I should decide which approach is better. I would appreciate if you help me figure out the approaches pros and cons or even just what criteria I need to think about when deciding between the two.
Is there any design patterns that would describe any of these approaches?
Aucun commentaire:
Enregistrer un commentaire