[데이터베이스 설계의 정석] 실무자와 SQLD 수험생을 위한 ERD 보는 법 및 까마귀발(Crow's Foot) 기호 완벽 해부
"수십 개의 테이블이 거미줄처럼 얽혀 있는 데이터베이스, 도대체 어디서부터 어떻게 읽어야 할지 막막하신가요?" 데이터베이스를 하나의 거대한 건축물에 비유한다면, ERD(Entity-Relationship Diagram, 개체관계모델)는 그 건축물의 뼈대와 구조를 한눈에 보여주는 가장 완벽한 설계도입니다. 시스템을 새로 구축하는 개발자, 데이터를 추출하여 인사이트를 발굴하는 데이터 애널리스트, 그리고 데이터베이스 자격증(SQLD, SQLP)을 준비하는 수험생에 이르기까지 ERD를 해독하는 능력은 IT 업계에서 살아남기 위한 필수적인 '언어'와 같습니다. 복잡해 보이는 선과 기호들도 그 규칙만 알면 누구나 명쾌하게 데이터의 흐름을 읽어낼 수 있습니다. 데이터베이스의 논리적 구조를 파악하는 핵심 요소인 엔터티와 속성의 개념부터, 많은 분들이 가장 헷갈려하는 실선과 점선의 차이, 그리고 '까마귀발 표기법(Crow's Foot)'의 디테일한 해석 방법을 공백 제외 2,500자의 방대한 실무 가이드로 아주 상세하고 심도 있게 파헤쳐 드립니다.
1. ERD의 3대 핵심 구성 요소: "개체, 속성, 그리고 관계"
ERD를 읽는 첫걸음은 도면에 그려진 사각형 박스와 그 안의 텍스트, 그리고 박스들을 잇는 선의 의미를 파악하는 것입니다. ERD는 크게 세 가지 요소로 구성됩니다.
1) 엔터티 (Entity: 개체)
ERD에서 사각형 박스로 표현되는 엔터티는 데이터베이스에 저장할 가치가 있는 '명사'형 정보의 집합입니다. 예를 들어 회사 데이터베이스라면 '사원', '부서', '프로젝트' 등이 각각 하나의 엔터티가 되며, 물리적 데이터베이스(RDBMS)로 구현될 때는 하나의 '테이블(Table)'로 변환됩니다.
2) 속성 (Attribute)
엔터티 사각형 안에 나열된 구체적인 항목들입니다. '사원' 엔터티 안에는 '사원번호', '이름', '입사일', '급여' 등의 속성이 존재합니다. 이는 테이블의 '컬럼(Column)'이 됩니다. 특히 속성 중에서도 엔터티 내의 각 데이터를 유일하게 식별할 수 있는 핵심 속성을 기본키(PK, Primary Key)라고 부르며, 다른 엔터티와 연결 고리 역할을 하는 속성을 외래키(FK, Foreign Key)라고 합니다. 보통 ERD에서는 열쇠 모양 아이콘이나 PK, FK라는 텍스트로 이를 명시합니다.
3) 관계 (Relationship)
엔터티와 엔터티 사이를 연결하는 '선(Line)'입니다. "사원은 부서에 소속된다", "고객은 상품을 주문한다"처럼 엔터티 간의 업무적 연관성을 시각화한 것으로, 이 선의 모양과 끝부분의 기호를 해석하는 것이 ERD 독해의 핵심입니다.





2. 관계선의 종류: "실선(식별)과 점선(비식별)의 결정적 차이"
두 사각형(엔터티)을 연결하는 선을 자세히 보면, 끊어짐이 없는 '실선'이거나 점으로 이어진 '점선' 두 가지 중 하나로 표현됩니다. 이는 부모 엔터티로부터 물려받은 외래키(FK)가 자식 엔터티에서 어떤 역할을 하는지를 보여주는 매우 중요한 제약 조건입니다.
1) 실선 (Solid Line): 식별 관계 (Identifying Relationship)
부모 엔터티의 기본키(PK)를 자식 엔터티가 물려받아, 자신의 '기본키(PK)'의 일부로 사용하는 강력한 종속 관계입니다. 예를 들어 '주문' 엔터티와 '주문 상세' 엔터티가 있다고 가정해 봅시다. '주문 상세' 데이터는 반드시 어떤 '주문'에 속하는지(주문번호)를 알아야만 스스로의 존재를 식별할 수 있습니다. 즉, 부모가 없이는 자식이 절대 생성될 수 없는 생명선과 같은 강한 결합을 실선으로 표현합니다.
2) 점선 (Dashed Line): 비식별 관계 (Non-Identifying Relationship)
부모 엔터티의 기본키(PK)를 자식 엔터티가 물려받긴 하지만, 이를 자신의 기본키로 쓰지 않고 단순한 '일반 속성(일반 외래키)'으로만 사용하는 느슨한 관계입니다. 예를 들어 '부서'와 '사원' 엔터티의 관계에서, 사원은 부서에 소속되어 부서번호(FK)를 가지지만, 사원 자체를 식별하는 것은 '사원번호(PK)'이지 부서번호가 아닙니다. 부서가 없어져도 사원이라는 데이터는 존재할 수 있으므로 이를 점선으로 표현합니다. 실무 데이터베이스 설계의 약 80% 이상은 유연성이 높은 이 점선(비식별 관계)으로 이루어져 있습니다.
INNER JOIN을 사용하기 수월하지만, 비식별 관계(점선)에서는 FK에 NULL 값이 허용될 수 있으므로 데이터 누락을 막기 위해 LEFT OUTER JOIN 사용을 적극 고려해야 합니다.
3. 까마귀발 표기법(Crow's Foot) 1단계: 차수(Cardinality)
엔터티를 연결하는 선의 양 끝부분을 보면, 선이 한 가닥으로 끝나는지 아니면 새의 발자국처럼 세 갈래로 갈라지는지 확인할 수 있습니다. 이를 정보공학 표기법, 일명 '까마귀발 표기법(Crow's Foot Notation)'이라고 부르며 데이터가 대응되는 최대 수량(차수)을 의미합니다.
1) 단일 선 ( ─ ) : 1 (One)
선이 갈라지지 않고 하나로 끝난다면 대상 데이터가 오직 '1개'만 대응된다는 뜻입니다. 부서와 사원의 관계를 예로 들면, 한 명의 사원은 오직 1개의 부서에만 소속될 수 있으므로, 사원에서 부서 쪽으로 향하는 선의 끝은 단일 선(1)으로 끝납니다.
2) 까마귀 발 ( ─< ) : 다수 (Many, N)
선 끝이 세 갈래로 갈라진다면 대상 데이터가 '여러 개(N개)' 대응될 수 있다는 뜻입니다. 하나의 부서 안에는 여러 명의 사원이 소속될 수 있습니다. 따라서 부서에서 사원 쪽으로 향하는 선의 끝은 까마귀발(N) 모양을 띠게 됩니다. 이를 종합하면 부서와 사원은 '1:N (일대다)' 관계가 성립되는 것입니다.





