Você pode aceitar a inconsistência eventual numa modelagem física [0,N] como na resposta do @VictorStafusa. Ou então usar um banco de dados que aceita inconsistências no meio de transações. Essa opção não é comum, eu particularmente só conheço o SQLite que faz isso. Como proceder nesse caso? Bem...