본문 바로가기
Develope_MySQL

[SQLD] SQL D 정리 - 데이터 모델링의 이해 -1

by 스타트업_디벨로퍼 2021. 2. 8.

001 데이터 모델링의 이해

1 데이터 모델링

2 데이터 모델링의 특징

추상화단순화/명확하 되야한다.

추상화 : 현실 세계를 간략하게 표현한다.

단순화 : 누가나 쉽게 이해할 수 있도록 표현한다.

명확성 : 의미가 해석되어야 하고 한 가지 의미를 가져야 한다.

3 데이터 모델링 단계

(1) 개념적 모델링

  • 업무 전체 대해서 데이터 모델링 수행 / 중요한 부분을 위주로 모델링
  • 기술적인 용어 쓰지 않는다. / 엔티티와 속성을 도출하고 개념적 ERD를 작성한다.

(2) 논리적 모델링

  • 개념적 모델링을 논리적 모델링으로 변환
  • 필요한 모든 릴레이션을 정의
  • 정규화를 수행해서 데이터 모델의 독립성을 확보함

(3)물리적 모델링

  • 데이터에비이스를 실제 구축(테이블, 인덱스, 함수 등을 생성), 성능, 보안, 가용성을 고려해서 구축
  • 데이터 모델링 단계
  1. 개념적 모델링
  • 전사적 관점에서 모델링,, 추상화 수준이 가장 높은 수준의 모델링 / 업무 측면에서 모델링
  1. 논리적 모델링
  • 특정 데이터베이스 모델에 종속, 관계 속성등을 모두 표현함. / 정규화를 통해서 재사용성을 높인다.
  1. 물리적 모델링
  • 구축할 데이터베잇으 관리 시스템에 테이블, 인덱스 등을 생성하는 단계

  • 성능, 보안, 가용성 등을 고려하여 데이터베이스를 구축함.

  • 데이터 모델링 관점

  1. 데이터
  • 비즈니스 프로세스에서 사용되는 데이터 / 구조 분석 & 정적 분석
  1. 프로세스
  • 시나리오 분석, 도메인 분석, 동적 분석
  1. 데이터 와 프로세스
  • 프로세스와 데이터 간의 관계, CRUD(Create, Read, Update, Delete) 분석

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

  • 엔티티와 엔티티 간의 관계를 정의하는 모델링 방법이다.

(1) ERD 작성 절차

  1. 엔티티를 도출하고 그린다.
  2. 엔티티를 배치한다. (엔티티를 도출한 후 엔티티 배치, 중요한 데이터를 왼쪽 상단에 배치)
  3. 엔티티 간의 관계를 설정한다.
  4. 관계명을 서술한다. (엔티티 간의 어떤 행위나 존재가 있는지 표현)
  5. 관계 참여도를 표현한다 (엔티티간의 참여하는 관계수)
  6. 관계의 필수 여부를 표현한다. (필수는 반드시 존재해야 하는 것, 필수는 작대기 표시)

(4) ERD 작성 시 고려사항

  • 중요한 엔티티를 가급적 왼쪽 상단에 배치,
  • 이해가 쉽고 복잡하지 않아야 함

5 데이터 모델링 고려사항

(1) 데이터 모델의 독립성

  • 독립성이 확보된 모델은 고객의 업무 변화에 능동적으로 대응
  • 독립성을 확보하기 위해서는 중복된 데이터를 제거해야 한다.
  • 데이터 중복을 제거하는 방법이 바로 정규화이다.

(2) 고객 요구사항의 표현

  • 고객과 데이터 모델러 간에 의사소통을 할 수 있어야 하므로, 고객의 요구사항을 간결하고 명확하게 표현해야 한다.

(3) 데이터 품질 확보

  • 데이터베이스 구축 시에 데이터 표준을 정의하고 표준 준수율을 관리해야 한다.
  • 데이터 표준을 확보해야 데이터 품질을 향상시킬 수 있다.

002 3층 스키마

1 3층 스키마

  • 사용자,설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들간의 관게를 ANSI 표준이다.

  • 3층 스키마는 데이터 베이스의 독립성을 확보하기 위한 방법이다.

  • 데이터 복잡도 감소, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감 등의 장점 갖음

  • 3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 뷰라고 한다.

  • 3층 스키마의 독립성

  1. 논리적 독립성 : 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다.
  2. 물리적 독립성 : 내부 스키마가 변경되더라도 개념스키마가 영향을 받지 않는 것이다.

