카테고리 없음

[SQLD] 1과목 | 데이터 모델링의 이해

wjdwwidz 2024. 11. 17. 17:35

과목 1. 데이터 모델링의 이해 (10문항)

  • 설계 도면을 가지고 있는 경우 : 엔티티, 속성, 인스턴스
  • 건물이 지어진 경우 : 테이블, 컬럼, 행

모델링의 개념

  • 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정
  • 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조직, 관리 방법을 명확하게 정의

모델링의 특징

  • 단순화
    • 불필요한 세부 사항 제거
    • 현실세계를 이해하기 쉬워짐
  • 추상화
    • 현실 세계를 간략하게 대략적으로 표현
    • 다양한 현상을 일정한 양식인 표기법에 따라 표현
  • 명확화
    • 대상에 대한 애매모호함을 최대한 제거하고, 정확하게 현상을 기술하는 과정
    • 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활히 함

데이터 모델링 3가지 관점

  1. 데이터 관점
    1. 데이터가 어떻게 저장되고, 접근되는지 정의하는 단계 (어떤 속성)
  2. 프로세스 관점
    1. 시스템이 어떤 작업을 수행하며 이러한 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
    2. 데이터가 시스템 내에서 어떻게 흐르고 변환되는지에 대한 확인
  3. 데이터와 프로세스 관점
    1. 데이터 관점과 프로세스 관점을 결합하여 시스템의 전반적인 동작을 이해하는 단계
    2. 특정 프로세스가 어떤 데이터를 사용하는지, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의

데이터 모델링 유의점

  1. 중복
  2. 비유연성 (데이터 정의를 프로세스와 분리)
  3. 비일관성
    • 데이터베이스 내의 정보과 모순되거나 상반된 내용을 갖는 상태
    • 데이터간 상호 연관 관계를 명확히 정의
    • 데이터 품질 관리 필요
    • 데이터의 중복이 없더라도 비일관성은 발생할 수 있음

데이터 모델링 3가지 요소

  • 대상 (Entity): 업무가 관리하고자 하는 대상 (객체)
    • 학생 table
  • 속성 (Attribute) : 대상들이 갖는 속성(하나의 특징으로 정의될 수 있는 것)
    • 이름,전화번호,주소
  • 관계 (Relationship) : 대상들 간의 관계
    • teacher 과의 관계

데이터 모델링의 3단계

  1. 개념적 모델링

    • 업무 중심적이고 포괄적(전사적) 인 수준의 모델링
    • 추상화 수준이 가장 높다
    • 업무를 분석 뒤 업무의 핵심 엔티티(Entity) 를 추출하는 단계
    • 도출된 핵심 엔티티(Entity) 들과의 관계들을 표현하기 위해 ERD작성
  2. 논리적 모델링

    • 개념적 모델링의 결과로 세부속성, 식별자, 관계 등을 표현하는 관계
    • 데이터 구조를 정의하기 때문에 비슷한 업무나 프로젝트에서 동일한 형태의 데이터 사용시 재사용 가능 (재사용 할 수 있을 정도로 설계)
    • 동일한 논리적 모델을 사용하는 경우 쿼리도 재사용 가능
    • 데이터 정규화 수행
    • 재사용성이 높은 논리적 모델은 유지보수가 용이해짐
  3. 물리적 모델링

  • 논리 모델링이 끝나면 이를 직접 물리적으로 생성하는 과정
  • 데이터베이스의 성능, 디스크 저장 구조, 하드웨어의 보안성, 가용성 등을 고려
  • 가장 구체적인 데이터 모델링
  • 추상화 수준은 가장 낮음(가장 구체적인 모델링 이므로)

스키마의 3단계 구조

  • 스키마 : 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합
  • 외부 , 개념, 내부스키마 로 분리
  • 사용자의 관점과 실제 설계된 물리적인 방식을 분리하기 위해 고안됨
  1. 외부 스키마
    • 사용자가 보는 관점에서 데이터 스키마를 정의
    • 사용자나 응용 프로그램이 필요한 데이터를 정의 (View == 사용자가 접근하는 대상)
  2. 개념 스키마
    • 사용자 관점의 데이터베이스 스키마를 통합하여 데이터베이스의 전체 논리적 구조를 정의
    • 전체 데이터베이스의 개체, 속성, 관계, 데이터 타입 등을 정의
  3. 내부 스키마
    • 데이터가 물리적으로 어떻게 저장되는지를 정의
    • 데이터의 저장 구조, 컬럼, 인덱스 등을 정의

