💡 핵심 인사이트
관계(Relationship)는 흩어져 있는 명사들(개체) 사이를 이어주는 **'동사(행위)'**입니다.
ER 모델에서 마름모(Diamond) 기호로 그려지며, 학생이 과목을 '수강한다', 부서가 사원을 **'소속시킨다'**처럼 데이터들이 현실 세계에서 얽혀있는 비즈니스 규칙을 표현합니다.
Ⅰ. 관계(Relationship)의 개념과 기호
회사에 '직원' 개체와 '프로젝트' 개체가 덩그러니 있으면 아무 쓸모가 없습니다. "어떤 직원이 어느 프로젝트에 투입되어 일하고 있는가?"를 연결해 줘야 시스템이 돌아갑니다. 이처럼 개체와 개체가 맺고 있는 의미 있는 연관성을 관계라고 합니다.
- ERD 기호: 🔷 마름모 (Diamond).
- 마름모 양옆으로 실선을 그어 관련된 개체(사각형)들과 연결합니다. (예:
[직원] ─ 🔷소속됨 ─ [부서])
Ⅱ. 관계의 차수 (Degree of Relationship)
관계에 몇 개의 개체 박스(사각형)가 선으로 연결되어 참여하고 있는가를 뜻합니다.
- 단항 관계 (Unary / Recursive):
- 참여 개체가 1개뿐입니다. 자기 자신의 꼬리를 무는 관계입니다.
- 예:
[직원]개체 안에서, 한 직원이 다른 직원을 **'관리한다(매니저)'**라는 관계.
- 이항 관계 (Binary):
- 가장 흔한 형태로, 2개의 개체가 참여합니다.
- 예:
[학생]─ 수강한다 ─[과목].
- 삼항 관계 (Ternary):
- 3개의 서로 다른 개체가 하나의 마름모(관계)에 동시에 매달려 있는 복잡한 구조입니다.
- 예:
[강사]와[학생]과[과목]이 모여 **'강의가 성립한다'**는 관계. (어떤 강사가 어떤 학생에게 무슨 과목을 가르치는지 세 가지 정보가 동시에 필요함).
Ⅲ. 관계도 스스로 속성(Attribute)을 가질 수 있다!
속성(타원)은 개체(네모)에만 매달리는 것이 아닙니다. 동사인 관계(마름모)도 자신만의 속성을 가질 수 있습니다. 이를 **관계 속성(교차 속성)**이라고 합니다.
- 상황:
[학생]이[과목]을 '수강한다(마름모)'. - 이때 **'성적(A+)'**이라는 데이터는 어디에 붙여야 할까요?
- 학생 이마에 붙이면: 이 학생이 무슨 과목을 A+ 받았는지 모릅니다.
- 과목 이마에 붙이면: 데이터베이스 과목을 누가 A+ 받았는지 모릅니다.
- 해결: '성적'은 학생과 과목이 찰떡같이 만나는 그 순간(수강한다)에만 의미가 생기는 값입니다. 따라서 '수강한다'라는 마름모 밑에 '성적'이라는 타원(속성)을 달아줍니다. 나중에 DB 설계 시 이 관계는 별도의 **'수강내역 테이블'**로 독립하게 됩니다.
📢 섹션 요약 비유: 관계는 두 섬(개체)을 이어주는 **'다리(Bridge)'**입니다. 다리가 없으면 섬 사람들은 교류할 수 없습니다. 단순히 섬 2개를 잇는 흔한 다리(이항 관계)도 있고, 세 섬이 바다 한가운데서 만나는 거대한 교차로(삼항 관계)도 있습니다. 그리고 그 다리 한가운데 있는 톨게이트 요금소 기록(성적)은 섬이 아닌 **다리 자체(관계 속성)**에 귀속되는 데이터입니다.