4. 까마귀발 표기법(Crow's Foot) 2단계: 선택성(Optionality)
선의 끝부분 모양(1 또는 N) 바로 안쪽 선상에는 세로선( | ) 또는 동그라미( O ) 기호가 추가로 붙어 있습니다. 이는 데이터가 대응되는 최소 수량, 즉 이 관계가 필수적인지 선택적인지를 나타내는 매우 정밀한 제약 조건입니다.
| 기호 조합 | 의미 (최소, 최대) | 해석 및 실무 예시 |
|---|---|---|
| ─ | | ─ | 필수이며, 1개 (Mandatory One) |
반드시 1개만 존재해야 합니다. 예: 사원은 반드시 1개의 부서에 속해야 한다. (부서 없는 사원은 존재할 수 없음) |
| ─ O | ─ | 선택이며, 1개 (Optional One) |
0개이거나 1개 존재합니다. 예: 고객은 담당 영업사원이 없을 수도 있고, 있다면 1명뿐이다. (담당자가 배정되지 않은 신규 고객 가능) |
| ─ | < ─ | 필수이며, 여러 개 (Mandatory Many) |
반드시 1개 이상 여러 개 존재합니다. 예: 하나의 주문에는 최소 1개 이상의 주문 상세(상품)가 포함되어야 한다. (빈 주문서는 불가능) |
| ─ O < ─ | 선택이며, 여러 개 (Optional Many) |
0개일 수도 있고 여러 개일 수도 있습니다. 예: 부서에는 사원이 아직 1명도 없을 수도 있고(신설 부서), 여러 명 있을 수도 있다. |
실전 도면 해석 훈련
[부서] 엔터티와 [사원] 엔터티가 점선으로 연결되어 있습니다. 부서 쪽 끝에는 | | (필수 1) 기호가 있고, 사원 쪽 끝에는 O < (선택 다수) 기호가 그려져 있습니다. 이를 완벽하게 독해해 보겠습니다.
- 사원 입장에서 부서를 바라볼 때 (||): "나는 사원이다. 나는 반드시(최소 1) 부서에 소속되어야 하며, 오직 하나의(최대 1) 부서에만 소속될 수 있다."
- 부서 입장에서 사원을 바라볼 때 (O<): "나는 부서다. 나에게 소속된 사원은 아직 한 명도 없을 수 있고(최소 0, 신설 부서), 배정된다면 여러 명(최대 N)의 사원을 거느릴 수 있다."
NULL 값이 허용된다는 것을 강력하게 암시합니다. 반면 세로선(|, 필수적)은 NOT NULL 제약 조건이 걸려야 함을 의미합니다. ERD 기호 하나가 시스템의 에러를 좌우합니다.
5. 결론: "ERD는 비즈니스 로직을 담은 가장 투명한 거울입니다"
결론적으로 ERD를 읽을 줄 안다는 것은 단순히 IT 도면을 해석하는 수준을 넘어, 해당 기업이 데이터를 바탕으로 비즈니스를 어떻게 운영하고 있는지 그 본질적 규칙(Business Rule)을 꿰뚫어 보는 것과 같습니다.
"고객이 상품을 여러 개 살 수 있는가?", "회원이 탈퇴해도 작성한 게시글은 남겨두는가?", "주문 없이 결제 데이터가 먼저 생성될 수 있는가?" 이 모든 실무적인 질문에 대한 해답이 점선과 실선, 그리고 까마귀발 기호 안에 명백하게 기록되어 있습니다. 데이터 모델링에 입문하시거나 자격증 취득을 목표로 하신다면, 오늘 분석해 드린 차수(Cardinality)와 선택성(Optionality)의 조합 원리를 반드시 머릿속에 각인하십시오. 복잡한 시스템 앞에서도 길을 잃지 않는 강력한 데이터 내비게이션을 얻게 될 것입니다. 여러분의 치열하고 깊이 있는 데이터 역량 강화를 진심으로 응원합니다!






