251013_SQLD_데이터 모델링의 요소

2025. 10. 13. 17:53TIL

데이터 모델링을 구성하는 요소에는 엔티티(Entity), 속성(Attribute), 관계(Relationship), 식별자(Identifier)의 4가지 종류가 있다. 오늘은 이 4가지 요소의 개념, 특징, 분류와 표기법에 대해 알아보았다.

 

1. 엔티티(Entity)

1) 엔티티란?

하나의 개체이며, 정보의 세계에서 의미 있는 하나의 정보 단위를 뜻한다. 데이터의 분류라고도 볼 수 있다.

인스턴스(Instance) : 데이터베이스 테이블에 저장된 특정한 데이터 내용의 전체 집합. 즉 테이블의 행(row)이다.

엔티티는 인스턴스의 집합이다.

 

2) 엔티티의 특징

  1. 업무에서 필요로 하는 정보를 포함한다.
  2. 식별 가능 여부 : 인스턴스가 식별자에 의해 한 개씩만 존재하는지 확인해야 한다.
  3. 인스턴스의 집합 : 엔티티는 2개 이상의 인스턴스로 구성되어 있어야 한다.
  4. 업무 프로세스 활용 : 정의한 모든 엔티티는 주어진 업무 프로세스 내에서 활용되어야 한다.
  5. 속성 포함 : 주식별자만 존재하고 일반 속성이 없는 경우, 엔티티라고 할 수 없다.
  6. 관계의 존재 : 엔티티는 주어진 업무와 연관성이 있어야 하고, 정의된 다른 엔티티와도 연관성이 있어야 한다.

3) 엔티티의 분류

유/무형에 따른 분류
유형 엔티티 물리적인 형태가 존재하는 엔티티
ex. 상품, 사원 등
개념 엔티티 물리적인 형태가 없고, 개념적인 정보로 구분되는 엔티티
ex. 학과, 부서, 종목
사건 엔티티 특정한 이벤트에 종속되는 엔티티. 즉 업무 수행에 의해 발생되는 엔티티
ex. 주문, 이벤트 응모
발생 시점에 따른 분류
기본/키 엔티티
(Basic entity)
독립적인 생성이 가능하고, 다른 엔티티의 부모 역할을 하는 엔티티
ex. 고객, 상품
중심 엔티티
(Main entity)
기본 엔티티로부터 발생하고 업무에서 중심적인 역할을 하는 엔티티
ex. 주문, 계약
행위 엔티티
(Active entity)
두 개 이상의 엔티티로부터 발생하고 자주 내용이 바뀌거나 데이터 양이 증가하는 엔티티
ex. 주문 내역, 취소 내역

 

4) 엔티티의 네이밍 방식

엔티티의 이름을 설정할 때는 특정한 규칙을 둔다. (반드시 따라야 하는 것은 아니지만, 권장되는 사항)

  1. 가능하면 업무에서 사용하는 용어를 사용한다.
  2. 가능하면 축약어를 사용하지 않는다.
  3. 단수명사를 사용하고, 띄어쓰기를 하지 않는다.
  4. 중복된 이름을 사용하지 않는다.
  5. 엔티티의 생성 의미대로 이름을 설정한다.

2. 속성(Attribute)

1) 속성이란?

인스턴스가 가진 어떠한 성질이나 성격을 의미한다.

인스턴스가 행(row)이었다면 속성은 열(column)로 생각할 수 있는데,

"업무에서 필요로 하는 인스턴스로 관리하고자 하는, 의미상 더 이상 분리되지 않는 최소의 데이터 단위"를 속성의 정의로 볼 수 있다.

 

2) 속성의 특징

  1. 업무에서 필요로 해야 한다.
  2. 의미 상 더 이상 분리되지 않는 그 자체의 독립성을 유지한다.
  3. 엔티티를 설명할 수 있어야 하고, 인스턴스의 구성 요소가 되어야 한다.
  4. 정규화 이론에 기반을 두고 정해진 주식별자에 함수적 종속성을 가져야 한다.
  5. 하나의 속성은 한 개의 속성값만 가진다.

3) 속성의 분류

속성의 특징에 따른 분류
기본 속성(Basic attribute) 업무로부터 추출된 모든 속성 (거의 대부분을 차지함)
설계 속성(Designed attribute) 데이터 모델링, 업무의 규칙화 등을 위해 새로 만들거나 변형하여 정의하는 속성
파생 속성(Derived attribute) 다른 속성의 영향을 받아 발생하는 속성 (계산된 값을 가지는 속성 등)
파생 속성이 많은 경우 데이터의 정합성에 영향을 줄 수 있으므로 주의해야 한다.
엔티티 구성 방식에 따른 분류
PK(Primary key) 속성 엔티티를 식별할 수 있는 속성 (주식별자와 유사한 개념)
FK(Foreign key) 속성 다른 엔티티와의 관계에 포함된 속성 (다른 엔티티로부터 가져온 속성)
일반 속성 PK, FK가 아닌 나머지 속성

 

4) 도메인과 속성의 명명법

각 속성이 가질 수 있는 값의 범위. (숫자가 아니더라도, 전체 구성 중 일부일 수 있다.)

ex. 회사의 부서명이 속성이라면, 회사에 없는 부서명은 속성값에 들어갈 수 없다.

속성의 명명법은 엔티티와 유사하다.

 

3. 관계(Relationship)

1) 관계란?