2 3층 스키마 구조

외부 스키마

개념 스키마

내부 스키마

  • 3층 스키마의 구조
  1. 외부 스키마
  • 사용자 관점, 업무상 관련이 있는 데이터 접근이다.

  • 관련 데이터베이스의 뷰를 표시한다.

  • 응용 프로그램이 접근하는 데이터베이스를 정의한다.

  1. 개념 스키마
  • 설계자 관점, 사용자 전체 집단의 데이터베이스 구조이다.

  • 전체 데이터베이스 내의 규칙과 구조를 표현한다.

  • 통합 데이터베이스 구조이다.

  1. 내부 스키마
  • 개발자 관점, 데이터베이스의 물리적 저장 구조이다.

  • 데이터 저장구조, 레코드 구조, 필드 정의, 인덱스 등을 의미한다.

003 엔티티(Entity)

1 엔티티(Entity)

  • 엔티티는 업무에서 관리해야 하는 데이터의 집합을 의미, 저장되고 관리되어야 하는 데이터
  • 엔티티는 개념, 사건, 장소 등의 명사

2 엔티티 도출

  • 엔티티는 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출해야 함.

3 엔티티 특징

  • 식별자 : 엔티티는 유일한 식별자가 있어야 한다.
  • 인스턴스 집합 : 2개 이상의 인스턴스가 있어야 한다.
  • 속성 : 엔티티는 반드시 속성을 가지고 있다.
  • 관계 : 엔티티는 다른 엔티티와 최소한 한 개 이상 관계가 있어야 한다.
  • 업무 : 엔티티는 업무에서 관리되어야 하는 집합이다.

릴레이션과 테이블, 인스턴스

  • 릴레이션과 테이블은 같은 의미라고 해석하면 된다. 릴레이션에 기본키 및 제약조건을 설정하면 테이블이 된다.

  • 인스턴스는 릴레이션이 가질 수 있는 값을 의미함. (행의 수)

4 엔티티 종류

  • 엔티티의 종류는 유형과 무형에 따른 종류 엔티티가 발생하는 시점에 따른 종류로 나누어진다.

  • 엔티티를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부이다.

  • 유형과 무형에 따른 엔티티 종류

  1. 유형 엔티티 : 지속적으로 사용되는 엔티티
  2. 개념 엔티티 : 물리적형태가 없음. 개념적으로 사용되는 엔티티)
  3. 사건 엔티티 : 비즈니스 프로세스를 실행하면서 생성되는 엔티티
  • 발생 시점에 따른 엔티티 종류
  1. 기본 엔티티 : 키 엔티티 / 독립적으로 생성되는 엔티티 (고객, 상품, 부서)
  2. 중심 엔티티 : 기본 엔티티와 행위 엔티티 간의 중간에 있는 것./ 기본 엔티티로부터 발생되고, 해우이 엔티티를 생성하는 것(게좌, 주문, 취소, 체결)
  3. 행위 엔티티 : 2개 이상의 엔티티로부터 발생 ( 주문 이력, 체결 이력)

004 속성(Attribute)

1 속성(Attribute)

  • 속성이라는 것은 업무에서 필요한 정보인 엔티티가 가지는 항목
  • 속성은 더 이상 분리되지 않는 단위, 업무에 필요한 데이터를 저장함.
  • 인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다.

2 속성의 특징과 종류

(1) 속성의 특징

  • 속성은 업무에서 관리되는 정보이다.
  • 속성은 하나의 값만 가진다.
  • 주식별자에게 함수적으로 종속.

(2) 속성의 종류

  • 분해 여부에 따른 속성의 종류
  1. 단일 속성 : 하나의 의미로 구성된 것
  2. 복합 속성 : 여러 개의 의미가 있느 ㄴ것
  3. 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 것 (상품 리스트)
  • 특성에 따른 속성의 종류
  1. 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성
  2. 설계 속성 : 데이터 모델링 과정에서 발생되는 속성 / 유일 한 값을 부여
  3. 파생 속성 : 다른 속성에 의해서 만들어지는 속성

005 관계(Relationship)

