[TIL]_2025.04.17 본캠프 60일차 (2) : SQLD 3주차

JIYUU·2025년 4월 17일
post-thumbnail

03. 데이터 모델링 요소

1. 엔터티 (Entity)

- 엔터티의 개념

= 데이터베이스의 테이블, 레코드
= 개체
= 두 개 이상의 속성 (attribute, 컬럼)의 집합
= 두 개 이상의 인스턴스 (Instance, 행)의 집합

- 엔터티의 특징

  • 첫번째 특징
    업무에서 필요로 하는 정보가 담겨있다.

  • 두번째 특징
    인스턴스가 식별자(예: 주민번호)에 의해 한개씩만 존재하는지 검증해야 한다.
    즉, 동일한 값을 한번만 등록해야 한다는 것. (중복 데이터가 없다)

  • 세번째 특징
    2개 이상의 인스턴스로 구성되어야 한다.
    (인스턴스가 한 개 밖에 없으면? 엔터티가 아니다)

  • 네번째 특징
    업무 프로세스에 활용이 되어야 한다.

  • 다섯번째 특징
    일반 속성(컬럼)이 존재해야한다. 주식별자(PK)만 존재하고 일반 속성이 없는 경우 엔터티가 아니다.

  • 여섯번째 특징
    연관성을 가진 다른 엔터티와의 관계가 존재한다.

- 엔터티의 분류

  • 유/무형에 따른 분류
    유형 엔터티 : 물리적인 형태를 갖추고 있는 데이터에 대한 엔터티 (예 : 강사, 상품) 안정적이고 지속적
    개념 엔터티 : 개념적인 정보에 대한 엔터티 (예 : 학과, 코스닥 종목, 과목)
    사건 엔터티 : 행위나 사건에 의해 발생된 특정한 이벤트를 기록한 엔터티, 업무에 따라서 발생되며 각종 통계에 사용 (예 : 이벤트 응모, 주문, 배송)

  • 발생 시점에 따른 분류
    기본/키 엔터티 : 독립적 생성 가능, 부모 엔터티 역할, 고유한 주식별자(PK) 가짐 (예 : 고객, 상품)
    중심 엔터티 : 기본 엔터티로부터 발생, 데이터의 양이 많고 다른 엔터티와의 관계를 통해 많은 행위 엔터티가 생성됨 (예 : 주문, 취소)
    행위 엔터티 : 두 개 이상의 부모 엔터티로부터 발생, 내용이 자주 변경되며 데이터이 양이 증가하는 경향이 있음 (예 : 주문 내역, 취소 내역)

- 엔터티의 명명 방식

  1. 가능한 업무 용어
  2. 가능한 축약어 지양
  3. 단수 명사, 띄어쓰기 없음
  4. 유일한 이름이 부여, 중복불가
  5. 생성 의미에 따라 명명

2. 속성 (Attribute)

- 속성의 개념

= 인스턴스(행)이 가진 성질
= 데이터베이스의 컬럼
= 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
= 하나의 인스턴스는 최소 하나 이상의 속성을 가짐
= 하나의 속성은 하나의 속성값(데이터)를 가짐

- 속성의 특징

  • 첫번째 특징
    업무에서 필요로 하는 정보이다

  • 두번째 특징
    더 이상 분리되지 않는 독립성을 가진 가장 작은 단위

  • 세번째 특징
    엔터티를 설명, 인스턴스의 구성요소

  • 네번째 특징
    정규화 이론에 기반을 두고 정해진 주식별자에 함수적 종속성을 가진다
    (예 : 학번이라는 주식별자를 알면, 이름이라는 속성을 알 수 있음)

  • 다섯번째 특징
    하나의 속성은 하나의 속성값을 가진다. (예 : 이름이라는 속성에서 김철수, 김민지 라는 두 개의 속성값을 가질 수 없다.)

- 속성의 분류

  • 특징에 따른 분류
    기본 속성 : 업무로부터 추출된 모든 속성, 가장 많다
    설계 속성 : 현실에 존재하지 않으며 데이터 모델링, 업무의 규칙화 등을 위해 생성, 변형된 속성 (예 : 식별번호, 고객 번호 등), 주로 식별자 역할
    파생 속성 : 다른 속성의 영향을 받아 발생된 속성. 데이터의 정합성(정확성)을 위해 가능한 적어야 한다.
  • 엔터티 구성 방식에 따른 분류
    PK 속성 : 엔터티를 식별할 수 있는 속성 (주식별자로 작용)
    FK 속성 : 다른 엔터티와의 관계에 포함된 속성. 즉, 다른 엔터티의 PK를 참조하는 속성
    일반 속성 : PK, FK를 제외한 속성

- 속성의 명명 방식 (엔터티와 유사)

  1. 가능한 업무 용어
  2. 가능한 축약어 지양
  3. 가능한 명사형
  4. 가능한 중복없이
  5. 생성 의미에 따라 명명

3. 관계 (Relationship)

- 관계의 개념