* 3단계 스키마의 독립성

  • 독립성 : 물리적, 논리적 구조를 변경하더라도 사용자가 사용하는 응용 프로그램에 영향을 주지 않음
  • 논리적 독립성 : 논리적 데이터 구조가 변경되어도(개념 스키마 변경) 응용 프로그램에 영향을 주지 않는 특성
  • 물리적 구조가 변경되어도 (내부 스키마 변경) 개념/외부 스키마에 영향을 주지 않는 특성

데이터 모델의 표기법(ERD)

  • 엔터티와 엔터티 간의 관계를 시각적으로 표현한 다이어그램
  • 1976 피터첸 이 만든 표기법. 데이터 모델링 표준으로 사용

ERD 작성 절차(6 단계)

  1. 엔터티를 도출한 뒤 그린다
  2. 엔티티 배치
  3. 엔티티 간의 관계를 설정
  4. 관계명을 서술
  5. 관계의 참여도 기술
  6. 관계의 필수 여부 확인

엔터티의 개념

  • 현실세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄 (데이터를 표현하는 데 최소한의 단위)
  • 대상 들로 이루어진 집합
  • 인스턴스는 엔티티의 특정 속성 값들로 구성되며, 엔티티의 개념을 현실에서 구체적으로 나타낸 것 (예) 엔터티와 속성, 인스턴스 등의 관계)

ex)

  • 엔터티 : 학생
  • 속성 : 학번, 이름 , 학과 등
  • 식별자 : 학번 (고유한 학번으로 각 학생을 식별)
  • 인스턴스 : 특정 학생의 데이터
    • 학번 : 20203225
    • 이름 : 홍길동
    • 학과 : 컴퓨터 공학

엔티티의 특징

  1. 유일한 식별자(학번)에 의해 식별 가능
  2. 업무에서 필요하고 관리하고자 하는 정보
  3. 인스턴스들의 집합
    • ex) 영속적으로 존재하는 2개 이상의 인스턴스의 집합
    • 인스턴스가 한 개 밖에 없는 엔터티는 필요가 없다
  4. 엔터티는 반드시 속성을 가짐
    • 각 엔터티는 2개 이상의 속성을 가짐
    • 하나의 인스턴스는 각각의 속성들에 대한 1개의 속성 값만을 가짐
    • ex) 학생 엔터티에서 한 학생의 데이터(인스턴스)의 이름(속성) 정보에는 반드시 한 값만 저장됨
  5. 엔터티는 업무 프로세스에 의해 이용
    • 업무적으로 필요해 선정했지만 실제 사용되지 않으면 잘못 설계된 것
    • 모델링시 발견하기 어려운 경우 데이터 모델 검증이나 상관 모델링시 단위 프로세스 교차 점검으로 문제 도출
    • 누락된 프로세스의 경우 추후 해당 프로세스 추가
  6. 다른 엔터티와 최소 1개 이상의 관계 성립
    • 엔터티는 업무적 연관성을 갖고 다른 엔터티와 연관의 의미를 가짐
    • 관계가 없는 엔터티 도출은 부적절한 엔터티거나 적절한 관계를 찾지 못한 것

엔터티의 분류

유형과 무형에 따른 분류

  1. 유형 엔티티 : 실체가 있는 대상 (사원, 물품)
  2. 개념 엔티티 : 물리적인 형태 없음 (조직, 보험 상품)
  3. 사건 엔티티 : 업무를 수행에 따라 발생하는 엔티티 (주문, 청구, 미납)

