Declare a UNIQUE constraint on the pair of columns "ID" and "CANDIDATE", and reference that pair from the table "VOTES". Use a CHECK constraint in "VOTES" to guarantee that votes are recorded only for a candidate.
CREATE TABLE STUDENTS(
ID INTEGER PRIMARY KEY,
FIRST_NAME VARCHAR2(20) NOT NULL,
LAST_NAME VARCHAR2(20) NOT NULL,
CANDIDATE CHAR(1) DEFAULT 'f' NOT NULL
CHECK (CANDIDATE IN ('t', 'f')),
UNIQUE (ID, CANDIDATE)
);
CREATE TABLE VOTES(
STUDENT_ID INTEGER PRIMARY KEY
REFERENCES STUDENTS (ID),
VOTES_FOR INTEGER NOT NULL,
CANDIDATE CHAR(1) DEFAULT 't'
CHECK (CANDIDATE = 't'),
FOREIGN KEY (VOTES_FOR, CANDIDATE)
REFERENCES STUDENTS (ID, CANDIDATE)
);
"IS_CANDIDATE" is probably a better name than "CANDIDATE"; "CANDIDATE_ID" is probably a better name than "VOTES_FOR".