본문 바로가기
Database/SQLD

데이터 모델링의 이해

by KkingKkang 2023. 8. 22.
  1. 모델링은 단지 시스템 구현만을 위해 수행하는 타스크가 아니며, 시스템 구현을 포함한 업무분석 및 업무형상화를 하는 목적도 있다.
  2. 데이터 모델링을 하는 주요한 이유는 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것이 첫 번째 목적이다. 두 번째는 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것이 두 번째 목적이다. 
  3. 데이터모델링을 할 때 유의사항 : 중복성, 비유연성, 비일관성
  4. 개념적 데이터 모델링 - 추상화 수준이 높고 업무 중심적이며 포괄적인 수준의 모델링
    물리적 데이터 모델링 - 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등의 물리적인 성격을 고려한 데이터 모델링
  5. 개념스키마 - 통합관점의 스키마구조를 표현한 것
  6. 가장 중요한 엔터티를 왼쪽 상단에 배치하고, 이것을 중심으로 다른 엔터티를 나열하면서 전개하면 사람의 눈이 따라가기에 편리한 데이터 모델을 작성할 수 있다.
  7. 엔터티의 특징
    - 영속적으로 존재하는 두 개 이상의 인스턴스의 집합이어야 한다.
    - 엔터티는 반드시 속성이 있어야 한다.
    - 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. (공통코드, 통계성 엔터티의 경우 관계를 생략할 수 있다.)
  8. 기본엔터티(키 엔터티) 
    - 독립적으로 생성이 가능하고 타 엔터티의 부모 역할을 하게 된다. (사원, 부서, 상품, 자재, 고객 등)
  9. 엔터티를 명명하는 일반적인 기준
    - 가능하면 현업업무에서 사용하는 용어를 사용
    - 가능하면 약어를 사용하지 않음
    - 단수명사를 사용
    - 모든 엔터티를 통틀어서 유일하게 이름 부여
    - 엔터티 생성의미대로 이름을 부여
  10. 속성 : 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
  11. 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가져야 한다. 
  12. 파생 속성(derived attribute) : 데이터를 조회할 때 빠른 성능을 할 수 있도록 하기 위해 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성
  13. 도메인(domain) : 각 엔터티(테이블)의 속성에 대해서 어떤 유형의 값이 들어가는지를 정의하는 개념
  14. 데이터모델링에서는 존재적 관계와 행위에 의한 관걔를 구분하는 표기법이 없으며, UML에서는 연관관계와 의존관계에 대해 다른 표기법을 가지고 표현하게 되어 있다.
  15. 관계 표기법은 관계명, 관계차수, 선택성(선택사양)의 3가지 개념으로 표현한다.
  16. 동사는 관계를 서술하는 업무기술서의 가장 중요한 사항이다.
  17. 두 개의 엔터티 사이에서 관계를 정의할 때 체크해야 할 항목
    - 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
    - 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
    - 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
    - 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
  18. 부모엔터티의 주식별자를 자식엔터티에서 받아 손자엔터티까지 계속 흘려 보내기 위해서는 식별자관계를 고려해야 한다.
  19. 부모엔터티의 인스턴스가 자식 엔터티와 같이 소멸되는 경우는 식별자관계로 정의하는 것이 더 적합하다.
  20. 반정규화(역정규화)
    1) 데이터모델링을 할 때 정규화를 정확하게 수행한다.
    2) 데이터베이스 용량산정을 수행한다.
    3) 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
    4) 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
    5) 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.
    6) 성능관점에서 데이터모델을 검증한다.
  21. 함수종속성의 규칙 - 2차 정규화
  22. 칼럼에 의한 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배 - 1차 정규화
  23. 다량 데이터 탐색의 경우 인덱스가 아닌 파티션 및 데이터 클러스터링 등의 다양한 물리 저장 기법을 활용하여 성능 개선을 유도할 수 있음.
  24. 이전 또는 이후 위치의 레코드에 대한 탐색은 window function으로 접근 가능
  25. 부분테이블 추가 - 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때, 해당 칼럼들을 별도로 모아 놓는 반 정규화 기법
  26. 한 테이블에 많은 칼럼들이 존재할 경우 데이터가 불리적으로 저장되는 디스크 상에 넓게 분포할 가능성이 커지게 되어 디스크 I/O가 대량으로 발생하여 성능이 저하될 수 있다. 따라서 트랜잭션이 접근하는 칼럼유형을 분석해서 자주 접근하는 칼럼들과 상대적으로 접근 빈도가 낮은 칼럼들을 구분하여 1:1로 테이블을 분리하면 디스크 I/O가 줄어들어 성능을 향상시킬 수 있다. 
  27. 트랜잭션은 항상 전체를 통합하여 분석 처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면 하나의 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 더 성능이 우수하다.
  28. EQUAL 조건으로 조회되는 칼럼이 가장 앞으로 나오고, 범위조회 하는 유형의 칼럼이 그 다음에 오도록 하는 것이 인덱스 엑세스 범위를 좁힐 수 있는 가장 좋은 방법이다.
  29. 엔터티 간에 관계를 정의하여 관련 엔터티 상호간에 업무적인 연관성이 있음을 표현한 경우에는 FK Constraints를 생성했는지 여부와 상관없이 조인 성능을 향상시키기 위한 인덱스를 생성해주는 것이 좋다.
  30. Global Single Instance(GSI)는 통합된 한 개의 인스턴스, 통합 데이터베이스 구조를 의미하므로 분산데이터베이스와는 대치되는 개념이다. 

 

반응형

'Database > SQLD' 카테고리의 다른 글

조인 방식(NL, SORT MERGE, HASH JOIN)  (0) 2023.07.14
인덱스  (0) 2023.07.14
옵티마이저  (1) 2023.06.09
PL/SQL  (0) 2023.06.05
윈도우 함수와 문제풀이3 - 권한  (0) 2023.06.05

댓글