= 상호 연관성이 있는 상태
= 엔터티와 인스턴스 사이의 연관성이 부여된 상태

- 관계의 페어링

두 개의 엔터티(데이터 덩어리)가 관계를 맺을 때,서로 몇 개씩 짝을 지을 수 있는지를 나타내는 것
즉, 관계의 페어링은 각각의 행(데이터)들이 실제로 다른 테이블의 행과 어떻게 짝을 이뤘는지를 나타내는 관계의 실제 연결 형태를 의미

- 관계의 분류

  • 존재에 의한 관계
    소속 및 포함 관계
    (예 : 상품과 매장은 존재에 의한 관계)

  • 행위에 의한 관계
    행동/행위 및 결과의 관계
    (예 : 고객과 주문은 행위에 의한 관계)

- UML (통합 모델링 언어)의 사용 목적 3가지

  • 의사소통 및 시스템 설계 논의를 위해서 사용
  • 전체 시스템 구조 및 클래스의 의존성 관계 파악을 위해서 사용
  • 시스템의 유지 보수를 위한 설계 등 문서 제작을 위해서 사용

- UML과 ERD의 차이

ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 표현
UML의 클래스 다이어그램은 존재적 관계와 행위에 의한 관계를 구분하고, 연관 및 의존 관계로 표현함

- 관계의 표기법

출처 : IE 표기법과 BARKER 표기법

- Barker 표기법

  • 엔터티 표기법

  • 속성 표기법

    '*' : 해당 속성에 반드시 값이 저장되어야 함
    'o' : 해당 속성에 값이 있을 수도 없을 수도

  • 선택 관계 표기법

    실선 : 필수 조건. 상대 엔터티에 대해 해당 엔터티에는 조건을 만족하는 엔터티가 반드시 존재한다.
    점선 : 선택 조건. 상대 엔터티에 대해 해당 엔터티에는 조건을 만족하는 엔터티가 있을 수도 있고 없을 수도 있다.

  • 식별자 표기법

    '#' : 주식별자(본질 식별자).
    'o' : 대체 식별자(보조 식별자)
    '*' : 외부 식별자

- IE 표기법

  • 엔터티 표기법

  • 속성 표기법

  • 선택 관계 표기법


    '|' : 관계를 맺는 데이터가 1개
    '<' : 관계를 맺는 데이터가 N개 (2개 이상)
    'o' : 관계를 맺는 데이터가 0개

  • 식별자 표기법

    식별자는 가장 상단에 수평선을 하단에 긋고 표시

4. 식별자 (Identifier)

- 식별자의 개념

= 하나의 엔터티에 구성되어 있는 여러 개의 속성(컬럼) 중 엔터티를 대표할 수 있는 속성
= 하나의 엔터티는 반드시 하나의 유일한 식별자 존재

- 주식별자의 특징

  • 첫번째 특징 : 유일성
    주식별자에 의해 엔터티 내의 모든 인스턴스(행)들을 유일하게 구분 가능

  • 두번째 특징 : 최소성
    주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
    즉, 주식별자는 엔터티 내의 각 인스턴스를 유일하게 구분할 수 있으면서, 그 유일성을 만족하는 데 꼭 필요한 최소한의 속성들로만 구성되어야 한다.

  • 세번째 특징 : 불변성
    한 번 지정되면 그 식별자의 값은 변하지 않는다.

  • 네번째 특징 : 존재성
    주식별자에는 반드시 데이터 값이 존재해야 하며 NULL 값은 존재할 수 없다.

- 식별자의 분류

  • 대표성 여부에 따른 분류
    주식별자 : 인스턴스를 구분할 수 있는 구분자, 다른 엔터티와 참조 관계를 연결할 수 있는 식별자
    보조 식별자 : 인스턴스를 구분할 수 있는 구분자, 대표성이 없어 참조 관계 불가능

  • 스스로 생성 여부에 따른 분류
    내부 식별자 : 엔터티 내부에서 정의
    외부 식별자 : 다른 엔터티와의 관계를 통해 받아오는 식별자

  • 속성 개수에 따른 분류
    단일 식별자 : 하나의 속성으로 구성
    복합 식별자 : 둘 이상의 속성으로 구성 (여러 개의 속성을 하나로 결합하여 새롭게 만든 것)

  • 대체 여부에 따른 분류
    본질 식별자 : 업무에 의해 만들어지는 식별자
    인조 식별자 : 인위적으로 만든 식별자

- 주식별자 도출 기준

  • 업무에서 자주 이용되는 속성으로 설정
  • 명칭, 내역 등 특정 이름으로 기술되는 것은 가능한 사용 지양
  • 여러 속성을 복합으로 구성하여 제작하지 않는다

- 식별자 관계

= 자식 엔터티의 주식별자로 부모 주식별자가 상속되는 경우

- 비식별자 관계

= 부모 엔터티로부터 상속받은 속성을 자식 엔터티의 주식별자로 사용하지 않고 일반 속성으로만 사용하는 경우

- 식별자와 비식별자 관계 비교

0개의 댓글