해당 시리즈는 SQL 개발자(SQLD) 자격증 공부 내용을 정리합니다.
데이터 모델링
데이터 모델링이란 복잡한 현실 세계를 데이터베이스로 표현하기 위해서 추상화, 단순화, 명화학하는 과정을 의미한다.
데이터 모델링 특징
- 추상화: 현실세계를 간략하게 표현
- 단순화: 누구나 이해할 수 있게 표현
- 명확화: 애매한 의미 제거
데이터 모델링 단계
- 개념적 모델링: 전사관점, 업무측면에서 모델링, 추상화 진행
- 논리적 모델링: 식별자 정의, 관계, 속성 표현, 재사용성을 위한 정규화 진행
- 물리적 모델링: DBMS에 실제 데이터 생성
데이터 모델링 관점
- 데이터: 사용되는 데이터 구조분석, 정적분석
- 프로세스: 수행하는 작업 시나리오 분석, 동적 분석
- 데이터+프로세스: CRUD(Create, Read, Update, Delete) 분석
ERD(Entity Relationship Diagram)
엔터티 간의 관계 표기법
엔터티란?
업무에서 관리해야 하는 데이터 집합. 보통 고객의 비즈니스 프로세스에서 추출
ERD 작성 절차
- 엔터티 도출
- 엔터티 배치
- 엔터티 간의 관계 설정
- 엔터티 간의 관계명 서술
- 엔터티 간의 관계 참여도 표현
- 엔터티 간의 관계 필수 여부를 표현
3층 스키마
데이터 독립성을 위해 사용자, 설계자, 개발자가 바라보는 관점에 따라 데이터베이스를 기술하는 방법.
- 사용자: 외부스키마(업무살 관련 데이터 접근. 응용 프로그램 -> 데이터)
- 설계자: 개념스키마(전체 DB 내 구조 설계. 통합 DB 구조 설계)
- 개발자: 내부스키마(DB 물리적 저장구조. 레코드, 칼럼, 인덱스 정리)
데이터 독립성
- 논리적 독립성: 개념스키마 변경이 외부 스키마에 영향을 주지 않는 것
- 물리적 독립성: 내부스키마 변경이 개념 스키마에 영향을 주지 않는 것
데이터 독립의 장점
- 복잡도 축소
- 중복제거 가능
- 사용자 요구사항 변경에 따른 대응 가능
- 관리 및 유지보수 비용 축소
엔터티
고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출
엔터티 특징
특징 | 설명 |
---|---|
식별자 | 고유값 칼럼 필요 |
인스턴스 집합 | 인스턴스는 2개 이상 |
속성 | 반드시 속성 보유 |
관계 | 다른 엔터티와 최소 1개 이상의 관계 필요 |
업무 | 관리되어야 하는 집합 |
엔터티 종류
- 유형/무형
종류 | 설명 | 예시 |
---|---|---|
유형 엔터티 | 물리적 형태 존재. 업무에서 사용되는 엔터티 | 고객, 사원 |
개념 엔터티 | 물리적 형태 미존재 | 거래소 종목, 코스닥 종목 |
사건 엔터니 | 비즈니스 상에서 생성 | 주문, 취소, 수수료 청구 |
- 발생시점
종류 | 설명 | 예시 |
---|---|---|
기본 엔터티 | 키 엔터티. 독립적으로 생성됨 | 고객, 사원 |
중심 엔터티 | 기본과 행위 중간에 위치 | 주문, 로그인 |
행위 엔터티 | 2개 이상의 엔터티로부터 발생 | 주문이력, 로그인이력 |
속성(Attribute)
엔터티의 요건 중 하나.
속성의 특징
- 하나의 값만 보유
- 업무에서 관리되는 정보
- 기본키가 변경되면 속성의 값도 변경(주식별자에게 함수적으로 종속)
속성의 종류
- 분해여부
종류 | 설명 | 예시 |
---|---|---|
단일속성 | 하나의 의미로 구성된 것(1값:1의미) | 회원ID,이름 |
복합속성 | 여러개의 의미를 보유(1값:N의미) | 주소(시군동) |
다중값속성 | 여러개의 값, 의미를 보유(N값:N의미) | 상품리스트 |
- 특성
종류 | 설명 | 예시 |
---|---|---|
기본속성 | 비즈니스 프로세스에서 도출되는 본래의 속성 | 회원ID |
설계속성 | 데이터 모델링 관점에서 발생하는 속성 | 상품코드 |
파생속성 | 다른 속성에 의해 생성되는 속성 | 합계, 평균 |
도메인
속성이 가질 수 있는 값의 범위. 예로 성별이라는 속성이 가질 수 있는 도메인은 남성/여성이다.
관계(Relationship)
엔터티 간의 관련성을 의미
- 분류
종류 | 설명 | 예시 |
---|---|---|
존재관계 | 엔터티 간 상태를 표현 | 회원가입 -> 관리점 할당 -> 관리점에서 고객관리 |
행위관계 | 엔터티 간 행위에 대한 관련성 표현 | 계좌개설 -> 주문 발주 |
관계 차수(Cardinality)
두 엔터티 간에 관계에 참여하는 수를 의미.
관계 차수 종류
종류 | 설명 | 예시 |
---|---|---|
1대1 관계 | 완전 1대1 관계와 선택적 1대1 관계로 나눠진다. | 고객:고객등급 |
1대N 관계 | 엔터티 1행에 여러개의 값이 있는 관계 | 고객:계좌 |
M대N 관계 | 2개의 엔터티가 서로 여러개의 값을 가진 관계 | 학생:수업 |
M대N 관계의 조인은 카테시안 곱이 발생하기에 1대1 관계, 1대N 관계로 변경해야 한다. 예로 학생은 여러 개의 수업을 들을 수 있고, 수업 또한 여러 명의 학생이 신청할 수 있다. 이런 관계에서는 학생, 수업 2개의 엔터티를 생성하는 것보다 학생, 수강, 수업이라는 3개의 엔터티를 생성하는 것이 좋다.
필수적 관계는 O로 표현되고, 선택적 관계는 |로 표현된다.
식별 관계와 비식별 관계
종류 | 설명 |
---|---|
식별 관계 | - 독립적으로 존재할 수 있는 강한 개체 (다른 엔터티에 의존X) - 다른 엔터티와 관계를 가질 때 기본키를 공유 - 식별 관계로 표현 - 강한 개체의 값이 변경되면 식별관계에 있는 엔터티의 값도 변경된다. |
비식별 관계 | 강한 개체의 기본키를 일반 칼럼으로 관계를 받는 가지는 것 |
엔터티 식별자
엔터티를 대표할 수 있는 유일성을 만족하는 속성.
주식별자(기본키)
요건: 최소성, 대표성, 유일성, 불변성
키의 종류
종류 | 설명 |
---|---|
기본키 | 후보키 중 엔터티를 대표하는 키 |
후보키 | 유일성과 최소성을 만족하는 키 |
슈퍼키 | 유일성은 만족하지만 최소성을 만족하지 않는 키 |
대체키 | 여러 개의 후보키 중에서 기본키를 제외한 남은 키 |
외래키 | 키본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용 |
식별자의 종류
- 대표성 여부
종류 | 설명 |
---|---|
주식별자 | 엔터티를 대표하는 식별자, 참조관계로 연결 |
보조 식별자 | 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자 |
- 생성 여부
종류 | 설명 | 예시 |
---|---|---|
내부 식별자 | 엔터티 내부에서 스스로 생성하는 식별자 | 부서코드, 주문번호 등 |
외부 식별자 | 다른 엔터티와의 관계로 인해 생성되는 식별자 | 계좌엔터티의 회원 ID |
- 속성의 수
종류 | 설명 |
---|---|
단일 식별자 | 하나의 속성으로 구성 |
복합 식별자 | 두 개 이상의 속성으로 구성 |
- 대체 여부
종류 | 설명 |
---|---|
본질 식별자 | 비즈니스 프로세스에서 만들어지는 식별자 |
인조 식별자 | 인위적으로 만들어지는 식별자 |