[SQLD] SECTION 1. 데이터 모델링
Programming/SQL

[SQLD] SECTION 1. 데이터 모델링

[SQLD] SECTION 1. 데이터 모델링

[SQLD] SECTION 2. 데이터 모델과 성능

[SQLD] SECTION 3. SQL 기본

 

1. 데이터 모델링

  1) 모델링의 정의 : 복잡한 현실 세계를 일정한 표기법에 의해 표현하는 일

 

  2) 모델링의 특징

  • 추상화 (Abstraction)
  • 단순화 (Simplification)
  • 명확성 (Clarity)

 

  3) 모델링의 관점

관점 (View) 설명
데이터 관점 - 비즈니스 프로세스에서 사용되는 데이터를 의미한다.
- 구조 분석, 정적 분석
- What, Data
프로세스 관점 - 비즈니스 프로세스에서 수행하는 작업을 의미한다.
- 시나리오 분석, 도메인 분석, 동적 분석
- How, Process
데이터와 프로세스의
상관 관점
- 프로세스와 데이터 간의 관계를 의미한다.
- CRUD (Create, Read, Update, Delete) 분석
- Interaction

 

  4) 데이터 모델링 단계

데이터 모델링 내용
개념적 데이터 모델링 - 고객의 비즈니스 프로세스를 분석하고 전사적 관점에서 기업의 데이터를 모델링한다.- 추상화 수준이 가장 높은 수준의 모델링이다.- 계층형 데이터 모델, 네트워크 모델, 관계형 모델에 관계 없이 업무적 관점에서 모델링하며 기술적인 용어는 가급적 사용하지 않는다.- 엔터티(Entity)와 속성(Attribute)을 도출하고 개념적 ERD (Entity Relationship Diagram)를 작성한다.
논리적 데이터 모델링 - 특정 데이터베이스 모델에 종속한다.- 식별자를 정의하고 관계, 속성 등을 모두 표현한다.- 정규화를 수행해서 데이터 모델의 독립성을 확보하고 재사용성을 높인다.
물리적 데이터 모델링 - 데이터베이스를 실제 구축한다. 구축할 데이터베이스 관리 시스템에 테이블, 인덱스, 함수 등을 생성한다.
- 성능, 보안, 가용성 등을 고려하여 데이터베이스를 구축한다.

 

  5) 데이터 모델링을 위한 ERD (Entity Relationship Diagram)

  • 데이터 모델링의 표준. 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법이다.
  • ERD 작성 절차
    1. 엔터티를 도출하고 그린다.
    2. 엔터티를 배치한다.
    3. 엔터티 간의 관계를 설정한다.
    4. 관계명을 서술한다.
    5. 관계 참여도를 표현한다.
    6. 관계의 필수 여부를 표현한다.
  • 표기법

  6) 좋은 데이터 모델의 요소

  • 완전성 : 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 함.
  • 중복배제 : 동일한 사실은 반드시 한번만 기록
  • 업무규칙 : 업무규칙을 데이터 모델에 표현하여 모든 사용자가 공유할 수 있도록
  • 데이터 재사용 : 통합모델, 데이터와 어플리케이션 독립 → 데이터 재사용성 ↑
  • 의사소통 : 업무규칙들을 동일한 의미로 받아들이고 정보시스템을 활용할 수 있게
  • 통합성 : 동일한 데이터는 조직 전체에 한번만 기록되고 이를 다른 영역에서 참조, 활용

 

2. 데이터 독립성

  1) 데이터 독립성의 필요성

  2) 데이터 독립성의 효과

  • 각 View의 독립성을 유지하고 계층별 View에 영향을 주지 않고 변경이 가능하다.
  • 단계별 Schema에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공한다.

  3) 3층 스키마

  • 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들간의 관계를 정의한 ANSI 표준이다.
  • 외부 단계, 개념적 단계, 내부적 단계의 3단계 계층으로 분리해서 독립성을 확보하는 방법으로, 각 계층을 뷰 (View) 라고도 한다.

  4) 3층 스키마 구조

구조 설명
외부 스키마 - 사용자 관점, 업무 상 관련이 있는 데이터 접근이다. 
- 관련 데이터베이스의 뷰(View)를 표시한다.
- DB의 개개 사용자나 응용프로그래머가 접근하는 데이터베이스를 정의한다.
개념 스키마 - 설계자 관점, 사용자 전체 집단의 데이터베이스 구조이다.
- 전체 데이터베이스 내의 규칙과 구조를 표현한다.
- 통합 데이터베이스 구조이다.
내부 스키마 - 개발자 관점, 데이터베이스의 물리적 저장 구조이다.
- 데이터 저장 구조, 레코드 구조, 필드 정의, 인덱스 등을 의미한다.

 

  • 3층 스키마의 독립성
