CompanyName is used as the primary key for COMPANY, as stated in the requirements ("company name" is used to identify companies in the opening folder).
QUALIFICATION is modeled as a separate entity type (not just an attribute) because it has its own attributes (Code and Description), and is referenced by multiple relationships (Has_Qual, Req_Main, Req_Minor).
PLACEMENT is modeled as a weak entity type identified through its identifying relationship with OPENING and CANDIDATE. Its partial key is the combination of OpeningNo and CandidateNo (inherited from the identifying relationship). TotalHoursWorked is its own attribute.
JOB_HISTORY is modeled as a weak entity type owned by CANDIDATE. Each job history entry corresponds to a placement. OpeningNo serves as a partial key. Additional attributes StartDate, EndDate, and HrsWorked are assumed to capture the work record.
OPENING has a required main qualification (1 per opening) modeled as a N:1 relationship (Req_Main) to QUALIFICATION, and optional minor qualifications (0 or more) modeled as a M:N relationship (Req_Minor) to QUALIFICATION.
A candidate may have multiple qualifications (multi-valued), modeled as a M:N relationship (Has_Qual) between CANDIDATE and QUALIFICATION.
A candidate's participation in Placed_In is partial (not all candidates get placed), while PLACEMENT has total participation (every placement must link to both a candidate and an opening).
A candidate's participation in Has_Hist is partial (candidates who never worked have no history), while JOB_HISTORY has total participation with respect to CANDIDATE.