sqld-1
1과목 Section 01 Data Modeling
데이터 모델링의 특징
- 추상화 : 공통적인 특징을 찾고 간략하게 표현
- 단순화 : 누구나 이해할 수 있게 표현
- 명확 : 모호하지 않고 명확하게 해석되어야 한다.→ 한 가지 의미를 지녀야 한다.
데이터 모델링의 단계
- 개념적 모델링
- 추상화 수준이 가장 높은 업무 측면에서의 모델링
- 논리적 모델링
- 식별자 정의, 관계, 속성 등을 표현
- 정규화를 통해 재사용성 높임
- 물리적 모델링
- 테이블, 인덱스 등을 생성
- 성능, 보안, 가용성 등을 고려하여 데이터베이스 구축
데이터모델링 관점
- 데이터 : 구조 분석, 정적 분석
- 프로세스 : 시나리오 분석, 도메인 분석, 동적 분석
- 데이터와 프로세스 : CRUD 분석
ERD 작성 절차
- 엔터티 도출하고 그린다
- 엔터티 배치한다
- 엔터티 간의 관계를 설정한다
- 관계명을 서술한다.
- 관계 참여도를 표현한다.
- 관계의 필수 여부를 표현한다.
데이터 모델링 고려사항
- 데이터 모델의 독립성
- 중복된 데이터 제거 by 정규화
- 고객 요구사항 표현
- 데이터 품질 확보
- 데이터 표준을 정의하고 표준 준수율 관리
3층 스키마(3-Level Schema) = 3 view layers
- 데이터베이스의 독립성 확보 → 데이터 복잡도 감소, 데이터 중복 제거, 사용자 요구사항 변경 대응력 향상, 관리 및 유지보수 비용 절감 등
- 독립성
- 논리적 독립성 : 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다.
- 물리적 독립성 : 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다.
- 3층 스키마 구조
- 외부 스키마 : 사용자 관점, 업무상 관련, 응용 프로그램이 접근하는 데이터베이스를 정의한다.
- 개념 스키마 : 설계자 관점, 통합 데이터베이스 구조이다.
- 내부 스키마 : 개발자 관점, 물리적 저장구조, 레코드 구조, 필드 정의, 인덱스 등을 의미
엔터디
업무에서 관리해야 하는 데이터 집합
엔터티의 특징
- 식별자 : 엔터티는 유일한 식별자가 있어야한다
- 인스턴스 집합 : 2개 시앙의 인스턴스가 있어야 한다.
- 속성 : 엔터티는 반드시 속성을 가지고 있다.
- 관계 : 엔터티느느 다른 엔터니와 최소한 한 개 이상의 관계가 있어야 한다.
- 업무 : 엔터티는 업무에서 관리되어야 하는 집합이다.
릴레이션 : 릴레이션에 기본키 및 제약조건을 설정하면 테이블
인스턴스는 렐레이션이 가질 수 있는 값을 의미 → 행의 수
엔터티 종류
유형 무형에 따른 엔터티 종류
- 유형 엔터티 : 업무에서 도출, 지속적으로 사용
- 개념 엔터티 : 물리적 형태가 없는 엔터티
- 사건 엔터티 : 비즈니스 프로세스를 실행하며 생성되는 엔터티
발생 시점에 따른 분류
- 기본 엔터티 : 키 엔터티, 독립적으로 생성
- 중심 엔터티 : 기본 엔터티와 행위 엔터티 중간
- 행위 엔터티 : 2개 이상의 엔터티로부터 발생
속성
더 이상 분리되지 않는 단위
인스턴스의 구성요소, 의미적으로 더 이상 분해되지 않음
특징
- 하나의 값만 가진다
- 주식별자에 함수적으로 종속 → 족 키가 변경되면 속성의 값도 변경된다
분해 여부에 따른 속성의 종류
- 단일 속성 : 하나의 의미로 구성
- 복합 속성 : 여러 개의 의미가 있는 것으로 대표적으로 주소가 있다.
- 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 것 ex) 상품리스트 → 엔터티로 분해 가능
특성에 따른 속성의 종류
- 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성
- 설계 속성 : 데이터 모델링 과정에서 발생되는 속성, 유일한 값 부여
- 파생 속성 : 다른 속성에 의해서 만들어지는 속성
도메인은 속성이 가질 수 있는 값의 범위
관계의 종류
- 존재 관계
- 엔터티간의 상태
- 행위 관계
- 엔터티 간에 어떤 행위가 있는 것
관계 차수
- 최대 기수성
- 일대일
- 완전 일대일, 선택적 일대일
- 일대다
- 다대다
- 조인 시 카테시안 곱이 발생하므로 일대다 관계로 분해하여 해소해야함
- 일대일
- 최소 기수성
- 필수적 관계 : 반드시 하나가 있어야 함
- 선택적 관계 : 없을 수도 있는 관계
식별 비식별
식별관계란 고객 엔터티의 기본키인 회원Id를 계좌 엔터티의 기본키의 하나로 공유하는 것 강한 개체의 기본키값이 변경되면 식별 관계에 있는 엔터티의 값도 변경된다
비식별 관계는 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 컬럼으로 관계를 가지는 것
강한 개체 : 독립적인 개체
약한 개체 : 다른 개체에 그 존재가 달려 있는 개체
주식별자
- 최소성
- 대표성
- 유일성 : 엔터티의 인스턴스를 유일하게 식별
- 불변성 : 자주 변경되지 않아야 한다
- 존재성 : pk가 지정되면 잔드시 데이터값이 존재해야한다
키의 종류
기본키 : 엔터티를 대표
후보키 : 유일성과 최소성 만족
슈퍼키 : 유일성 만족, 최소성 불만족
대체키 : 후보키 중 기본키를 제외한 것
외래키 : 다른 테이블의 기본키, 참조 무결성 확인을 위해 사용
대표성 여부
- 주식별자 : 엔터티 대표, 참조 관계 연결 가능
- 보조 식별자 : 대표성 만족 못함
생성 여부
- 내부 식별자 : 엔터티 내부에서 스스로 생성
- 외부 식별자 : 다른 엔터티와의 관계로 생성
속성의 수에 따른 종류
- 단일 식별자 : 하나의 속성
- 복합 식별자 : 두 개 이상의 속성
대체 여부
- 본질 식별자 : 비즈니스 프로세스에서 생성
- 인조 식별자 : 인위적으로 생성 ex)일련번호 → 순서번호(Sequence Number)를 사용해서 식별자를 만드는 것
데이터 모델과 성능
정규화
데이터 일관성, 최소 중복, 유연성을 위해 데이터를 분해
데이터가 일관성이 없고 그러면 이상현상(Anomaly)
정규화 절차
- 제1정규화 : 속성의 원자송 확보, 기본키를 설정
- 제2정규화 : 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해)한다
- 제3정규화 : 기본키를 제외한 칼럼 간에 종속성을 제거한다. = 이행 함수 종속성을 제거한다.
- BCNF : 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
- 제4정규화 : 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 속성을 제거한다.
- 제5정규화 : 조인에 의해서 종속성이 발생하는 경우 분해한다
정규화의 문제
- 조인을 유발 → CPU와 메모리를 많이 사용
- 중첩된 루프(Nested Loop)
- 조인은 이중 for문을 유발한다. (보통 인덱스나 옵티마이저로 이런 비효율을 막긴함)
- 반정규화로 위와 같은 문제를 해결한다.
반정규화를 수행하는 이유
- 지나친 정규화 충실성으로 수행 속도가 느려진 경우
- 다량의 범위를 자주 처리하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우
반정규화 절차
- 대상 조사 및 검토 : 반정규화 대상 조사
- 다른 방법 검토 : 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램, 파티션 등 검토
- 클러스터링 : 클러스터링 인덱스란 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법 → 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.
- 반정규화 수행
반정규화 기법
- 계산된 칼럼 추가
- 테이블 수직 분할 → 칼럼을 분할하여 새로운 테이블 생성
- 테이블 수평 분할 → 값을 기준으로 테이블 분할(동일 속성이 됨)
파티션 기법 : 논리적으로 하나의 테이블이지만 여러개의 데이터 파일에 분산되어 저장
Range Partition : 데이터 값의 범위를 기준으로 파티션을 수행
List Partition : 특정한 값을 지정하여 파티션 수행
Hash Partition : 해시 함수를 적용하여 파티션 수행
Composite Partition : 범위와 해시를 복합적으로 사용하여 파티션 수행
장점
엑세스 범위가 줄어듬 → 성능향상
데이터 분할되어 있어 IO 성능 향상
각 파티션별로 독립적으로 백업/복구 가능
테이블 병합
- 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능 향사
- 1대N 관계의 테이블을 병합하여 성능 향상 but 데이터 중복 발생
- 슈퍼 타입과 서브 타입 관계가 발생하면 테이블 통합하여 성능 향상
- 슈퍼 타입과 서브 타입
- 고객은 슈퍼 타입 개인고객과 법인고객은 서브 타입
- 배타적 관계 : 고객이 개인고객이거나 법인고객인 경우
- 포괄적 관계 : 고객이 개인고객일수도 있고 법인고객일 수도 있는 것
- 슈퍼 - 서브 타입 변환 방법
- OneToOne Type : 슈퍼 타입과 서브 타입 개별로 테이블 도출
- Plus Type : 슈퍼 + 서브 타입의 엔티티 여러개 생성
- Single Type : 슈퍼 타입과 서브 타입을 하나의 테이블로 도출
- 슈퍼 타입과 서브 타입
분산 데이터베이스
중앙 집중형 데이터베이스 : 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 사용자가 그 시스템에 접속하여 데이터베이스를 사용하는 구조
분산 데이터베이스 : 물리적으로 떨어진 데이터베이스들을 네트워크로 연결 → 단일 데이터베이스 이미지를 보여주고 분산 작업 처리 수행
분산 데이터베이스의 투명성
- 분할 투명성 : 고객(사용자)는 논리적 릴레이션이 여러 개로 분할되어 각 사본이 여러 시스템에 저장되어있음을 알 필요가 없다
- 위치 투명성 : 고객이 사용하려는 데이터의 정소를 명시할 필요가 없다 → 데이터에 접근하는 방식에는 차이가 없어야 한다
- 지역 사상 투명성 : 지역 DBMS와 물리적 데이터베이스 사이의 매핑이 보장되어야 한다.
- 중복 투명성 : 데이터베이스 객체가 여러 시스템에 중복되어 존재해도 데이터의 일관성은 유지되어야 한다.
- 장애 투명성 : 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 보장된다.
- 병행 투명성 : 여러 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야 한다.
분산 데이터베이스 설계 방식
- 상향식 설계 방식 : 지역 스키마 → 전역 스키마(통합)
- 하향식 설계 방식 : 전역 스키마 작성 → 지역 사상 스키마 작성
분산 데이터베이스 장점과 단점
- 장점
- 신뢰성과 가용성 높음
- 빠른 응답 가능
- 시스템 용량 확장 용이
- 단점
- 관리, 통제 어려움
- 무결성 관리 어려움
- 설계 복잡
- 보안 어려움
- 장점
'Computer Science > Database' 카테고리의 다른 글
그림으로 공부하는 오라클 구조 - Ch3. 캐시와 공유 메모리 (0) | 2024.04.13 |
---|---|
그림으로 공부하는 오라클 구조 - Ch2. 오라클의 여러 프로세스 (1) | 2024.04.03 |
그림으로 공부하는 오라클 구조 - Ch1. I/O와 디스크의 관계 (1) | 2024.04.03 |
(작업중)1. SQL 수행 구조 및 처리 과정과 I/O (0) | 2023.12.14 |
SQLD 정리 2 (1) | 2023.03.18 |