Premier League Predictor: FastAPI & PostgreSQL — Chapter 2, Exercise 1 ==================================================== TASK Explain why "which 20 teams are competing this season" is modeled as a separate SeasonTeam table rather than a boolean column on Team itself, and name the two later chapters that operate directly on SeasonTeam rows. SOLUTION A boolean column on Team — something like is_currently_in_premier_league — can only ever represent ONE point in time: right now. It has no way to represent "Team X was in the Premier League last season but got relegated" or "Team Y is newly promoted this season but wasn't last season," because a single true/false value on the team's own permanent row gets overwritten every time promotion or relegation happens, wiping out the history along with it. SeasonTeam solves this by making "competing in a season" its own real fact, tied to both a specific team AND a specific season at once. Team rows never change when promotion or relegation happens — only which SeasonTeam rows exist changes. That means the schema can answer "which teams were in the Premier League in the 2025/26 season" just as easily as "which teams are in it now," since every season's own competing set is preserved as its own set of rows rather than overwritten in place. The two chapters that operate directly on SeasonTeam: - Chapter 3 (Admin: Managing the 20 Competing Teams Each Season) — adding and removing SeasonTeam rows for the current season is what that admin tooling actually does under the hood. - Chapter 9 (Promotion & Relegation) — removing the bottom three teams' own SeasonTeam rows and adding three new ones for the promoted teams, at the season boundary, is exactly how promotion and relegation gets applied to the data. WHY THIS WORKS AS AN ANSWER ---------------------------- It explains the real limitation a boolean column would have (only representing the current moment, destroying history on every change), states what SeasonTeam actually preserves instead, and correctly names both later chapters that depend on this table directly, tying the answer back to concrete parts of the course rather than staying abstract.