식별자
1. 대표성
- 주 식별자
- 보조 식별자
2. 스스로 생성 여부
- 내부 식별자
- 외부 식별자
3. 속성의 수
- 단일 식별자
- 복합 식별자
4. 대체 여부
- 본질 식별자
- 인조 식별자
식별자 관계
- 엔터티간의 강한 연결 관계 표현
- ERD에서 실선 표현
- 부모 엔터티 인스턴스 소멸 시 자식 엔터티 인스턴스 같이 소멸
- 조인 최소화를 위해서는 식별자 관계로 연결
비식별자 관계
- 엔터티 간의 약한 연결 관계
- ERD에서 점선 표현
- 부모 엔터티 인스턴스 참 값이 없어도, 자식 엔터티 인스턴스 생성 될 수 있을 때 적합
PK가 식별자로 들어가는지, 일반 속성으로 들어가는지를 확인 해준다.
키 종류
키 종류 | 유일성 | 최소성 | 특징 |
슈퍼키 | O | X | 고유한 데이터 속성 |
후보키 | O | O | 행을 유일하게 식별 |
기본키 | O | O | 후보키 중 하나 |
대체키 | O | O | 기본키가 아닌 후보키 |
외래키 | X | X | 다른 테이블에 있는 기본키 참조 |
정규화
DB의 이상현상을 막기 위해, 중복 최소화와 테이블을 보다 잘 조직된 상태로 분해
특징
- 데이터 입력/수정/삭제 성능 향상
- 조인의 횟수가 증가함에 따라 조회 성능 하락
-> 조회 성능이 저하될 경우 반정규화
반정규화 기법은 파티셔닝 (수직 분할)
- 정보 손실 방지
- 무결성 보장
* 정규형은 정규화의 결과
* 보안 관련 사항은 뷰
정규화 | 특징 | 과정 |
제 1 정규화 | 속성의 속성값 = 원자값 | |
부분 함수 종속성 제거 | ||
제 2 정규화 | 1:M 관계 성립 | |
이행 함수 종속성 제거 | ||
제 3 정규화 | ||
모든 결정자가 후보키 | ||
BCNF | 후보키가 아닌 컬럼이 다른 컬럼을 결정하지 않도록 | |
다치 종속 제거 | ||
제 4 정규화 | 하나의 테이블에서 여러 값이 중복되지 않도록 | |
조인 종속 제거 | ||
제 5 정규화 | 데이터가 잘못된 방식으로 결합되지 않도록 |
슈퍼타입 / 서브타입 관계 테이블 병합
- One to One Type
슈퍼 타입, 서브 타입 테이블들을 각각 개별 테이블로 구성
- Plus Type
슈퍼타입 + 서브타입 테이블로 구성
- Single Type
전체를 하나의 테이블로 통합
Null
정해지지 않은 값(공백과는 다름)
- 단일행 연산 수행 결과는 NULL
- 다중행 연산 수행시 행 제외하고 수행
본질(원조) 식별자
업무에 존재하는 원래의 식별자
- 데이터 정확성이 깨지지 않음
인조(인위) 식별자
업무에 존재하지 않으나, 원래 식별자의 복잡합 때문에 인위적으로 만듬
- 데이터 중복 발생 가능성 O
- 별도의 인덱스 생성 필요
- 주식별자를 생성하여 개발 편의성 향상
'SQLD' 카테고리의 다른 글
SQLD, 마지막 정리 - 자주 출제되는 내용 정리 (0) | 2025.03.08 |
---|---|
SQLD, 필기 요약 - 4 ( SQL 구문 ) (0) | 2025.03.08 |
SQLD, 필기 요약-3 ( SQL 구문 ) (0) | 2025.02.27 |
SQLD, 필기 요약-1 ( 데이터베이스 / 엔터티 / 속성 ) (0) | 2025.02.18 |