1 관계(Relationship)

  • 엔티티 간의 관련성을 의미, 존재 관계와 행위 관계로 분류
  • 존재 관계 : 두 개의 엔티티가 존 재 여부의 관계가 있는 것
  • 행위 관계 : 두 개의 엔티티가 어떤 행위에 의한 관련성이 있는 것

2 관계의 종류

(1) 존재 관계

  • 엔티티 간의 상태를 의미함.

(2) 행위 관계

  • 엔티티 간에 어떤 행위가 있는 것으로 계좌를 사용해서 주문을 발주하는 관계가 만들어지는 것과 유사함

3 관계 차수(Cardinality)

(1) 관계 차수 (Relation Cardinality)

  • 관계 차수는 두 개의 엔티티 간에 관계에 참여하는 수를 의미함.
  • 필수는 작대기, 선택은 동그라미, N 관계는 삼지창

(2) 관계 차수의 종류

  1. 1대 1 관계 : 완전 1대1 관계 , 선택적 1대 1 관계
  2. 1대 N 관계 : 엔티티에 행이 하나 있을 떄 다른 에티티티의 값이 여러 관계 있는 경우
  3. M대 N 관계 : 두개의 엔티티가 서로 여러개의 관계 (과목과 학생간의 관계) → 1대 N , N대 1로 해소해야 함

4 식별 관계와 비식별 관계

(1) 식별 관계(Identification Relationship)

  • 강한 개체는 어떤 다른 엔티티에게 의존하지 않고 독립적으로 존재 / 다른 엔티티와의 관계를 가질 때 다른 엔티티에게 기본키를 공유 / 식별 관계로 표현됨
  • 고객 엔티티의 기본 키인 회원ID를 계좌 엔티티의 기본키의 하나로 공유하는 것
  • 강한 개체의 기본키 값이 변경되면 식별 관계에 있는 엔티티의 값도 변경

(2) 비식별 관계(Non-Identification Relationship)

  • 비식별 관계는 강한 개체의 기본키를 다른 엔티티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것이다.( 이경우 점선으로 넣는다.)

006 엔티티 식별자(Entity Identifier)

  • 식별자라는 것은 엔티티를 대표할 수 있는 유일성을 ㅁ나족한느 속성

1 주식별자(기본키, Primary Key)

  • 최소성 / 대표성/ 유일성 / 불변성

  • 키의 종류

  1. 기본키 : 엔티티를 대표할 수 있는 키
  2. 후보키 : 유일성과 최소성을 만족하는 키
  3. 슈퍼키 : 유일성은 만족하지만 최소성을 만족하지 않는 키
  4. 대체키 : 여러 개의 후보 키 중에서 기본키를 선정하고 남은 키
  5. 외래키 : 다수의 다른 테이블의 기본 키 필드를 가리키는 것 - 참조 무결성을 확인하기 위해서 사용되는 키

2 식별자의 종류

  • 식별자는 대표성, 생성 여부, 속성의 수, 대체 여부로 분류된다.

(1) 식별자의 대표성

  • 주식별자는 엔티티를 대표할 수 있는 식별자.
  • 대표성 여부에 따른 식별자의 종류
  1. 주식별자 : 엔티티를 대표하는 식별자, 다른 엔티티와 참조 관계로 연결될 수 있음
  2. 보조 식별자 : 대표성ㅇ르 만족하지 못하는 식별자

(2) 생성 여부

  • 생성 여부에 따른 식별자의 종류
  1. 내부 식별자 : 내부 식별자는 엔티티 내부에서 스스로 생성되는 식별자
  2. 외부 식별자 : 다른 엔티티와의 관계로 인하여 만들어지는 식별자

(3) 속성의 수

  • 속성의 수에 따른 식별자의 종류
  1. 단일 식별자 : 하나의 속성으로 구성됨.
  2. 복합 식별자 : 두 개 이상의 속성으로 구성됨

(4) 대체 여부

  • 대체 여부에 따른 식별자의 종류
  1. 본질 식별자 : 비즈니스 프로세스에서 만들어지는 식별자
  2. 인조 식별자 : 인위적으로 만들어지는 식별자
반응형

'Develope_MySQL' 카테고리의 다른 글

[SQLD] SQL D 정리 - 데이터 모델링의 이해 -2  (0) 2021.02.08