반응형
:warning: 해당 내용은 제가 본걸 막 쓴 것이기 때문에 도움이 되지 않을수도 있습니다.!!!
- 도메인의 특징
-
- 엔터티 내에서 속성에 대한 데이터 타입과 크기를 지정
- 엔터티 내에서 속성에 대한 NOT NULL을 지정
- 엔터티 내에서 속성에 대한 Check 조건을 지정
- 주식별자를 도출하기 위한 기준
-
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
- 주식별자의 특징
-
- 유일성: 주식별자에 의해 엔터티 내에서 모든 인스턴스들을 유일하게 구분함
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성: 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성: 주식별자가 지정되면 데이터 값이 반드시 존재 해야 함(NOT NULL)
- 컬럼에 대한 반정규화 기법
-
- 중복 칼럼을 추가: 조인감소를 위해 여러 테이블에 동일한 칼럼을 갖도록 함
- 파생 칼럼을 추가: 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 함
- 이력 테이블에 기능 칼럼을 추가: 최신 값을 처리하는 이력의 특성을 고려하여 기능성 칼럼을 추가
- PK에 의한 컬럼 추가: 복합 의미를 갖는 PK를 단일 속성으로 구성했을 때 발생되며, PK안에 데이터가 존재하지만 성능 향상을 위해 일반 속성으로 포함하는 방법
- 응용 시스템 오작동을 위한 컬럼 추가: 업무적으로는 의미가 없으나, 데이터 처리시 오류로 인해 원래 값으로 복구하길 원하는 경우 데이터를 임시적으로 중복 보관하는 방법
- 반정규화
- 개념: 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위
- 반정규화 수행 시, 시스템의 성능이 향상되고 관리 효율성이 증가하지만 데이터의 일관성 및 정합성의 저하가 될 수 있음
- 과도한 반정규화는 오히려 성능 저하를 가져옴
- 반정규화를 위해서는 사전에 데이터의 일관성과 무결성을 우선으로 할지, 데이터베이스의 성능을 단순화를 우선으로 할지 결정해야 함
- 반정규화 방법에는 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있음
- 테이블 통합
- 1 : 1 관계, 1 : M 관계, 슈퍼/서브 관계를 통합하여 성능을 향상 시키는 것
- 여러 개 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우, 여려 개의 테이블을 이용하여 항상 조회를 수행하는 경우 테이블 통합을 고려
- 고려사항: 데이터 검색은 간편하지만 레코드 증가로 인해 처리 량이 증가, 테이블 통합으로 인해 입려그 수정, 삭제 규칙이 복잡해질 수 있음, NOT NULL, Default, Check 등의 제약조건 설계가 어려움
- 수평 분할
- 레코드를 기준으로 테이블을 분할
- 레코드별로 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할
- 수직 분할
- 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할
- 갱신 위주의 속성 분할: 데이터 갱신 시 레코드 잠금으로 인해 다른 작업을 수행할 수 없으므로 갱신이 자주 일어나는 경우
- 자주 조회되는 속성 분할: 자주 조회되는 속성이 극히 일부일 경우
- 크기가 큰 속성 분할: 이미지나 2GB 이상 저장될 수 있는 텍스트 형식 등으로 된 속성일 경우
- 보안을 적용해야 하는 속성 분할: 특정 속성에 대해 보안을 적용할 수 없으므로 보안을 적용해야 하는 경우
- 중복 테이블 추가
- 중복 테이블을 사용하는 경우
- 정규화로 수행 속도가 느려지는 경우
- 많은 범위의 데이터를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리해야 하는 경우
- 처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우
- 집계 테이블의 추가: 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하는 것으로, 트리거 오버헤드를 유의해야 함
- 집행 테이블의 추가: 이력 관리 등의 목적으로 추가하는 테이블, 적절한 데이터 양의 유지와 활용도를 높이기 위해 기본 키를 적절히 설정
- 특정 부분 만을 포함하는 테이블의 추가: 데이터가 많은 테이블의 특정 부분 만을 사용하는 경우 해당 부분 만으로 새로운 테이블을 생성
- 중복 테이블을 사용하는 경우
- 중복 속성 추가
- 중복 속성을 추가하면 데이터의 무셜성 확보가 어려움, 필요한 저장 공간이 증가함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 엑세스의 조건으로 자주 사용되는 속성
- 기본 키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우
- 고려 사항
- 테이블 중복과 속성의 중복을 고려
- 데이터 일관성 및 무결성에 유의
- SQL 그룹 함수를 이용하여 처리할 수 있어야 함
- 저장 공간의 지나친 낭비를 고려
반응형
'IT 톺아보기 > 이런저런 공부' 카테고리의 다른 글
한글 오토마타 만들기 - 2 (0) | 2023.01.18 |
---|---|
한글 오토마타 만들기 - 1 (1) | 2023.01.18 |
인코딩이란 - 2. base64 Encoding / Decoding (0) | 2023.01.18 |
인코딩이란? - 1 (0) | 2023.01.17 |
플로이드-와샬 알고리즘 (0) | 2022.08.09 |