💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.
중복정보 제거
- RDB의 특성 상 테이블 간의 정보는 중복되지 않아야 함
- 동일한 정보가 여러 테이블에 중복 저장되어 있으면 수정에 대한 부담과 무결성(Integrity) 유지가 쉽지 않음
- 하나의 정보는 한 테이블에만 나오도록 해야 함
- 정규화를 통해 중복성 제거
- 제거한 후 필요한 정보는 Join을 통해 구하기
정규형
- 중복을 제거하기 위한 테이블 정의 규칙
종류 | 설명 |
---|---|
제1정규형 | 나눌 수 있을 만큼 쪼개야 함 |
제2정규형 | 테이블의 컬럼들이 기본키와 직접 연관되는 컬럼만으로 구성해야 함 |
제3정규형 | 컬럼들 간의 종속관계가 없어야 함 |
제 1 정규형
- 관례(전화번호, 주소, 성-이름) 외에는 최대한 쪼개서 저장하기
- 한 컬럼에는 하나의 값만 저장하기
제 2 정규형
- 테이블의 컬럼들은 기본키와 직접 연관되는 컬럼으로만 구성하기
제 3 정규형
- 컬럼들 간의 종속관계가 있으면 안 됨
- 종속관계가 있는 컬럼들은 따로 테이블로 분리
- 예를 들어 http status code(200 - OK, 404 - Not found) 에러인 경우 코드와 메시지는 종속관계가 있음
참조 무결성(Referential Integrity Constraints)
- 외래키(FK)에 적용되는 규칙
- 외래키와 참조되는 원래 테이블의 키와 관계를 명시
- 외래키를 참조하면 원래 테이블에 해당 레코드 값이 반드시 존재해야 함
- 만약 원래 레코드를 삭제하려면 참조하는 외래키(FK) 값을 먼저
Null
로 만들어야 함 - 외래키 참조관계가 있을 경우에 레코드 추가/삭제 시 선후관계를 나타냄