Quiere un índice único en event_id
y day
:
create unique index idx_recurrence_event_day on recurrence(event_id, day)
Esto evitará la duplicación que no desea.
Si ya tiene duplicados, hay varias formas de deshacerse de ellos. Sin embargo, sería más fácil si tuviera una identificación única para cada fila, razón por la cual una clave principal de incremento automático es útil en todas las tablas.
Una forma de deshacerse de ellos incluso sin una identificación única es usar:
alter ignore table recurrence add unique (event_id, day);
Personalmente, no me gusta este método porque agregar un índice no debería eliminar filas, pero esta es una extensión válida de MySQL.