SQLD - 데이터 모델링의 이해

세하·2025년 1월 18일

SQLD

목록 보기
1/3

데이터 모델링

1. 모델링 : 카테고리

  • 추상화 : 일정한 형식
  • 단순화 : 규약, 약속된 언어로 표현
  • 명확화 : 애매모호함 제거

2. 모델링 관점

  • 데이터 : what 무엇, 어떤 데이터, 데이터 간의 관계
  • 프로세스 : how 어떻게, 비즈니스가 어떻게 이루어지는가
  • 데이터&프로세스(상관 관점) : 데이터와 프로세스 사이 어떤 영향을 받는지

3. 데이터 모델링

  • 현실 세계의 비즈니스를 it시스템으로 구축하기 위한 데이터 관점 모델링.

* 유의점 (하지 말것)
1. 중복 : 데이터 중복 안되도록 ex) 주민번호 중복 X
2. 비유연성 : 데이터와 프로세스 사용을 분리
3. 비일관성 : 데이터와 데이터 간 명확한 정의 ex) '홍길동' 저장했는데 '홍길순'??

4. 데이터 모델링 진행

  • 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링
  1. 개념적 : 추상화 수준 높음. 카테고리. ERD 작성
  2. 논리적 : 기본키, 관계, 속성, 조인키, 외래키 등 정의
  3. 물리적 : 추상화 수준 낮음. DB저장

5. 3단계 스키마

  • 외부 스키마 : 사용자가 보는 DB.
  • 개념 스키마(논리 스키마) : 사용자 관점과 프로그램 관점을 통합.
  • 내부 스키마 : 데이터베이스 관점. DB 저장하는 형식

6. 데이터 독립성

  • 논리적 데이터 독립성 : 개념 스키마는 외부 스키마 영향 X
  • 물리적 데이터 독립성 : 내부 스키마는 개념&외부 스키마 영향 X

7. ERD 순서 (필수 암기)

  • 엔터티 도출 -> 배치 -> 관계 설정 -> 관계명 기술(포함하다, 포함되다 등) -> 참여도(관계차수) 기술 -> 관계 필수 여부 기술(IE 필수는 동그라미, 바커 필수는 실선)

엔터티 - 문제가 많다.

  • 저장하는 어떤 것
    -> 정의가 명확하지 않다.

1. 엔터티

  • 유일한 식별자
  • 인스턴스 2개이상, 하나의 인스턴스는 1개 속성
    엔터티 > 인스턴스 2개 이상 > 속성(속성값) 2개 이상 (필수)
    ex) 엔터티는 테이블, 인스턴스는 행, 속성은 컬럼, 속성값은 컬럼데이터 하나하나
  • 업무에 반드시 이용
  • 다른 엔터티와 최소 1개 이상의 관계 있어야함

2. 엔터티 분류

  • 유무
    • 유형 : 물리적으로 O (사원, 물품)
    • 개념 : 물리적으로 X (조직, 상품)
    • 사건 : 업무 수행으로 생김 (주문, 청구)
  • 발생시점
    • 기본 : 스스로 생성, 기본단위 (사원, 상품)
    • 중심 : 기본에서 파생 (계약, 사고)
    • 행위 : 2개 이상의 엔터티에서 파생 (주문목록, 사원변경이력)

3. 엔터티 명명규칙 (필수 암기)

  • 업무 담당자 사용용어 (별도의 용어 쓴다 X)
  • 약어 자제 (정확한 의미를 알 수 있게 쓴다 O)
  • 단수 명사
  • 유일한 이름
  • 의미에 맞게

인스턴스

  • 엔터티에 속한 객체
  • 행 단위 = ex) 한 사원의 정보 모음집
  • 1개 이상 속성

속성

  • 데이터 최소 단위
  • 속성 안 속성값 최소 1개 이상

1. 속성

  • 1개 엔터티는 2개 이상 인스턴스
  • 1개 엔터티는 2개 이상 속성
  • 1개 속성은 1개 속성값

2. 속성 표기법

  • IE 표기법 : 네모 상단칸이 식별자
  • Barker 표기법 : #식별자, *필수, °선택(null가능)

3. 속성 특징

  • 업무에 필요
  • 엔터티 주식별자에 함수적 종속성을 가짐
    • 주식별자를 알면 속성이 구분되는 가?
      된다 -> 함수적 종속 가졌다.
      안된다 -> X
  • 1개 속성, 1개 속성값
  • 1개 인스턴스는 속성마다 1개의 속성값(원자성)

4. 속성 분류

  • 기본 : 업무생성 ex) 원금, 예치기간
  • 설계 : 데이터 모델 설계 시 ex) 상품번호, 예금번호
  • 파생 : 계산, 통신, 변형 중 도출 ex) 합계, 평균
  • PK : 유일한 식별키
  • FK : 다른 엔터티의 주식별키

속성 명명규치 (필수)

  • 업무에 사용
  • 약어 자제
  • 서술식 자제 = 단순 명사
  • 유일한 이름

도메인 (보너스)

  • 속성값의 범위

관계

  • 엔터티와 엔터티, 엔터티와 인스턴스 사이의 관계

1. 관계

  • 존재 관계 ex) 부서와 사원
  • 행위 관계 ex) 고객과 주문

2. 관계표기법

  • 관계명 : 포함된다. 소속된다. 주문없는 고객 등
  • 관계차수 : 까치발 = 다수
    • 1:1
    • 1:M (1:N)
    • M:M (N:N)
  • 관계 선택사항 : 필수, 선택
    • IE : 동그라미 선택
    • 바커 : 실선 필수, 점선 선택

3. 관계 정의 시 주의사항

  • 2개 엔터티 사이 연관규칙 존재여부
  • 2개 엔터티 사이 정보조합 발생여부
  • 업무기술서, 장표에 관계 서술여부
  • 업무기술서, 장표에 관계가 동사(Verb)인지

식별자

  • 단 하나의 엔터티 구별

1. 식별자

  • 유일성 : 인스턴스를 주식별자에 의해 유일하게 구분
  • 최소성 : 주식별자를 구성하는 속성은 최소한의 수
  • 불변성 : 한번 정해진 주식별자는 변치 않음
  • 존재성 : not null

2. 식별자 종류

  • 대표성
    • 주 : 엔터티에서 인스턴스를 구분
    • 보조 : 인스턴스를 구분하나, 대표성이 없다.(다른 엔터티와 참조관계 X)
  • 생성 여부
    • 내부 : 엔터티에서 스스로 생성
    • 외부 : 다른 엔터티에서 받아온 식별자
  • 속성수
    • 단일 : 하나의 속성으로 구성된 식별자
    • 복합 : 하나 이상의 속성으로 구성된 식별자
  • 대체 여부
    • 본질 : 업무에서 생성
    • 인조 : 본질식별자 너무 복잡 -> 인위적 생성

3. 식별자 도출기준

  • 명칭, 장소, 이름은 주식별자 X
  • 주식별자가 복합식별자인 경우 속성은 적게 한다

4. 식별자 관계와 비식별자 관계 (필수)

  • 식별자 관계 : 부모엔터티 주식별자 = 자식엔터티 주식별자
  • 비식별자 관계 : 부모엔터티 주식별자 != 자식엔터티 주식별자

'부모 없이 자식엔터티가 생성될 있는 경우' -> 비식별자 관계
'부모 엔터티가 먼저 없어질 수 있는 경우' -> 비식별자 관계

0개의 댓글