독립성 설명
논리적 독립성 - 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다.
- 사용자 특성에 맞는 변경이 가능하며 통합 구조의 변경이 가능하다.
물리적 독립성 - 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다.
- 저장장치의 구조 변경은 응용프로그램과 개념 스키마에 영향이 없다.

 

  5) 사상 (Mapping)

  • 영어로 'Mapping'은 우리말로 '사상'이라고 번역되는데 이것은 상호 독립적인 개념을 연결시켜주는 다리를 뜻한다.
  • 데이터 독립성에는 크게 2가지의 사상이 도출된다.

 

3. 데이터 모델링의 중요한 세 가지 개념

  1) 데이터 모델링의 세 가지 요소 데이터 모델링을 구성하는 중요한 개념 세 가지

  • 업무가 관여하는 어떤 것 (Things)
  • 업무가 관여하는 어떤 것 간의 관계 (Relationships)
  • 어떤 것이 가지는 성격 (Attributes)

  2) 단수와 집합 (복수)의 명명

 

4. 엔터티 (Entity)

  1) 개념

  • 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것 (thing)
  • 엔터티는 개넘, 사건, 장소 등의 명사이다.

  2) 특징 (ex. 엔터티 : 고객, 계좌)

 

엔터티 특징 설명
식별자 - 엔터티는 유일한 식별자가 있어야 한다.
- ex. 회원ID
인스턴스 집합 - 2개 이상의 인스턴스가 있어야 한다.
- 즉, 고객 정보는 2명 이상 있어야 한다.
속성 - 엔터티는 반드시 속성을 가지고 있다.
- ex. 고객 엔터티에 회원ID, 패스워드, 이름, 주소, 전화번호
관계 - 엔터티는 다른 엔터티와 최소한 한 개 이상 관계가 있어야 한다.
- ex. 고객은 계좌를 개설한다.
업무 - 엔터티는 업무에서 관리되어야 하는 집합이다.
- ex. 고객, 계좌

 

  3) 종류

 

  • 유형과 무형에 따른 엔터티 종류
종류 설명
유형엔터티 - 업무에서 도출되며 지속적으로 사용되는 엔터티이다.
- ex. 고객, 강사, 사원 등
개념엔터티 - 물리적 형태가 없으며 개념적으로 사용되는 엔터티이다
- ex. 거래소 종목, 코스닥 종목, 생명보험 상품
사건엔터티 - 비즈니스 프로세스를 실행하면서 생성되는 엔터티이다.
- ex. 주문, 체결, 취소주문, 수수료 청구 등

 

  • 발생 시점에 따른 엔터티 종류
종류 설명
기본 엔터티 - 키 엔터티라고도 한다.
- 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티이다.
- ex. 고객, 상품, 부서 등
중심 엔터티 - 기본 엔터티와 행위 엔터티의 중간에 있는 것이다.
- 즉, 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것이다.
- ex. 계좌, 주문, 취소, 체결 등
행위 엔터티 - 2개 이상의 엔터티로부터 발생된다.
- ex. 주문 이력, 체결 이력 등

 

5. 속성 (Attribute)

  1) 속성

  • 속성은 엔터티가 가지는 항목이다.
  • 인스턴스의 구성요소이고 의미적으로 더 이상 분리되지 않는 단위이다.

  2) 특징

  • 속성은 업무에서 관리되는 정보이다.
  • 속성은 하나의 값만 가진다.
  • 주 식별자에게 함수적으로 종속된다. 즉, 기본키가 변경되면 속성의 값도 변경된다.

 

  • (기출) 속성명을 부여할 때 서술식 속성명을 사용할 수 있다. (X)
  • (기출) 하나의 속성은 여러 개의 속성 값을 가져야 한다. (X)
  • (기출) 한 개의 엔터티에는 한 개의 속성을 가질 수 있다. (X)

 

 

  3) 속성의 종류

  • 분해 여부에 따른 속성의 종류
종류 설명
단일 속성 - 하나의 의미로 구성된 것으로 회원ID, 이름 등이다.
복합 속성 - 여러 세부 속성들로 구성
- ex. 주소 = 시 + 구 + 동 + 번지
다중값 속성 - 속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있다.
- 다중값 속성은 엔터티로 분해된다.

 

  • 특성에 따른 속성의 종류
