💡 핵심 인사이트
데이터베이스 ER 모델의 중심을 잡는 개체(Entity)는, 현실 세계에 존재하는 사람, 사물, 장소, 개념 등 **'기업이 데이터를 수집하고 끈질기게 관리해야 할 독립적인 명사(대상)'**를 의미합니다.
ER 다이어그램에서는 **사각형(Rectangle)**으로 그려지며, 향후 RDBMS로 넘어갈 때 하나의 독립된 **'테이블(Table)'**로 1:1 변신하게 됩니다.
Ⅰ. 개체(Entity)를 식별하는 법 (무엇이 개체인가?)
병원 데이터베이스를 구축한다고 쳐봅시다. 병원에는 의사, 간호사, 환자, 주사기, 청진기, 수납창구, 예약시간 등 수많은 단어들이 떠다닙니다. 이 중 무엇이 네모 박스(Entity)가 되어야 할까요?
개체의 조건
- 유형/무형의 명확한 실체: 사람(환자, 의사)이나 사물(의약품)처럼 눈에 보이는 것뿐만 아니라, 눈에 보이지 않는 개념(진료 예약, 부서, 주문 내역)도 훌륭한 개체입니다.
- 속성을 가질 수 있는가?: "이 명사에 설명표를 붙일 수 있나?" 의사는 '면허번호, 이름, 전공'이 있습니다(개체 맞음). 반면 '빨간색'이라는 단어는 그 자체가 특성이지 다른 속성을 가지지 못합니다(개체 아님, 속성임).
- 관리가 필요한가?: 병원에 청진기가 수백 개 굴러다니지만, 굳이 청진기 고유번호를 매겨가며 추적 관리할 필요가 없다면 DB 모델에서는 개체(사각형)로 그리지 않고 과감히 버립니다.
Ⅱ. 개체 타입(Entity Type)과 개체 인스턴스(Entity Instance)
ER 모델링을 할 때 혼동하기 쉬운 두 가지 계층입니다. 테이블 스키마와 데이터(로우)의 관계와 똑같습니다.
- 개체 타입 (Entity Type):
- 우리가 ERD 화이트보드에 네모난 상자로 그리는 것은 바로 이 '개체 타입'입니다. "환자라는 집단", "의사라는 분류" 그 자체를 의미하는 추상적인 틀(붕어빵 틀)입니다.
- 예: [ 환자 ] (사각형 박스)
- 개체 인스턴스 (Entity Instance / Entity Occurrence):
- 그 개체 타입이라는 틀에 맞춰서 실제로 존재하는 구체적인 한 명 한 명의 실제 데이터 값(붕어빵)입니다.
- 예: 환자 1(김철수, 20세, 감기), 환자 2(이영희, 30세, 골절).
- 개체들의 집합(인스턴스들)이 모여 하나의 거대한 개체 세트(Entity Set)를 이룹니다.
Ⅲ. 강한 개체(Strong) vs 약한 개체(Weak)
개체가 홀로 설 수 있는지, 남에게 빌붙어 사는지에 따라 두 가지로 분류되며, ERD를 그리는 기호도 달라집니다.
- 강한 개체 (Strong Entity):
- 자기 스스로 유일한 식별자(PK, 예: 학번, 사원번호)를 가질 수 있어 누구의 눈치도 보지 않고 독립적으로 존재할 수 있는 당당한 개체입니다.
- 기호: 일반적인 단일 사각형 (▭). (예: 사원, 부서).
- 약한 개체 (Weak Entity):
- 독자적인 식별자가 없어서, 부모(강한 개체)가 존재해야만 비로소 자신의 존재 가치가 생기는 기생적인 개체입니다. 부모 개체가 지워지면 같이 소멸합니다.
- 기호: 이중 사각형 (▱▱).
- 예시: 회사 DB의
[사원 부양가족]개체. 사원이 퇴사해버리면 그 가족의 데이터는 회사 DB에 남아있을 이유가 전혀 없으므로 같이 날아갑니다. 부양가족 개체는 사원 개체에 철저히 의존하는 약한 개체입니다.
📢 섹션 요약 비유: 개체(Entity)는 폴더 구조에서 가장 바깥에 있는 **'거대한 파일 바인더(서류철)'**입니다. "고객 서류철(개체)"이라는 껍데기(타입)를 만들어 네모난 상자에 담아두고, 장사를 시작하면 그 빈 서류철 안에 김철수, 이영희의 종이 서류(개체 인스턴스)가 수만 장씩 차곡차곡 쌓이게 되는 뼈대입니다.