재밌고 어려운 IT를 이해해보자~!
SQLD 정리 본문
하핳 SQLD 재시험을 본다! 너무 신난다!
50점 받고 떨어진 나 ㅡ_ㅡ 멍충하다.
프로젝트를 진행하며 실제로 쿼리를 써보고 고민을 해보았으니
이번엔 더 이해가 잘될 것 같다!
첫 시험때는 손가락을 움직이지 않고 눈으로만 공부한 내 잘못이다.
책장어딘가에 넣어둔 노랭이를 다시 가져왔다!
파이팅!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
데이터 모델링의 이해
모델링 특징 3가지
추단명 추단명 추단명
추상화 : 일정한 형식에 맞춰 표현
단순화 : 제한된 표기법 언어로 표현
명확화(정확화) : 누구나 쉽게 이해하도록 정리
모델링 3가지 관점
데이터 관점 : "업무"와 데이터 // 데이터와 데이터간의 관계
프로세스 관점 : "업무 프로세스"가 실제 하는 일 or 무엇을 해야하는지
상관 관점 : "업무가 처리하는 일의 "방법"에 따른 "데이터가 받는 영향"
데이터 모델링 정의
- 정보시스템을 구축
- 현실 세계 데이터를 약속된 표기법으로 표현
- DB 구축을 위한 분석/설계
데이터 모델링 기능
- 데이터 가시화
- 시스템 구축 과정 문서화
- 상세한 수준의 표현방법
데이터 모델링의 유의점
- 중복 : 여러장소에 같은정보저장 주의
- 비유연성 : 데이터 정의를 데이터 프로세스와 분리
- 비일관성 : 데이터간 상호 연관관계를 명확히 정의
데이터 모델링 3단계
개논물 개논물 개논물
개념적 : 추상화 수준이 높고, 업무중심적, 전체에 대해 포괄적인 수준의 모델링
논리적 : (키, 속성, 관계 )를 표현, 재상용성 높음, 정규화 수행
물리적 : 실제 DB에 이식, 믈리적 성격
데이베이스 3단계 구조
외개네 외개네 외개네
외부 단계/ 개념적 단계/ 내부적 단계
데이터 독립성 요소 (외개내)
- 외부 스키마 / 개념 스키마 / 내부 스키마
외부스키마 - 사용자와 가까운 단계
개념스키마 - DB에 저장되는 데이터와 사용자 관계 표현
- 모든 사용자 관점을 통합, 조직 전체 통합 ( 물리적 데이터 독립성 )
논리적 독립 (외부 <-> 개념) / 물리적 도립 (개념 <-> 내부)
데이터모델링 주요 세가지 개념
어떤것, 성격, 관계
데이터모델 표기법 ERD
엔터티 - 저장이 되기 위한 어떤 것, "객체"
인스턴스 - 엔터티 안의 행 데이터
엔터티 특징
업무에서 꼭 필요로 하는 정보
식별자에 의해 식별 가능
2개 이상의 인스턴스로 구성
반드시 속성을 포험
다른 엔터티와 관계가 최소 1개이상 존재
엔터티 분류
-유형,무형에 따른
유개사 유개사 유개사
유형 / 개념 / 사건 엔터티
-발생 시점에 따른
기중행 기중행 기중행
기본 / 중심 / 행위 엔터티
기본 엔터티 : 다른 엔터티로 주식별자 상속 X 자신 고유 주식별자를 가짐
엔터티 명명
약어 X
현업 실제 사용
단수명사
유일한 이름
생성 의미대로
속성
-의미상 더 이상 분리되지 않는 최소한의 단위
- 엔터티를 설명하고, 인스턴스의 구성 요소가 됨
엔터티<->속성<->인스턴스 관계
1개의 엔터티 = 2개 이상의 인스턴스 집합 (엔터티가 가장 큰 단위의 개념)
1개 인스턴스 = 2개 이상의 속성
- 1개 속성 = 1개의 속성값 (딱 1개)
속성의 특성에 따른 분류
기설파 기설파 기설파
기본 속성 : 기본적인 모든 속성
설계 속성 : 사용자에 의해 새로 만들어지거나 정의되는 속성
파생 속성 : 다른 속성의 영향을 받아 발생
엔터티 구성박식에 따른 분류
PK, FK, 일반
도메인 -> 각 속성이 가질 수 있는 범위 ( 데이터 타입 / 크기 / 제약사항 - NOT NULL, Check 조건 )을 지정
속성 명명
약어 -X
서술식 -X
실제 사용 용어
유일한 이름
관계 정의
- 엔터티의 인스턴스 사이 논리적 연관성
-관계명 / 차수(카디널리티) / 선택성(옵셔널리티) 로 구성
페어링
- 엔터티 안에 인스턴스가 개별적으로 관계를 갖는 것
- 관계 = 페어링의 집합
관계 분류
ERD : 존재에 의한 관계/ 행위에 의한 관계 -> 둘이 구분 없이 단일화 된 표기법 사용
UML : 연관 관계 / 의존 관계 -> 실선과 점선으로 표기법 구분
식별자
식별자 정의 (=키 정의)
- 엔터티를 구분하는 논리적인 이름
- 즉, 엔터티를 대표할 수 있는 속성
- 엔터티에는 반드시 하나의 유일한 식별자 존재
식별자 특징
유최불존 유최불존 유최불존
유일성: 주 식별자에 의해 엔터티 내 모든 인스턴스 유일하게 구분
최소상: 주 식별자를 구성하는 속성 수는 유일성을 만족하는 최소 수
불변성: 주 식별자가 한 번 특정 엔터티에 지정되면, 그식별자 값은 변화 X
존재성: 주 식별자가 지정되면, 반드시 데이터값이 존재 (NULL X)
식별자 분류
대표성 가지는가 : 주식별자(PK) / 보조 식별
스스로 생성될 수 있나 : 내부 식별자 / 외부 식별자
하나의 속성으로 식별되나 : 단일 식별자 / 복합 식별자
본질 식별자 -> 원래 잇던 식별자
인조 식별자 = 기존에 업무적으로 의미 있던 식별자 속성을 대체해 새로 만든 식별자
식별자 비식별자 관계
-식별자 관계 : 자식이 부모의 기본키를 상속받아 기본키로 사용
-비식별자 관계 : 부모로의 속성을 받았을 때, 자식의 기본키로 사용하지 않고 일반적인 속성으로만 사용
데이터 모델링과 성능
성능 고려한 데이터 모델링 순서
1- 정규화
2- DB 용량 선정
3- 트랜잭션 유형 파악
4- 반정규화
5- PK/FK 조정, 슈퍼타입/서브타입 조정
6- 성능관점에서 데이터모델 검증
데이터모델링 고려사항
-정규화 -> 중복 제거를 통해 성능 향상 (조회 성능 저하 X)
-용량산정 -> 트랜잭션 유형과 양을 분석하는 자료
-물리적 데이터 모델링 -> PK/FK 칼럼 순서 조정, FK인덱스 생성 수행
-이력데이터 -> 시간에 따라 반복적으로 발생 -> 대량 데이터 일 수 있다.
정규화
- 데이터 모델을 좀 더 구조화하고 개선시키는 절차
- 중복 제거, 무결성을 지킴
- 성능은 조회 // 삽입, 수정, 삭제의 두가지 측면 둘 다 고려
- 정규화가 잘 되어있으면, 삽입,수정,삭제 성능 향상
1차 정규화 -
중복된게 많다 -> 1차 정규화 대상
2차 정규화
올바른 종속관계에 맞춰서 정규화
3차 정규화
2차정규화와 비슷하게 종속되는것에 맞춰서 테이블 분할
4차 정규화
다중으로 나오지않게 종속 제거
성능 저하 원인
한 테이블 많은 컬럼 -> 수직분할 (컬럼 단위로 분할)
대량 데이터 저장 문제 -> 파티셔닝 or PK에 의한 테이블을 분할 (로우 단위로 분할)
파티셔닝 : 논리적으로 하나의 테이블이지만, 물리적으로는 여러 개의 테이블로 분리
슈퍼/서브타입 데이터 모델
- 슈퍼타입 : 공통 부분을 슈퍼타입으로 모델링
- 서브타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성만 모델링
데이터베이스 성능 저하 원인 3가지
- 트랜잭션 : 전체를 일괄처리, 테이블 개별로 유지
- 트랜잭션 : 슈퍼+서브타입 공통 처리, 테이블 개별로 유지
- 트랜잭션 : 서브타입만 개별로 처리, 테이블은 하나로 통합
데이터 소량의 경우 1:1 관계 유지
데이터 대량의 경우 3가지
- 전부 개별 테이블
- 슈퍼 + 서브타입 테이블
- 하나의 테이블
쪼개질수록 확장성 + // Disk I/O 성능 + // 조인 성능 - // 관리 용이성 -
인덱스 엑세스 범위 좁히는 법
EQUAL 조건 컬럼 제일 앞으로
BETWEEN, IN 에 있는 컬럼 다음순위
분산 데이터베이스
빠른 네트워크 환경을 이용해 DB를 여러지역, 여러노드로 위치시켜
사용성, 성능을 극대화
분산된 DB를 하나의 가상 시스템으로 사용
논리적으로 동일한 하나의 시스템, 네트워크를 통해 물리적으로 분산
분산 DB의 투명성6가지
분할 투명성 - 여러 단편으로 분할
위치 - 저장 장소 알필요 X
중복 - 중복 저장 되었는지 알 필요 X
장애 - 트랜잭션 원자성 유지
병행 - 결과 일관성 유지
지역사상 - 지역DBMS와 물리 DB간에 Mapping보장
빠른 데이터 처리 가능
분산 데이터베이스 적용 기법
1. 테이블 위치 분산 (물리적 분산)
2. 수평 분할
3. 수직 분할
4. 복제 분산 - 부분복제
마스터 DB에서 테이블의 일부 내용만 다른 서버에 위치시킴
통합된 테이블 본사저장, 지사별로 각 지사에 해당하는 로우를 가지고 있음
여러 테이블 조인하지 않고 빠른 작업 수행 가능
5. 광역복제
- 통합된 테이블 본사 저장 각지사에 동일한 데이터 저장
6. 분산요약
요약정보를 본사에 통합 후 전체에 대해 다시 요약
7. 통합요약
다른 내용 정보를 본사에 통합 후 전체에 대해 다시 요약
'개인공부' 카테고리의 다른 글
SQLD 합격! (2) | 2024.03.30 |
---|---|
SQL자격검정 실전문제 (0) | 2024.02.26 |
Spring Framework (0) | 2024.02.23 |
프로젝트 관련 궁금증 정리 (0) | 2024.02.22 |
Parameter(파라미터) 와 Attribute(속성) 의 차이 (0) | 2024.01.27 |