1. PK의 특징
- 유일성 → UNIQUE
- 최소성 → 최대한 적게 사용
- 불변성
- 존재성 → NOT NULL
2. 주식별자 분류
- 대표성
- 주식별자 → PK
- 보조식별자 → PK, FK가 아닌 것들
- 스스로 생성
- 내부식별자 → FK가 아닌 것들
- 외부식병자 → FK
- 단일 속성
- 단일식별자 → 하나의 식별자 → PK가 하나
- 복합식별자 → 두개 이상의 식별자 → PK가 둘 이상
- 대체여부
- 본질식별자 → 가공 X
- 인조식별자 → 가공 O
3. 식별자, 비식별자 관계
부모 엔터티의 PK가 자식 엔터티의 PK
- 일 경우 → 식별자
- 아닐 경우 → 비식별자
4. 정규형
각 정규형을 지키는 과정이 정규화
- 제 1정규형
- 모든 속성은 하나의 값만 가져야 함
- 제 2정규형
- 모든 일반 속성은 모든 주식별자에 종속되야 함
- 복합식별자일 경우 하나애만 종속되는 경우가 있음0
- 제 3정규형
- 주식별자가 아닌 모든 속성간의 종속 불가
5. 반 정규화
- 데이터 조회 성능 향상을 위해 데이터 중복을 허용하거나 데이터 그룹핑을 하는 작업
- 입력, 수정, 삭제 성능 저하 가능성 O
- 데이터 정합성 이수 존재 가능성 O
- 정규화가 끝난 후 반정규화 진행
6. 테이블 반정규화
- 병합 → JOIN을 많이 해야하는 경우 고려
- 1 : 1 관계 병합
- 1 : M 관계 병합 → 중복 데이터 생길 가능성 O
- 슈퍼 서브 타입 테이블 병합
- 분할
- 수직 분할 (속성 분할)
- 엔터티 일부 속성을 별도의 앤터티로 분할
- 자주 사용하지 않는 속성을 떼어내기에 적합
- 분할 시 1 : 1 관계 성립
- 수평 분할 (파티셔닝, 인스턴스 분할)
- 인스턴스를 특정 기준으로 나눠 별도의 앤터티로 분할 ( 파티셔닝)
- 분할 시 성립 관계 X
- 추가
- 중복 테이블 추가 → 데이터 중복을 감안하더라도 성능상 필요하다 판단 시 별도 엔터티 추가
- 통제 테이블 추가
- 이력 테이블 추가
- 부분 테이블 추가 → 앤터티에서 많이 사용되는 속성만 잘라서 별도의 엔터티를 추가
7. 컬럼 반정규화
- 중복 컬럼 추가 → JOIN이 필요한 경우가 많아 컬럼 추가가 성능 면에서 유리할 때
- 파생 컬럼 추가 → 프로세스 수행시 부하가 염려되는 계산값을 미리 컬럼으로 추가 Ex) 재고, 할인율 적용가
- 이력 테이블 컬럼 추가 → 대량의 이력테이블 조회 시 속도 저하 대비해 조회 기준을 컬럼 추가 Ex) 최신 데이터 여부
8. 관계 반정규화
JOIN이 필요한 경우가 많아 중복 관계 추가가 성능 면에서 유리할 때 고려
9. 트랜잭션의 특징
- 원자성 → 더이상 분리 불가항 업무의 최소 단위, 전부 처리되거나 전부 취소되야함
- 일관성 → 하나의 트랜잭션이 완료된 후에더 데이터베이스는 일관된 상태여야함
- 고립성 → 실행 중인 트랜잭션 중간에 다른 트랜잭션 난입 불가
- 지속성 → 트랜잭션이 성공적으로 실행 완료시 그 결과는 데이터베이스에 영속적으로 저장
10. NULL
- 존재하지 않음. 즉, 값이 없음을 나타냄
- NULL을 포함한
- 가로 연산 시 NULL을 반환 → 컬럼간의 연산
- 세로 연산 시 NULL을 제외하고 계산 → 속성간의 연산
Share article