철저히 60점에 맞춰 개념 공부하면서 이해는 없이 개념을 나열했다. 공부하다 궁금한 개념 있으면 키워드 검색해서 찾으면 된다.
데이터 모델링의 3가지 특징 - 추상화, 단순화, 명확성
추상화 - 현실을 간략하게 표현
단순화 - 누구나 이해할 수 있게
명확성 - 한 가지 의미를 갖는 명확함
데이터 모델링 단계 - 개념적 모델링, 논리적 모델링, 물리적 모델링
개념적 모델링 - 엔터티와 속성을 도출하고 개념적 ERD를 작성한다, 가장 높은 수준의 추상화
논리적 모델링 - 모든 릴레이션을 정의한다, 정규화로 재사용성을 높인다, 논리 모델링의 외래키는 물리 모델에서는 선택 사항이다
물리적 모델링 - 실제 구축
데이터 모델링 관점 - 데이터, 프로세스, 데이터와 프로세스
데이터 - 프로세스에서 사용되는 데이터, 업무가 어떤 데이터와 관련이 있는지
프로세스 - 비즈니스에서 수행하는 작업, 실제로 하는 일은 무엇인지, 무엇을 해야 하는지
데이터와 프로세스 - 프로세스와 데이터 간의 관계를 의미한다, CRUD 분석, 업무에서 처리하는 일의 방법에 따라 데이터가 어떻게 영향을 받는지 분석
데이터 모델링의 고려사항 - 데이터 중복, 비유연성, 비일관성
데이터 모델링의 세 가지 중요 개념 - Things, Attributes, Relationships
ERD 그리는 순서
엔터티를 도출하고 그린다 -> 엔터티를 배치한다 -> 엔터티 간의 관계를 설정한다 -> 관계명을 서술한다 -> 관계 참여도를 표현한다 -> 관계의 필수 여부를 표현한다
3층 스키마 - 사용자, 설계자, 개발자 관점에서 정의한 ANSI 표준, 각 층으로 독립성을 확보하며 각 계층을 뷰라고 한다
3층 스키마의 구조 - 외부(사용자), 개념(설계자), 내부(개발자)
외부 스키마 - 사용자 관점, 응용 프로그램이 접근하는 데이터베이스를 정의한다(View를 표현)
개념 스키마 - 설계자 관점, 통합 데이터베이스 구조이다(DB규칙과 구조를 표현), 조직 전체적인 관점으로 통합을 표현하는 계층
내부 스키마 - 개발자 관점, 물리적 저장 구조이다(데이터 저장 구조, 레코드 구조, 인덱스 등)
엔터티 - 업무에서 관리해야 하는 데이터 집합. 저장되고 관리되어야 하는 데이터다. 개념, 사건, 장소 등의 명사이다. 집합의 특성을 가진다, 다른 개체와 확연히 구분되는 특성을 갖는다, 순수 개체이거나 행위 집합이다. 유일한 식별자가 있다.
근데 순수 개체, 행위 집합이 뭐지?
엔터티의 특징 - 식별자, 인스턴스 집합, 속성, 관계, 업무
식별자 - 유일한 식별자가 있어야 한다 ex) 회원ID
인스턴스 집합 - 2개 이상의 인스턴스가 있어야 한다
속성 - 반드시 속성을 가지고 있다 ex) 고객 엔터티에 회원ID, 이름, 주소
관계 - 다른 엔터티와 최소 한 개 이상 관계 ex) 고객은 계좌를 개설한다
업무 - 업무에서 관리되어야 하는 집합이다 ex) 고객, 계좌
릴레이션=테이블
엔터티는 유형과 무형에 따른 종류, 발생 시점에 따른 종류로 나뉜다.
유형과 무형에 따른 엔터티 종류 - 유형, 개념, 사건 엔터티
유형 엔터티 - 업무에서 도출되는 지속적으로 사용되는 엔터티 ex) 고객, 강사, 사원 등
개념 엔터티 - 유형은 물리적 형태가 있고, 개념은 물리적 형태가 없다, 개념적으로만 사용되는 엔터티 ex)거래소 종목, 코스닥 종목, 생명보험 상품
사건 엔터티 - 비즈니스 프로세스를 실행하면서 생성되는 엔터티 ex) 주문, 체결, 취소주문
발생 시점에 따른 엔터티 종류 - 기본, 중심, 행위 엔터티
기본(키) 엔터티 - 키 엔터티, 독립적으로 생산되는 엔터티 ex) 고객, 상품
중심(메인) 엔터티 - 기본 엔터티로부터 발생되며 행위 엔터티를 생성한다 ex) 계좌, 주문
행위 엔터티 - 2개 이상의 엔터티로부터 발생된다, 업무처리를 하는 동안 발생되는 엔터티로 자주 변경되고 지속적으로 정보가 추가된다 ex) 주문 이력, 체결 이력
속성 - 엔터티가 가지는 항목, 더 이상 분리되지 않는 단위, 인스턴스의 구성요소, 업무에서 관리되는 것, 주식별자에게 함수적으로 종속됨, 하나의 값만 가짐, 사물의 성질, 사물의 특징, 사물의 본질적 성질, 중복된 값이 있을 수 있다
속성의 종류 - 분해 여부에 따른 속성의 종류, 특성에 따른 속성의 종류
분해 여부에 따른 속성의 종류 - 단일, 복합, 다중값 속성
단일 속성- 하나의 의미 ex) 회원ID
복합 속성- 여러 개의 의미 ex) 주소 (도, 시, 구)
다중값 속성- 속성에 여러 개의 값을 가질 수 있는 것, 다중값 속성은 엔터티로 분해된다 ex) 상품리스트
특성에 따른 속성의 종류 - 기본, 설계, 파생 속성
기본 속성 - 본래의 속성 ex) 회원 ID
설계 속성 - 모델링 중 발생되는 속성, 유일 값 가짐 ex) 상품코드
파생 속성 - (자신의 속성이 없어도) 다른 속성에 의해 만들어지는 속성 ex) 평균
관계 - 관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다
존재 관계 - 두 개의 엔터티가 존재 여부의 관계가 있는 것, 엔터티 간의 상태
행위 관계 - 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것, 엔터티 간의 행위
관계를 정의할 때 주요하게 체크해야 하는 사항 - 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가? 업무기술서, 장표에 관계연결을 가능하게 하는 동사(verb)가 있는가? 업무기술서, 장표에 관계연결 규칙이 서술되어 있는가? 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
속성에 이름을 부여하는 방법 - 업무에서 사용하는 명칭을 사용, 이름은 유일성 있게 부여, 의미가 있는 문자를 사용
관계 차수(Relation Cardinality) - 두 개의 엔터티 간에 관계에 참여하는 수
1대1 관계 - 완전 1대1, 선태적 1대1
1대N 관계 - 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러 개 있는 관계
M대N 관계 - 두 개 엔터티가 서로 여러 개의 관계를 가지고 있는 것, 이 관계의 조인은 카테시안 곱이 발생하므로 M대N 관계를 1대N, N대1로 해소해야 한다.
식별 관계와 비식별 관계
식별 관계는 강한 연결관계를 표현한다, ERD에서 실선으료 표현한다, 부모 엔터티의 주식별자를 자식 엔터티가 포함한다
고객과 계좌 엔터티에서 고객은 강한 개체(Strong Entity), 계좌는 약한 개체다.
강한 개체 - 다른 엔터티에 의존하지 않고 독립적으로 존재한다. 다른 엔터티에 기본키를 공유한다.
비식별관계는 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것이다.
키의 종류 - 기본키, 후보키, 슈퍼키, 대체키, 외래키
기본키 - 후보키 중 엔터티를 대표할 수 있는 키
후보키 - 유일성, 최소성을 만족하는 키
슈퍼키 - 유일성은 만족, 최소성은 만족하지 않음
대체키 - 여러 후보키 중 기본키를 선정하고 남은 키
근데 키가 뭐지?
식별자의 종류 - 대표성 여부에 따른 식별자의 종류, 생성 여부에 따른 식별자의 종류, 속성의 수에 따른 식별자의 종류, 대체 여부에 따른 식별자의 종류
대표성 여부에 따른 식별자의 종류 - 주식별자, 보조 식별자
주식별자 - 엔터티를 대표하는 식별자, 참조 관계로 연결 될 수 있다, 유일성, 최소성, Not Null, 대표성
보조 식별자 - 대표성을 만족하지 못하는 식별자
생성 여부에 따른 식별자의 종류 - 내부 식별자, 외부 식별자
내부 식별자 - 엔터티 내부에서 스스로 생성되는 식별자
외부 식별자 - 다른 엔터티와의 관계로 인해 만들어지는 식별자 ex) 계좌 엔터티에 회원ID
속성의 수에 따른 식별자의 종류 - 단일 식별자, 복합 식별자
단일 식별자 - 하나의 속성으로 구성
복합 식별자 - 둘 이상의 속성으로 구성
대체 여부에 따른 식별자의 종류 - 본질 식별자, 인조 식별자
본질 식별자 - 비즈니스 프로세스에서 만들어지는 식별자
인조 식별자 - 인위적으로 만들어지는 식별자, 최대한 범용적인 값을 사용하고 유일한 값을 만들기 위해서 사용되는 식별자
정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이다. 데이터를 분해하는 과정이다.
제1정규화 - 속성값은 무조건 하나, 기본키가 있어야 함
제2정규화 - 부분 함수 종속성을 제거, 기본키가 두개 이상의 컬럼으로 조합된 경우 분해하는 것
제3정규화 - 기본키가 아닌 속성간 종속성이 발생하는 경우, 속성 간 종속성을 가지면 안된다 ex)주키가 계좌번호이고 나머지 속성이 예수금, 관리점 코드, 관리점이면 관리점 코드, 관리점은 기본키가 아닌데 종속관계에 속함
정규화는 순서대로 하는게 맞지만 제1정규화를 한 후 제2정규화를 할 필요가 없으면 바로 제3정규화를 진행하면 됨(생략가능)
정규화의 특징
데이터 중복을 제거하기 떄문에 모델의 유연성을 높인다
조인을 유발해 CPU와 메모리를 많이 차지한다
이는 반정규화로 해결할 수 있다
반정규화의 특징
데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법, select 속도를 향상시키지만 유연성은 낮아진다.
반정규화를 해야하는 경우
정규화를 했더니 수행 속도가 느려지는 경우
다량의 범위를 자주 처리해야하는 경우
특정 범위의 데이터만 자주 처리하는 경우
요약/집계 정보가 자주 요구되는 경우
반정규화 절차 - 대상 조사 및 검토 -> 다른 방법 검토 -> 반정규화 수행
대상 조사 및 검토 - 데이터 처리 범위, 통계성 등을 확인해 반정규화 대상을 조사한다
다른 방법 검토 - 반정규화 말고 다른 방법 (클러스터링, 뷰, 인덱스 튜닝 등)이 있는지 검토한다
반정규화 수행 - 테이블, 속성, 관계 등을 반정규화 한다, 정규화를 수행한 후에 수행해야 한다, 반드시 하지 않아도 된다
반정규화 기법 - 계산된 칼럼 추가, 테이블 수직분할, 테이블 수평분할, 테이블 병합
계산된 칼럼 추가 - 총판매액, 평균잔고 등을 미리 계산하고, 그 결과를 특정 칼럼에 추가한다
테이블 수직분할 - 하나의 테이블을 두 개의 테이블로 분할 ex) {Key, C1, C2, C3, C4, C5, C6} -> {Key, C1, C2, C3}, {Key, C4, C5, C6}
테이블 수평분할 - 값을 기준으로 테이블을 분할 ex) 연도컬럼(2001,2002,2003,2004) -> 연도컬럼(2001,2002), 연도컬럼(2003,2004)
테이블 병합 - 1대1 관계의 테이블을 하나의 테이블로 병합, 1대N 관계의 테이블을 병합하여 성능 향상. 이 때, 1대N 병합은 중복이 발생한다.
Super type, Sub type ex) (고객엔터티) - 슈퍼타입, (개인고객엔터티, 법인고객엔터티) - 서브타입
분산데이터베이스 - 물리적으로 떨어진 DB에 네트워크로 연결해 사용자에겐 단일 DB처럼 보이지만 작업 처리는 분산해 처리하는 DB
분산 데이터베이스의 투명성 종류 - 분할, 위치, 지역 사상, 중복, 장애, 병행 투명성
분할 투명성 - 사용자는 한 테이블이 분할되어 여러 시스템에 저장되어 있음을 인식할 필요가 없다
위치 투명성 - 데이터의 저장 장소를 명시할 필요가 없다, 데이터에 위치에 관계 없이 동일한 명령으로 데이터에 접근할 수 있어야 한다
지역 사상 투명성 - 각 지역 시스템 이름과 무관한 이름이 사용 가능하다
중복 투명성 - DB 객체가 여러 시스템에 중복되어 있어도 사용자는 무관하게 데이터의 일관성이 유지된다
장애 투명성 - 분산된 일부 지역에 이상이 발생해도 데이터 무결성은 보장된다
병행 투명성 - 여러명이 동시에 작업해도 결과에 이상이 없다
분산 데이터베이스 설계 방식 - 상향식 설계 방식, 하향식 설계 방식
상향식 접근 방식은 지역별로 DB를 구축하고 전역 스키마로 통합하는 것이다, 하향은 그 반대
분산 데이터베이스 장점
지역 자치성, 점증적 시스템 용량 확장
신뢰성과 가용성
효용성과 융통성
빠른 응답속도와 통신비용 절감
데이터의 가용성과 신뢰성 증가
시스템 규모의 적절한 조절
각 지역 사용자의 요구 수용 증대
분산 데이터베이스 단점
소프트웨어 개발 비용
오류의 잠재성 증대
처리비용의 증대
설계, 관리의 복잡성과 비용
불규칙한 응답 소모
통제의 어려움
데이터 무결성에 대한 위협
중복제거로 모델 유연성을 향상시키는 것 - 정규화, 3층 스키마, 이상현상 제거
데이터 독립성을 향상시키는 방법 - 정규화, 3층 스키마, 데이터 구조화
좋은 모델링의 요건 - 중복배제, Business Rule, 완전성
카디널리티 - 하나의 릴레이션에서 튜플의 전체 개수
선택도 - 특정 조건에 의해서 선택될 것으로 예상되는 레코드의 비율
도메인 - 속성에 대한 값의 범위 등의 제약사항
Hash Join의 특징 - 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있다, 해시 함수를 이용하기 때문에 동등조건(=)에서만 사용 가능, 해시 테이블의 크기가 메모리 용량보다 크면 디스크에 저장한다
'SQL > SQLD' 카테고리의 다른 글
SQLD 준비와 합격 후기 (0) | 2020.08.30 |
---|---|
SQLD - SQL 기본 및 활용 (0) | 2020.05.30 |