본문 바로가기
SQL Professional

[독학! SQLP] 엔터티? 식별자? 속성? 속성값? 도메인? 인스턴스? 관계?

by 개발자의 2025. 8. 18.

1) 엔터티 (Entity, Table)

  • 정의 : 관리할 가치가 있는 실세계의 객체 또는 개념 (사람, 사물, 사건, 장소 등)
  • 특징
    • 반드시 식별자를 가진다 (유일성)
    • 속성(Attribute)들로 구성된다
    • 두 개 이상 인스턴스의 집합
    • 다른 엔터티와 관계(Relationship)로 연결된다
      • 통계/코드성 엔터티는 관계 생략 가능
  • 발생 시점 분류
    • 기본(키) 엔터티 : 최초 발생, 독립적 존재, 부모 역할 가능 (예: 고객, 상품)
    • 중심 엔터티 : 반복되는 행위/상태 관리, 트랜잭션 중심 (예: 주문, 계약)
    • 행위 엔터티 : 이벤트/행위를 기록, 로그성 (예: 주문상세, 결제내역, 배송기록)
  • 예시 : 고객, 주문, 상품

2) 식별자 (Identifier, Key)

  • 정의 : 엔터티 내 인스턴스를 유일하게 구분할 수 있는 속성(들)
  • 식별자의 분류 체계
    • 대표성 기준
      • 주식별자
        • 유일성 : 주 식별자에 의해 엔터티 내의 모든 인스턴스 들은 유일하게 구분됨
        • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
        • 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
        • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함. (NULL 불가)
      • 보조식별자
        • 엔터티의 인스턴스를 유일하게 식별할 수 있는 속성(들) 중에서 주식별자로 선택되지 않은 나머지 후보 식별자
        • PK 대신 써도 유일성이 보장됨. (대체 가능)
    • 생성(엔터티 자체 스스로) 기준
      • 내부 식별자 : 해당 엔터티 자체에서 만들어진 식별자
      • 외부 식별자 : 다른 엔터티(부모)로부터 받아온 식별자 (FK 포함)
    • 속성의 수 기준
      • 단일 식별자 : 하나의 속성으로 구성
      • 복합 식별자 : 둘 이상의 속성을 조합해서 구성
    • 시스템 대체 기준
      • 본질 식별자 : 업무적으로 원래 의미가 있는 값
      • 인조 식별자 : 업무적 의미는 없지만, 시스템에서 새로 만든 값
  • 특징
    • ERD에서 밑줄로 표시
    • 단일 속성 또는 복합 속성 가능
    • 설계 속성에 해당하는 경우가 많음 (예: 고객 ID)
  • 식별자 관계와 비식별자 관계
    • 식별자 관계
      • 강한 연결관계 (실선)
      • 자식의 주식별자 구성에 포함됨 
      • 조인하지 않고, 자식 테이블의 PK만 봐도 부모를 알 수 있음.
    • 비식별자 관계
      • 약한 연결관계 (점선)
      • 자식의 일반 속성에 포함됨
      • 자식 테이블의 PK는 일반 속성임. 부모를 알기 위해 조인해야 함.
  • 예시 : 고객 ID, 주민등록번호

3) 속성 (Attribute, Column)

  • 정의 : 엔터티가 가진 특성/성질을 나타내는 데이터 항목
  • 특징
    • 한 엔터티는 두 개 이상의 속성을 가진다
    • 한 속성은 반드시 한 개의 속성값(원자값)을 가진다 (→ 제1 정규형과 연결)
    • 엔터티의 속성 집합 → 테이블의 칼럼으로 변환
  • 분류 (특성 기준)
    • 기본 속성: 현실에 존재하는 본래 속성 → 고객명, 생년월일
    • 설계 속성: 모델링 과정에서 인위적 추가 (주로 식별자) → 고객 ID, 주문 ID
    • 파생 속성: 다른 속성에서 계산 가능 (저장 비권장) → 나이(=오늘-생년월일), 합계금액(=단가 ×수량)
  • 예시 : 고객명, 생년월일, 주소

4) 속성값 (Attribute Value)

  • 정의 : 속성이 실제로 가지는 구체적인 값 (인스턴스에 채워지는 데이터)
  • 특징
    • 원자값 → 한 속성은 반드시 한 개의 속성값만 가짐 (제1 정규형 조건)
    • 속성값은 도메인 내 값이어야 함 (허용된 범위 내 값)
    • 속성값은 NULL일 수도 있음
  • 예시
    • 속성 : 고객명 → 속성값: “홍길동”
    • 속성 : 생년월일 → 속성값: “1990-01-01”

5) 도메인 (Domain)

  • 정의 : 속성이 가질 수 있는 속성값의 범위
  • 특징
    • 속성의 유효 값 집합을 정의 (데이터 타입 + 제약조건)
    • 데이터 무결성 보장 (잘못된 값 방지)
    • DBMS에서는 데이터 타입, CHECK 제약, ENUM 등으로 표현 가능
  • 예시
    • 속성 : 성별 → 도메인 : {‘M’, ‘F’}
    • 속성 : 나이 → 도메인 : 0~150 범위의 정수
    • 속성 : 이메일 → 도메인 : VARCHAR(100), ‘@’ 포함 형식

6) 인스턴스 (Instance, Row)

  • 정의 : 엔터티에 실제 저장된 데이터 값 (한 행, Row)
  • 특징
    • 엔터티 = 집합, 인스턴스 = 개별 원소
    • 한 엔터티는 두 개 이상의 인스턴스 집합을 가진다
    • DB에서 레코드(Row)로 구현됨
  • 예시 : 고객 엔터티의 데이터 → “고객 ID=001, 홍길동, 900101-1234567, 서울시 …”

7) 관계 (Relationship)

  • 정의
    • 엔터티와 엔터티 같은 연관성
    • 현실 세계의 업무 규칙을 데이터 모델로 표현한 것
  • 종류(발생 근거 기준)
    • 존재에 의한 관계
      • 한 엔터티가 존재해야 다른 엔터티가 성립
      • 부모 - 자식 구조, FK 상속
      • ex > 부서 - 사원, 고객 - 주문
    • 행위에 의한 관계
      • 특정 업무 행위(이벤트) 발생으로 성립
      • 주로 중심 엔터티와 연계
      • ex> 주문 - 상품 : 주문 행위가 있어야 주문상세 발생, 학생-과목 : 수강 신청 시 수강 관계 생성
  • 일반적 관계 분류
    • 일대일 (1:1)
    • 일대다 (1:N, 가장 흔함)
    • 다대다 (M:N, 중간 엔터티(교차, 맵핑 엔터티) 필요)
  • 관계의 구성요소
    • 관계명 : 관계의 이름 (동사 표현이 원칙)
    • 관계 차수 : 두 엔터티 간 참여하는 수량 (1, N, M)
    • 관계 선택 사양 : 필수관계(1.. N), 선택관계(0.. N)
  • 예시
    • 고객 - 주문 - 상품
    • 고객이 주문을 한다.
      • 차수 : 고객(1) ↔주문(N)
      • 선택성
        • (0.. N) 고객은 주문을 할 수도, 하지 않을 수도 있음
        • (1.. 1) 주문은 반드시 고객이 있어야 함
    • 주문은 상품을 포함한다.
      • 차수 : 주문(N) ↔ 상품(M)
      • 선택성
        • (M.. N) 주문상세라는 중간 엔터티로 분해