DataBase/SQLD

[SQLD][데이터 모델링] SQL 개발자 과외노트 45-98쪽

bay07 2024. 4. 29. 13:56

기본속성 

업무 프로세스 분석을 통해 바로 정의가 가능한 속성

ex) 상품 이름, 상품 가격 

 

설계속성

업무에는 없지만, 설계하다 보니 필요하다고 판단되어 도출한 속성

ex) 학번 

 

파생속성 

다른 속성의 속성값을 계산하거나, 특정한 규칙으로 변형하여 생성한 속성 

 ex) 이벤트 응모 건수 



주 식별자 
기본키, PK (Primary Key)에 해당하는 속성 
유일성, 최솟,ㅇ 불변성, 존재성 

원조 식별자 
업무 프로세스에 존재하는 식별자
가공되지 않은 원래의 식별자 (본질 식별자)

대리 식별자 
주 식별자의 속성이 2개 이상인 경우 
그 속성들을 하나로 묶어서 사용하는 식별자 (인조식별자)

------

정규화
정규화를 하면 입력, 수정, 삭제 성능이 향상된다

반정규화
반정규화는 모든 정규화를 마친 후 성능상 이슈가 있을 때만 고려하는 것이 원칙이다
정규화를 했을 때 조회 성능이 심각하게 저하되는 경우, 반정규화를 고려해 볼 수 있다.
반정규화를 하면 데이터 무결성이 저해된다고 볼 수 있다 

테이블 병합
2개 이상의 엔터티를 합체하는 것
1:1 관계, 1:M 관계 모두 테이블 병합이 가능하다 
1:M 관계에서의 테이블 병합은 중복 데이터를 발생시키므로 주의가 필요하다 

 

-------------------

 

 

테이블 병합
1:1 / 1:M 
1:M 관계에서의 테이블 병합은 중복 발생시킬 수 있음 
1:M 관계에서의 테이블 병합은 한쪽에 해당하는 테이블 속성 개수가 적어야 유리함 
테이블 관계가 강결합이어서 같이 조회되는 경우, 비정규화를 고려함 
지나친 JOIN으로 인한 성능 문제가 있을 경우 수행 

테이블 수직 분할 
테이블을 수직분할 하면 1:1 관계가 만들어진다 (1:M은 안됨)
속성의 사용 빈도나 속성값의 NULL 여부를 기준으로 분할할 수 있다. 
수직분할을 하면, 한 개의 블록에 더 많은 인스턴스 저장 가능 

테이블 수평 분할 
테이블의 특정 인스턴스를 별도의 테이블로 분할하는 것 
DB 파티셔닝 기법을 주로 사용 
수평 분할을 할 경우 관계가 없는 다수의 테이블 생긴다 
분할 기준은 여러가지가 될 수 있다 

반 정규화 기법
중복, 통계, 이력, 부분 테이블 추가 

중복 테이블을 추가하는 경우 
특정 범위의 많은 데이터를 자주 처리해야 하는 경우 
정규화로 인한 성능 감소가 생겼을 때 
미리 계산된 값을 저장해두어서, 성능 향상을 하려는 경우 
단순히 같은 데이터를 다른 테이블에 저장하는 건 X


반정규화 기법
중복 컬럼 추가 / 파생 컬럼 추가 / 이력 테이블 컬럼 추가 / 중복 관계 추가