모두의 SQL, P.142
ERD를 통해 관계 차수(카디널리티. cardinality)와 관계 선택 사양(optionality)을 표현할 수 있습니다. 관계 차수는 1:1, 1:N, M:N 등 하나의 개체에 몇 개의 개체가 대응되는지를 표현하는 것을 말합니다. 관계 선택 사양은 관계가 필수인지 아닌지(없을 수도 있을지)를 표현하는 것을 말합니다. 화살표 방향은 어느 쪽에 속하는지를 나타냅니다.
관계 차수 도식의 의미는 다음과 같습니다.
관계 선택 사양도식의 의미는 다음과 같습니다.
employesss 테이블과 job_history 테이블의 관계를 예로 살펴보겠습니다.
'employees'는 여러 개의 job_history를 가질 수 있다. 그리고 'employee_id가 없는 job_history는 존재하지 않는다'라는 의미입니다. 예를 들어 employee_id가 101인 Neena Kochhar는 두 개의 job_history를 갖고 있으며 employee_id로 연결되어 있습니다.
SELECT A.firstname, A.last_name, B.*
FROM employess A, job_history B
WHERE A.employee_id = B.employee_id
AND A.employee_id = 101;
FIRST_NAME | LAST_NAME | EMPLOYEE_ID | START_DATE | END_DATE | JOB_ID | DEPARTMENT_ID |
---|---|---|---|---|---|---|
Neena | Kochhar | 101 | 97/09/21 | 01/10/27 | AC_ACCOUNT | 110 |
Neena | Kochhar | 101 | 01/10/28 | 05/03/15 | AC_MGR | 110 |
job_history 테이블에 employee_id 테이터 값 없이 테이터를 생성하려고 하면 오류가 발생합니다.