How to keep history for a one-to-many relationship?
Suppose we have 3 tables - one for employees, one for tasks, and one for "task_assignments", like so:

create table employees(
  employee_id number primary key
, employee_name varchar2(64)
, additional_information varchar2(64)
);

create table tasks(
  task_id number primary key
, task_details varchar2(64)
);

create table task_assignments(
  employee_id number references employees(employee_id)
, task_id number references tasks(task_id)
, start_date date not null 
, end_date date
, unique (employee_id, start_date)
);


The task_assignments table stores "historical" data.  We assume that each employee can only work on one task at a time (as stated in your question).  The task has a start_date (or time) and end_date.  We can use a trigger for preventing INSERTs if an employee already has an "open" task (ie the end_date of the task is null).  NOTE: the example trigger does not cover UPDATEs. 

create or replace trigger one_active_task_only
before insert on task_assignments
for each row
declare
  open_tasks number := 0 ;
begin
  select count(*) into open_tasks
  from task_assignments
  where employee_id = :new.employee_id
    and end_date is null ;    

  if open_tasks &gt;= 1 then
    raise_application_error (-20500,'This employee already has an open task');
  end if;
end one_active_task_only;
/

alter trigger one_active_task_only enable;


Testing and more details etc: see dbfiddle