발생 시점에 따른 분류

  1. 기본 엔터티

    • 그 업무에 원래 존재하는 정보

    • 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성

    • 타 엔터티의 부모 역할을 하는 엔터티

    • 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐

      ex) 사원, 부서, 고객, 상품 등

  2. 중심 엔터티

  • 기본엔터티로부터 발생되고 그 업무에서 중심적인 역할

  • 많은 데이터가 발생되고 다른 엔터티와의 관계를 통해 많은 행위 엔터티를 생성

    ex) 계약, 사고, 청구, 주문, 매출

  1. 행위 엔터티
  • 2개 이상의 부모엔터티로부터 발생
  • ex) 주문 (고객과 상품 엔터티가 둘 다 존재해야함 : 행위엔터티) : 사원변경이력, 이력 등
  • 자주 내용이 바뀌거나 데이터 양이 증가
  • 분석 초기 단계보다는 상세 설계 단계나 프로세스와 상관모델링을 진행하면서 도출

엔터티의 명명

  1. 현업에서 사용하는 용어 사용
  2. 가능하면 약자의 사용은 자제
  3. 단수 명사 사용 (학생들 x)
  4. 모든 엔터티에서 유일하게 이름 부여
  5. 엔터티 생성 의미대로 이름 부여

엔터티와 인스턴스 표기법

  • 엔터티 : 사각형으로 표현,
  • 속성은 : 표기법에 따라 조금씩 다름
    • I 표기법 :
    • baker 표기법 :
      • 네모박스 안에 엔터티 이름이 들어감
      • #주식별자 가 붙은 것이 pk

속성의 개념

  • 속성은 업무에서 필요로 하는 고유한 성질, 특징을 의미(관찰 대상) ⇒ 컬럼으로 표현할 수 있는 단위
  • 업무상 인스턴스로 관리하고자 하는 더이상 분리되지 않는 최소의 데이터 단위
  • 인스턴스의 구성 요소
    • ex) 학생 엔터티에 이름, 학번, 학과번호 등이 속성이 될 수 있음

인터티, 인스턴스, 속성, 속성값의 관계

  • 한 개의 엔터티는 2개 이상의 인스턴스의 집합이어야 한다. (하나의 테이블은 두 개 이상의 행을 가짐) :
  • 한 개의 엔터티는 2개 이상의 속성을 가짐 (하나의 테이블은 두 개 이상의 컬럼으로 구성)
  • 한 개의 속성은 1개의 속성값을 갖는다(각 컬럼의 값은 하나씩만 삽입 가능)
    ex) 과목 속성에 수학, 과학이 들어갈 수는 없다 : 다른 칸에는 들어갈 수 있지만 값에는 들어갈 수 없다
  • 속성은 엔터티에 속한 엔터티에 대한 자세하고 구체적인 정보를 나타냄 , 각 속성은 구체적인 값을 가짐

속성의 특징

  • 반드시 해당 업무에서 필요한 정보여야 한다

  • 정해진 주식별자(학번) 에 함수적 종속성을 가져야 한다. (학번에 의해 이름이 달라지니, 이름 속성은 함수적 종속성을 띈다)

  • 하나의 값만 하나의 속성에 표현될 수 있다.

  • 하나의 속성이 여러개 있는 경우는 엔터티를 분리해줄 필요가 있다.

    → 각 속성이 하나의 값을 갖고 있음을 의미 (속성의 원자성)

** 원자성이란 : 데이터모델에서 각 엔터티의 인스턴스가 해당 속성에 대해 단일하고 명확한 값을 가지는 것, 두 개 이상의 값을 가질 수 없다.

함수적 종속성

  • 한 속성이 다른 속성의 값에 종속적인 관계를 갖는 특징을 말함
  • 어떤 속성 A의 값에 의해 다른 속성 B 도 유일하게 결정된다면, B 는 A에 함수적으로 종속됐다 하고, 이를 수식으로 나타내면 A→B라고 표현한다.
  1. 완전 함수적 종속
    • 특정 컬럼이 기본키PK에 대해 완전히 종속될 때
    • PK를 구성하는 컬럼이 2개 이상일 경우 , PK 값 모두에 의한 종속관계를 나타낼 때 완전 함수 종속성 만족 (ex) 주문번호 + 제품번호) 에 의해 수량 컬럼의 값이 결정됨
  2. 부분 함수적 종속
    • 기본키 일부에 대해 종속될 때
    • ex) 수강기록 테이블에서 학생번호와 과목이 pk라고 가정할 때, 과목에 의해서도 교수가 결정되면 ‘강사’ 속성은 부분 함수적 종속 관계

