[SQLD 공부] 1과목_데이터 모델링의 이해
SQL/SQLD 공부

[SQLD 공부] 1과목_데이터 모델링의 이해

by Jongg 2024. 7. 7.
728x90

1. 데이터모델링의 특징
• 추상화(현실세계 -> 데이터베이스에서 표현)
• 단순화: 제한된 표기법
• 명확화: 애매모호함 제거
 
2. 데이터 모델링 단계
• 개념적 모델링: 핵심 엔터티 도출. 높은 추상화. ERD 작성
• 논리적 모델링: 어떤 데이터베이스 이용하는지 결정. 세부속성. 식별자. 관계 표현
정규화 완료. 재사용성 높음
• 물리적 모델링: 실제적으로 사용. 저장을 고려한 설계. 추상화 수준 가장 낮음. 
 
3. 데이터 모델링 3가지 관점
• 데이터 관점: 구조분석, 정적분석
• 프로세스 관점: 시나리오분석, 도메인분석, 동적분석
• 데이터 프로세스의 상관 관점: CRUD (Create, Read, Update, Delete)
(업무의 처리)
 
4. 데이터 모델링을 위한 ERD (Entity Relationship Diagram)
: 데이터베이스를 표현한 다이어그램 (관계도)
: 대표적인 표기법 - Chen, IE 방식, Barker, UML
 • ERD 작성 순서
  o 엔터티 도출
  o 엔터티 배치 
  o 엔터티 관계 설정
  o 관계명 기술
  o 관계 참여도 기술
  o 관계 필수 여부 기술
 
5. 3단계 구조 스키마
 • DB의 독립성을 위해 3단계 구조가 있음
 • 3단계: 사용자(외부), 설계자(내부), 개발자(개념)
 • 각 계층을뷰라고 함
 
6. 3단계 구조 특징
 • 외부스키마: 응용프로그램으로 접근
 • 개념스키마(일반적인 스키마): 관리자의 관점으로 규칙과 구조 표현
 • 내부스키마: 설계자 관점.. 어떻게 저장? 어떻게 관리? 하는 관점
 
7. 엔터티
 • 데이터의 집합
 • 저장되며 관리되는 데이터
 • 개념/사건/장소 등의 명사
 • 유형과 무형에 따른 분류
  o 유형: 사원, 제품, 교수 등
  o 개념: 제목, 강의, 부서, 금융상품 등
  o 사건: 구매, 판매, 영업, 수납 등
• 발생 시점에 따른 엔터티 분류
  o 기본 엔터티: 키엔터티. 독립적으로 생성 및 관리(고객, 부서, 판매제품…)
  o 중심 엔터티: 기본 엔터티부터 발행되는 행위 엔터티를 생성하는 중간 엔터티(계좌, 주문, 수납 등)
  o 행위 엔터티: 상위에 있는 2개 이상의 엔터티로부터 발생되는 엔터티(주문이력, 접속입력, 수납이력 등)
 
8. 속성 (Attribute)
 • 엔터티가 가지는 항목 [ex) 책(엔터티) - 제목, 저자…(속성)]
 • 속성은 분리되지 않음 (제목이 2개일 순 없음)
 • 업무에 필요한 데이터만
 • 가장 최소의 데이터 단위
 • 속성의 특징
  o 업무에서 관리되는 정보
  o 하나의 값만 가짐
  o 주식별자에 함수적으로 종속. 기본키에 따라 속성의 값도 변경
 • 특성에 따른 속성의 종류
  o 기본속성: 비즈니스 프로세스에서 도출된 본래의 속성 (책 제목, 저자 등 안 바뀌는 요소)
  o 설계속성: 모델링 과정에서 발생되는 속성 (바뀔수 있음.상품코드, 지점코드 등) 
  o 파생속성: 다른 속성에 의해 만들어지는 속성 (판매량, 평단가 등)
 
9. 관계의 개념
 • 엔터티 간 논리적인 연관성, 엔터티의 정의에 따라 영향을 받을 수 있음

 

728x90


10. 관계의 분류: 존재에 의한 관계(부서-사원), 행위에 의한 관계(고객-주문)
 
11. 관계의 표기법
 • 관계명
  o 관계에 엔터티(부서, 사원)가 참여하는 행태 정의
  o 각 두개의 명을 가진다 (부서: 포함한다 - 사원: 소속된다)
  o 능동적 또는 수동적으로 명명
  o 현재형 동사로 표현
 • 관계차수
  o 1:1, 1:M (부서, 사원), M:N (고객, 주문상품)
 • 관계선택사양: 필수관계, 선택관계
  o 엔터티가 관계에 있어 항상 참여하는지, 선택적으로 참여하는지
  o 선택관계는 IE 표기법에서는 동그라미로, Barker 표기법에서는 점선으로 표현
 
12. 식별자 개념
 • 엔터티를 대표하는 속성 [ex) 고객번호. 고객명은 중복될 수 있기 때문]
 • 하나의 엔터티는 반드시 하나의 유일한 식별자를 갖고 있어야 함
 
13. 식별자 특징
 • 엔터티 내 각 인스턴스를 유일하게 구분할 수 있는 구분자
 • 다른 엔터티와 관계를 연결하는 식별자 [ex. 테이블1: 고객번호 - 성명,  테이블2: 고객번호 - 대여금]
 • 주식별자 특징: 유일성, 최소성, 불변성, 존재성
  o 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
  o 존재성: NULL 값이면 안됨
 
14. 키의 종류 (ex. 학번, 과명, 주민번호, 번호, tel, 이름)
 • 기본키: 후보키 중에서 엔터티를 대표할 수 있는 키 (학번)
 • 후보키: 유일성과 최소성을 만족하는 키 (학번, 주민번호)
 • 슈퍼키: 유일성은 만족. 최소성은 만족하지 않음. (과명+전화번호 합친것 tag)
 • 대체키: 여러 개의 후보키 중에서 기본키를 선정하고 남은 키 (주민번호)
 • 외래키: 타 테이블의 기본키 핑드를 가리키는 것으로, 참조무결성을 확인하기 위해 사용되는 키
   (ex 학생 기본테이블_학번 - 학교 도서관테이블_학번)
 
15. 식별자 분류
 • 내부식별자: 엔터티 내부에서 스스로 생성되는 식별자
 • 외부식별자: 다른 엔터티와 관계로 인해 만들어진 식별자(학생- 도서관 책 대여)
 • 단일 식별자: 하나의 속성으로 구성
 • 복합 식별자: 다수의 속성으로 구성[ex. 과명+번호, 학생-대여]
 • 본질식별자: 비즈니스 프로세스에서 만들어지는 식별자
 • 인조식별자:  인위적으로 만들어진 식별자 (로그기록, 순번 등)
 
16. 주식별자 도출방법
 • 해당 업무 및 데이터에서 주로 사용되는 속성을 주식별자로 지정 (공공기관 - 주번, 학교 - 학번)
 • 이름, 길이가 일정하지 않은 내용 등은 지정하지 X
 • 복합키를 구성할 땐 너무많은 속성을 포함시키지 마 (최소한으로)
 
17. 식별자 관계와 비식별자 관계 [ex. 학생테이블 - 도서관 대여테이블]
 • 강한 관계: 부모 엔터티의 주식별자가 자식 엔터티의 주식별자로 상속되는 경우
  o 학생테이블 주식별자를 대여테이블의 주식별자로 사용
 • 약한 관계: 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로 상속되는 경우
  o 순번(1,2,3…) 등 인조식별자를 주식별자로 쓰고, 학생테이블의 주식별자를 일반 속성으로 사용 

728x90

댓글