데이터 모델에서, 각 엔티티의 인스턴스 사이에 논리적인 연관성이 존재하는 상태를 의미한다.

이 때 두 엔티티 사이의 관계를 정의할 수 있어야 한다.

각 엔티티 내부의 인스턴스가 개별적으로 연결되어 있는 관계를 페어링(pairing)이라고 한다.

 

2) 관계의 분류

존재에 의한 관계 소속-포함의 형태로 나타나는 관계
특별한 행위(activity)가 존재하지 않아도 두 엔티티 사이에 관계가 형성될 수 있다.
ex. 반(class)과 학생(student)의 관계
행위에 의한 관계 행동-행위의 결과로 나타나는 관계
특정한 행위가 존재해야 두 엔티티 사이에 관계가 형성된다.
ex. 고객(customer)과 주문(order)의 관계

 

3) 관계의 표기법

I. 관계차수(Degree/Cardinality)

두 개의 엔티티 간 관계에서 참여자의 수를 표한하는 것.

  1. 1:1 (one to one) 관계
    하나의 엔티티는 다른 엔티티에 대해 하나의 관계로 연결된다.
    A 엔티티에 존재하는 데이터 1개가 B 엔티티에 존재하는 데이터 1개와 연결된다.
  2. 1:M (one to many) 관계
    하나의 엔티티는 다른 엔티티에 대해 하나 이상의 관계로 연결된다.
    이때 한 쪽 방향만 해당되며 반대 방향은 오직 하나의 관계만 갖는다.
    A 엔티티에 존재하는 데이터 1개가 B 엔티티에 존재하는 데이터 M개와 연결된다.
  3. M:N (many to many) 관계
    1:M 관계가 양방향에서 모두 발생하는 관계로 연결된다.
    A 엔티티에 존재하는 데이터 1개가 B 엔티티에 존재하는 데이터 M개와 연결되며, B 엔티티에 존재하는 데이터 1개도 A 엔티티에 존재하는 데이터 N개와 연결된다. (M과 N은 동일할 수 있다.)

관계차수(Cardinality)의 표기법

 

II. 관계선택사항(Optionality)

데이터 모델 관계의 핵심으로, 참여하는 엔티티가 항상 참여하는지, 아니면 참여할 수 있는지에 따라 필수(mandatory)와 선택(optional)으로 나뉜다.

필수는 상대 엔티티에 대해 해당 조건을 만족하는 엔티티가 반드시 존재하는 경우

선택은 상대 엔티티에 대해 해당 조건을 만족하는 엔티티가 존재할 수도 존재하지 않을 수도 있는 경우

관계선택사항(Optionality)의 표기법

III. 관계를 읽는 방법

관계를 읽는 방법. Copyright TeamSparta

 

4. 식별자(Identifier)

1) 식별자란?

식별자는 엔티티와 인스턴스를 구분하게 만들어주는 대표적인 속성이다. 하나의 엔티티에는 반드시 하나의 유일한 식별자가 존재해야 한다.

 

2) 식별자의 분류

대표성 여부에 따른 분류
주식별자(Primary identifier) 엔티티 내에서 각 인스턴스를 구분할 수 있는 구분자
다른 엔티티와 참조 관계를 연결할 수 있는 식별자
보조식별자(Alternate identifier) 엔티티 네에서 각 인스턴스를 구분할 수 있는 구분자
대표성이 없어 다른 엔티티와 참조 관계를 연결할 수 없는 식별자
스스로 생성 여부에 따른 분류
내부 식별자 엔티티 내부에서 정의되는 식별자
외부 식별자 다른 엔티티에서 받아오는 식별자(FK)
속성의 수에 따른 분류
단일 식별자 하나의 속성으로 구성된 식별자
복합 식별자 둘 이상의 속성으로 구성된 식별자
대체 여부에 따른 분류
본질 식별자 업무에 의해 생성되는 식별자
인조 식별자 식별자가 복잡한 경우(ex.복합 식별자) 구분을 위해 인위적으로 생성한 식별자

이 분류는 독립적이기 때문에, 하나의 식별자가 주식별자이면서 내부 식별자, 복합 식별자, 본질 식별자일 수 있다.

 

3) 주식별자(primary identifier)의 특징

  1. 유일성 : 주식별자에 의해 엔티티 내의 모든 인스턴스를 유일하게 구분할 수 있어야 한다.
  2. 최소성 : 주식별자의 속성 수는 유일성을 만족하는 최소의 수여야 한다.
  3. 불변성 : 한 번 지정된 주식별자의 값은 변경되어서는 안 된다.
  4. 존재성 : 주식별자가 지정되면 반드시 주식별자에 대항하는 속성값이 모두 존재해야 한다.

4) 주식별자의 도출 기준

  1. 해당 업무에서 자주 이용되는 속성으로 설정한다.
  2. 명칭, 내역 등 특정 이름의 값을 가지는 속성은 가능하면 주식별자로 사용하지 않는다. (숫자값을 갖는 속성을 우선시)
  3. 복합식별자로 주식별자를 선정하는 경우 과도하게 속성을 포함시키면 안 된다.

5) 식별자 관계와 비식별자 관계의 결정 요인

주식별자를 FK로 가져와 그대로 주식별자로 사용하면 식별자 관계, 일반 속성으로만 사용하면 비식별자 관계로 정의한다.

식별자 관계(Identifier relation)의 표기법