"League" Entity

The ‘League’ entity structure must be flexible enough to support both the ‘promotion and relegation’ and ‘franchise’ models of organization.

The ‘league’ entity can represent the parent container for a given league organization, the hierarchy of the actual league (including division/conference/tiers/etc); and a container for teams/games/results/etc within that league.

The top level league entity type is an ‘Organization’. Organizations represent the parent organization or association for a given league.

Each organization instance may be referenced by one or more ‘seasons’, which in turn may be referenced by one or more league ‘containers’. To build the league ‘conference/division/tier’ hierarchy, league containers may reference other containers as parents; while the bottom container of any tree will contain the teams/games/results for that given league component.

League containers may also reference an Organization as their parent, thus rendering the use of ‘seasons’ optional. Alternatively, the top league container may have no parent references. A single league container can individually represent a standalone league instance.

COMMON SCHEMA

  • Schema: lid: League Id (primary key)
  • Schema : type: Bundle type – League container/League instance
  • Schema: name: League Name / Title

BUNDLES

ORGANIZATION (LEAGUE_ORGANIZATION)

Master container for a league’s parent organization.

  • Implements default schema

SEASON (LEAGUE_SEASON)

Container for multiple league instances and/or containers

  • Implements default schema, plus
    • Field: parent_id: ID of the league’s parent entity
    • Field: parent_type: Bundle Type of the league’s parent entity
      • Only Supports ‘Organization’

LEAGUE CONTAINER (LEAGUE_CONTAINER)

Used to build the league hierarchy.

  • Implements default schema, plus
    • Field: parent_id: ID of the league’s parent entity
    • Field: parent_type: Bundle Type of the league’s parent entity
      • Supports ‘Organization’, ‘Season’, or ‘Container’
    • Field: label: A label representing the instance’s position in the hierarchy
      • E.g. League (default), Conference, Division, Tier, etc.
      • Should be the same for all children within a container?
      • Might also leverage for ‘exhibition’ or ‘inter-division’ play containers?

DEFINED FIELDS

  • Field: parent_id: ID of the league’s parent entity
  • Field: parent_type: Bundle Type of the league’s parent entity
  • Field: label: A label representing the instance’s position in the hierarchy

ALLOWED PARENT REFERENCES

  • Season -> Organization (many to one)
  • League Container -> Organization (many to one)
  • League Container -> Season (many to one)
  • League Container -> League Container (many to one)
  • Standalone League Container

NOTES

  • Games within a League Instance should also support subdividing into multiple in-season ‘sessions’, to allow for in-season movement between divisions/tiers.
  • How do we start with a basic league structure, then add a new season after the fact? Can the class simplify the cloning of the children structure?
  • League -> division -> season? Or League->season->Divisions? (prefer the latter, to accommodate inter-divisional play)
    • Suggestion: Store the league structure/hierarchy in an array?

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.