@startuml Tournament System
' Internal development class diagram
' Describes database fields and object methods required
title Tournament System - Group 1 

class Match {
    *match_id: Integer
    tournament_id: Integer
    parent_id: Integer
    team1_id: Integer
    team2_id: Integer
    winner_id: Integer

    Match constructor(tournament_id: Integer, team_ids: Integer[])
    void setWinner(winner_id: Integer)
}
class Team {
    *team_id: Integer
    name: String
    tournament_ids Integer

    Team constructor(name: String, tournamentId: Integer)
    void addPlayer(player_id: Integer)
    void removePlayer(player_id: Integer)
}
class Player {
    *player_id: Integer
    name: String
    team_id: Integer


    Player constructor(name: String)
    void joinTeam(team_id: Integer)
    void leaveTeam()
}

class Tournament {
    *tournament_id: Integer
    name: String
    start_date: Date
    end_date: Date

    Tournament constructor(name: String, start_date: Date, end_date: Date)
}


Team "2..*" -- "1..*" Tournament : "Plays in"
Tournament "1" -- "1..*" Match : contains
Player "1..*" -- "1..1" Team : "Belongs to"
Team "2..2" -- "1..*" Match : "Competes in"


@enduml
