CREATE TABLE IF NOT EXISTS match_penalty_settings (
    match_id INTEGER PRIMARY KEY REFERENCES matches(id) ON DELETE CASCADE,
    max_rounds INTEGER NOT NULL DEFAULT 5,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS match_penalties (
    id SERIAL PRIMARY KEY,
    match_id INTEGER NOT NULL REFERENCES matches(id) ON DELETE CASCADE,
    side VARCHAR(10) NOT NULL CHECK (side IN ('home', 'away')),
    shot_number INTEGER NOT NULL CHECK (shot_number > 0),
    result VARCHAR(20) NOT NULL CHECK (result IN ('scored', 'missed')),
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    UNIQUE (match_id, side, shot_number)
);