종류 설명
기본 속성 - 비즈니스 프로세스에서 도출되는 본래의 속성이다.
- ex. 회원ID, 이름, 계좌번호, 주문 일자 등
설계 속성 - 데이터 모델링 과정에서 발생되는 속성이다.
- 유일한 값을 부여한다.
- ex. 상품 코드, 지점 코드 등
파생 속성 - 다른 속성에 의해서 만들어지는 속성이다.
- ex. 합계, 평균 등

 

  • cf. 도메인
    • 도메인은 속성이 가질 수 있는 값의 범위이다.
    • 속성명과 도메인명이 반드시 동일할 필요는 없다.
    • 릴레이션에서 모든 속성들의 도메인은 원자적(Atomic)이어야 한다.
      (원자적 도메인 :도메인의 원소가 더 이상 나누어질 수 없는 단일체일 때를 의미한다.)
    • ex. 성별이라는 속성의 도메인은 남자와 여자이다

 

6. 관계 (Relationship)

  1) 관계

  • 관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다.

  2) 종류

  • 존재 관계 : 엔터티 간의 상태. ex. 포함한다, 소속된다.
  • 행위 관계 : 엔터티 간에 어떤 행위가 있는 것

  3) 관계 차수 (Cardinality)

  • 두 개의 엔터티 간에 관계에 참여하는 수를 의미한다. ex. 1:1, 1:M, M:N
  • 관계 선택사양 : 필수적 관계, 선택적 관계

 

7. 식별자

  1) 식별자

  • 엔터티를 대표할 수 있는 유일성을 만족하는 속성이다.
  • ex. 회원ID, 계좌번호, 주민등록번호, 외국인등록번호, 여권번호 등

  2) 주식별자 (기본키, Primary key)

  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
  • 대표성 : 주식별자는 엔터티를 대표할 수 있어야 함.
  • 유일성 : 주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분됨
  • 불변성 : 주 식별자는 자주 변경되지 않아야 한다.
  • 존재성 : Null일 수 없다.

 

  • (기출) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다 (O)
  • (기출) 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다 (O)
  • (기출) 지정된 주식별자의 값은 변경될 수도 있다. (O)

 

 

  • 키의 종류
데이터베이스 키 설명
기본키 (Primary key) - 후보키 중에서 엔터티를 대표할 수 있는 키이다.
후보키 (Candidate key) - 후보키는 유일성과 최소성을 만족하는 키이다.
슈퍼키 (Super key) - 슈퍼키는 유일성을 만족하지만 최소성을 만족하지 않는 키이다.
대체키 (Alternate key) - 대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키이다.
외래키 (Foreign key) - 하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결성 (Referential Integrity)을 확인하기 위해서 사용되는 키이다.
- 즉, 허용된 데이터 값만 데이터베이스 저장하기 위해서 사용된다.

 

  3) 식별자의 종류

 

종류 설명
대표성 여부 주식별자 - 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자
- 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자
- 다른 엔터티와 참조 관계로 연결될 수 있다.
보조 식별자 - 유일성과 최소성은 만족하지만 대표성은 만족하지 못하는 식별자이다.
- 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함.
스스로
생성 여부
내부 식별자 - 엔터티 내부에서 스스로 생성되는 식별자
- ex. 부서코드, 주문번호, 종목코드 등
외부 식별자 - 다른 엔터티와의 관계로 인하여 만들어지는 식별자
- ex. 계좌 엔터티에 회원 ID
속성의 수 단일 식별자 - 하나의 속성으로 구성
- ex. 고객 엔터티에 회원 ID
복합 식별자 - 두개 이상의 속성으로 구성
대체 여부 본질 식별자 - 업무로부터 만들어지는 식별자
인조 식별자 - 인위적으로 만들어지는 식별자 (본질 식별자가 복잡한 구성)

 

  4) 식별 관계와 비식별 관계

  • 식별 관계 : 자식 엔터티의 주식별자로 부모엔터티의 주식별자가 상속
  • 비식별자 관계 : 부모엔터티의 주식별자가 자식 엔터티의 일반 속성으로 상속
    • 부모엔터티 없는 자식엔터티가 생성될 수 있는 경우
    • 엔터티 별로 생명주기를 다르게 돤리할 경우 → 부모엔터티가 자식엔터티만 남겨두고 소멸
    • 별도의 관계를 가지는 엔터티들을 하나로 통합한 경우
  • 식별자 관계로만 설명할 경우 문제점 : 주식별자의 속성 수가 많아지는 엔터티 생김
  • 비식별자관계로만 설정할 경우 문제점 : SQL 문에 많은 조인이 걸리게 되고 그에 따라 복잡성이 증가하고 성능이 저하