SQLD 1~2장 정리

Dogeun Lee·2023년 10월 23일
0
  1. 모델링의 특징
    현실세계를 일정한 형식에 맞추어 표현하는 추상화의 의미
    복잡현실을 제한언어/표기법을통해 이해쉽게 단순화
    애매모호 배제, 누구나 이해가가도록 정확히 현상을 기술

    추 / 단 / 명

  2. 데이터모델링이 필요한 주 이유
    업무정보구성 기초정보를 일정한 표기법으로 표현
    분석모델로 DB생성, 개발및 데이터관리에 사용
    데이터모델링 자체로 업무흐름설명, 분석

    업무에 대한 설명 역시 데이터모델링으로 설명

  3. 데이터모델링 유의사항
    같은 정보를 저장하지않게 중복성을 최소화
    데이터정의와 사용프로세스와 분리하여 유연성 높임
    데이터 상호 연관관계를 명확히하여 일관성유지

    중복, 비일관, 비유연

  4. 데이터모델링 개념
    개념 - 추상화
    논리 - 정규화
    물리 - 이식,성능

    개,논,물

  5. ANSI-SPARC의 외부/개념/내부 스키마
    외부 - 관점
    개념 - 관점의 통합적표현
    내부 - DB

    외,개,내

  6. ERD
    1976피터첸, 그/배/관/명/참/필, 관계명칭은 관계표현에있어 매우 중요함

    가장 중요한 엔티티는 왼쪽상단, 추가 왼쪽하단이 보편적임

  7. 엔터티
    여러가지의 속성을 가지고 있는 것이 적합함.
    병원, 환자(주소, 이름) << 병원은 한개 환자는 두개니까 환자가 엔터티에 적합함

    두개이상의 인스턴스의 집합( 영속적인 )

  8. 엔터티의 특징
    속성없는 엔터티는 있을수없다.
    관계가 없을수없지만 코드성,통계성,내부필요엔터티는 없어도된다.
    업무로 필요하지않으면 업무엔터티로 성립될수없다.
    유일한 식별자에의해 식별이 가능해야한다.

    두개이상의 인스턴스가 '꼭' 필요하다.

  9. 주식별자를 상속받지않고 자신의 고유한 주식별잘를 가지는 기본엔터티

    • 유무형 : 유형/개념/사건
    • 발생점 : 기본/중심/행위
  10. 엔터티 이름부여
    현업업무용어 사용하여 의미분명
    모든 엔터티에서 유일한 이름 부여
    엔터티가 생성되는 의미대로 자연스럽게 부여

    약어사용x

  11. 업무에서 필요하는 인스턴스에서 관리하고자하는 의미상 더이상 분리되지 않는 데이터 최소단위
    속성

    엔터티에 대한 자세하고 구체적인정보
    하나의 엔터티는 두개이상의 속성
    하나의 인스턴스에서 각각의 속성은 하나의 값
    속성도 집합

  12. 속성
    기본속성 : 기본적으로 설정한 값
    설계속성 : 설계로 나온 값
    파생속성 : 계산된 값

    속성 특성에 따른 분류이다.

  13. 속성 값의 범위 : 도메인

    주문엔터티에 단가라는 속성값의 범위가 어쩌구, 문자열정의 어쩌구

  14. DB모델링 네이밍 규칙
    지나친 약어사용은 자제
    서술식 용어 사용하지않기
    가급적 해당 업무에서 자주 사용하는 이름을 이용

    동일한 속성명과 데이터 일관성 유지와는 관련이없다.

  15. 데이터모델링의 관계
    관계 - 존재/행위 관계로 구분
    ERD : 구분없이 단일화된 표기법을 사용
    UML : 클래스다이어그램 연관/의존관계 실선과 점선

  16. 관계
    관계명
    관계차수
    선택사양

    1:1 1:N 등 관계의 기수를 묻는다면 관계차수이다.

  17. 관계의 체크 사항
    연관규칙이 존재하는가?
    정보조합이 발생하는가?
    업무기술서, 장표에 관계연결에 대한 규칙이 서술되어있는가?
    업무기술서, 장표에 관계연결을 가능하게 하는 동사(VERB)가 있는가?

    명사(Noun)등의 낚시문제

  18. 주식별자 지정 시 고려사항
    주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분되어야한다.
    주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야한다.
    지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
    주식별자가 지정되면 반드시 값이 들어와야한다.

    유일성, 최소성, 불변성, 존재성(반드시 데이터값이 존재)

  19. 비식별자관계 선택하는 기준
    관계의 강약을 분석, 상호간의 연관이 약할 경우 비식별자 고려
    자식T에서 독립적인 PK구조를 가지기 원할 때
    모든 관계가 식별자로 연결되면 .SQL where 절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL 문장이 길어져 SQL문의 복잡성이 증가되는 것을 방지하기 위함.
    부모에 참조값이 없어도 자식엔터티의 인스턴스가 생성
    여러개의 엔터티를 통합하며 각각의 엔터티가 갖고 있던 여러개의 개별 관계가 통합
    자식 엔터티의 주식별자를 부모 엔터티와는 별도로 생성하는게 유리하다고 판단될 때

    +부모엔터티의 주식별자를 자식엔터티에서 차단하고 싶을때

  20. 데이터모델링
    데이터 증가가 빠를수록 성능저하에 따른 성능개선비용 증가
    데이터모델은 성능튜닝하며 변경될수있다.
    분석/설계 단계에서 성능을 구려한 D모델링 시 성능저하에 따른 리워크 비용최소화 기회 제공

    SQL을 중심 집중 튜닝은 데이터모델링과 무관하다.

  21. 데이터모델링
    정규화 > 용량산정 > 트랜잭션유형파악 > 반정규화 > 이력모델조정, PK/FK조정, 슈/섭타입 조정

    성능을 고려한 데이터 모델링 순서

  22. 성능데이터 모델링 고려사항
    용량산정은 전체적인 DB에 발생되는 T/S의 유형과 양을 분석하는 자료가 되므로 성능데이터모델리을 할 때 중요한 작업이다.
    물리데이터 모델링 시 PKFK의 칼럼순서조정, FK인덱스 생성 등은 성능 향상을 위한 데이터 모델링 작업에 중요한 요소가 된다.
    이력데이터는 시간에 따라 반복적으로 발생되기 때문에 대량 데이터일 가능성이 높아 특별히 성능을 고려하여 컬럼 등을 추가하도록 설계

    정규화가 항상 성능저하를 시킨다는건

  23. 부분 종속성 제거 2정규화
    A와 B가 PK로 설정되어있을 때 A를알면 C를알수있고 B를알면 C를 알수 있을 때 이를 부분 종속이라 한다.

    하나의 PK만 분리하여 설정하는 것이 2정규화

  24. 같은 값이 반복되는 경우 도메인을 원자값으로 변경
    속성들이 단일값을 가질 때 릴레이션을 분리하여 도메인을 원자값으로 설정

    1정규화

  25. 다수테이블에 대한 조인이 불가피 할 경우 적시성 확보를 위한 필수 반정규화 대상이다.

    반정규화 : 중복, 통합, 분리 등을 수행하는 모든 과정
    무결성이 꺠질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 하는 이유는 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나, 칼럼계산 시 성능저하가 예상될 경우 수행한다.

  26. 반정규화 추가기법 중 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 I/O를 줄이기위해 해당 칼럼들을 별도로 모아놓는 반정규화 기법은 부분테이블 추가이다.

    테이블 : 중복, 부분, 이력, 통계 테이블 추가 ( 중/부/이/통 )
    컬럼 : 응용시스템, 이력, 중복, PK, 파생 컬럼 추가

  27. 반정규화 추가기법 중 컬럼추가
    이력테이블에 기능칼럼추가 - 최신값 처리하는 이력의 특성고려
    파생칼럼 - 조회성능향상을 위해 계산된 칼럼을 가짐
    중복칼럼 - 조인감소를 위해 여러 테이블에 동일한 칼럼을 가짐

    응/이/중/피/파

  28. 컬럼이 많은 테이블에 대해서
    로우체이닝이 발생할 정도로 많은 컬럼이 존재하 ㄹ경우 조회성능저하가 발생할 수 있다. 트랜잭션이 접근하는 칼럼 유형을 분석하여 1:1로 테이블을 분리하면 디스크I/O가 줄어들어 조회 성능이 향상될 수 있다.

    컬럼위치 변경은 어느정도 로우의 길이를 감소시킬수 있으나 나중에 채워져서 로우체이닝이 발생할수 있으므로 바람직하진 않다.

  29. 파티셔닝
    하나의 테이블에 많은 데이터가 저장 되면 인덱스 추가하고 몇개로 쪼개도 성능이 저하되는 경우가있는데 이 때 논리적으로는 하나의 테이블이지만 물리적으로 여러개 테이블로 분리하여 엑세스성능향상, 데이터관리방법개선하게 테이블에 적용하는 기법

    하나의 물리테이블을 여러개의 논리테이블로 쪼갬

  30. UNION ALL + 시스템이 아직 오픈 전 + 같은 속성의 이름의 테이블을 가질 때
    테이블을 하나로 통합하고 PK를 속성을 조합하여 구성

    PK체계나 일반속성에 각 사건을 구분할 수 있게 구분자를 부여

  31. 논리데이터모델의 슈퍼타입과 서브타입 데이터 모델을 물리 테이블로 변환 시
    T/S은 항상 전체를, 서브타입개별로, 슈퍼+서브, 통합하여 분석,처리하는데

    전체 : 테이블은 서브타입별로 개별유지로 변환하면 UNION 연산에 의해 성능이 저하
    서브타입개별 : 불필요하게 많은 양의 데이터가 집적되어 있어 성능이 저하
    슈퍼+서브타입 : 개별로 유지 시 조인에 의해 성능이 저하
    통합하여 분석처리 : 하나로통합되어있으면 성능이 향상된다.

  32. 상수값이 들어올 경우
    여러개의 속성이 PK로 설정되어 있을 경우 상수값을 맨위로 올리고 그다음에 Between과 같은 연산자를 두고 인덱스를 생성하는게 바람직함.

    PK인덱스는 설계된 순서 그대로 생성 시

  33. FK constraints를 생성했는지 여부와 상관 없이 조인 성능을 향상시키기 위한 인덱스를 생성해주는게 좋고 데이터 모델 상에 표현된 논리적 관계에 따라 관련 인스턴스관의 일관성을 보장하기 위해 설계된 제약조건을 구현할 수 있게 DBMS가 제공해주는 하나의 지원기능으로 이해할수있다.

    관계를 정의하여 관련 엔터티 상호간 업무적 연관성이 있음을 표현하는 경우엔 조인이 자주발생하는 것이라고 이해하는게 좋다.

profile
오대수

0개의 댓글