속성의 분류

속성의 특성에 따른 분류

  1. 기본 속성 : 업무로부터 추출된 모든 속성 (상품명)
  2. 설계 속성 : 기본 속성 외에 업무를 규칙화하기 위해 새로 만들어지는 (상품코드, 지점코드)
  3. 파생 속성 : 다른 속성에 의해 만들어지는 속성 , 일반적으로 계산된 값들이 해당

엔터티 구성방식에 따른 분류

  1. PK
  2. FK
  3. 일반 속성

분해 여부에 따른 속성

  1. 단일 속성 : (ex) 이름)
  2. 여러개의 의미로 구성된 경우 (ex)주소 : 시,구, 동)
  3. 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 경우(ex) 상품 리스트)

속성의 명명규칙

  1. 해당 업무에서 사용하는 이름을 부여
  2. 서술식 속성명은 사용하지 않음
  3. 약어의 사용은 가급적 제한
  4. 전체 데이터 모델에서 유일한 명칭

도메인

각 속성이 가질 수 있는 값의 범위

데이터 타입과 크기, 제약사항을 지정

관계의 개념

엔터티간의 연관성을 나타낸 개념

관계를 정의할 때는 인스턴스(각 행 데이터) 간의 논리적 연관성을 파악하여 정의

엔터티를 어떻게 정의하느냐에 따라 변경되기도 함

관계의 종류

  1. 존재적 관계 : 부서 엔티티가 삭제되면 사원 엔터티의 존재에 영향을 미침
  2. 행위적 관계 : 고객 엔터티 행동에 의해 주문 엔터티가 발생
  • ERD에서는 구분하고 있지 않음

관계의 구성

  1. 관계명
  2. 차수 (카디널리티)
  3. 선택성

관계의 차수

  • 한 엔터티의 레코드가 다른 엔터티의 레코드와 어떻게 연결되는지를 나타내는 표현
  1. 1대1관계 : 사원은 반드시 소속 부서가 있어야 함
  2. 선택적 1대1 관계 : 사원은 하나의 소속 부서가 있어야 하나, 아직 발령 전이면 없을 수 있음
  3. 1 대 N 관계 : 엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계 ex) 고객은 여러개 계좌 소유 가능
  4. M대 N 관계 : 이 경우 조인 시 카테시안 곱이 발생하므로 두 엔티티를 연결하는 연결엔터티의 추가로 1대N관계로 해소할 필요가 있다. ex) 한학생이 여러 강의를 수강할 수 있고, 강의 기준으로도 여러 학생이 보유할 수 있다 ⇒ 수강신청이력 엔터티가 필요함

관계의 페어링

엔터티 안에 인스턴스(행)가 개별적으로 관계를 가지는 것

  • 관계란 페어링의 집합을 의미함

*** 관계와 차수, 페어링 차이

  • 학생과 강의 엔터티는 관계를 가짐
  • 한 학생은 여러 강의를 수강할 수 있고, 한 강의도 여러 학생에게 수강될 수 있으므로 M대 N관계이며, 이 때 차수는 M:N이 됨
  • 인스턴스의 관계를 보면 “학생 A가 강의B를 1학기에 수강했고, 성적은 A를 받았다” 와 같은 특정한 페어링이 형성
  • 이런식으로 관계의 차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식을 설명
  • 페어링은 두 엔터티 간의 특정 연결을 설명

식별자 개념

  • 하나의 엔터티에 구성된 여러 개의속성 중에 엔터티를 대표할 수 있는 속성을 나타냄
  • 하나의 유일한 식별자가 존재해야함
  • 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 key라고 표현

ex) 학생 엔터티의 주식별자는 학생번호 속성(논리모델링) ⇒ 학생 테이블의 기본키는 학생번호 컬럼 (물리모델링)

주식별자 특징

  1. 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
  2. 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성
  3. 불변성 : 주식별자가 한번 특정엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 (항상 고유값으로 존재해야 함)
  4. 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL은 허용 안됨