경기도미래기술학교 AI개발자 부트캠프 73일차 TIL- sqld 공부. 데이터베이스 모델링과 정규화
모델링이란?
데이터의 개념적 표현을 만들고, 데이터 엔터티가 서로 관련되는 방식을 설정하고, 데이터가 데이터베이스에 저장되는 방식에 대한 프레임워크를 설정하는 프로세스. 시스템에서 데이터베이스를 구현하기 위한 청사진 같은 역할이다.
추상화 : 시스템이 관리할 수 있는 방식으로 데이터를 나타내기 위해 현실의 필수 측면을 표현한다.
단순화 : 복잡한 시스템을 더 간단하고 관리하기 쉬운 구성 요소로 나누는 과정
명확화 : 사물을 명확하고 이해하기 쉽게 만드는 것.
유의점 :
- 중복 : 여러 장소에 같은 정보를 중복 저장하지 않도록 중복성 최소화한다.
- 비유연성 : 데이터의 정의를 데이터 사용 프로세스와 분리해서 유연성을 높인다. 비유연성(경직성)의 경우는 데이터베이스 시스템이 요구사항이나 어떤 구조를 바꾸려고 할 때 데이터베이스도 크게 변경을 해야 하는 상황.
- 비일관성 : 데이터 간 상호 연관 관계를 확실하게 정의해야 한다. 비일관성은 데이터의 불일치, 모순의 존재가 있을 경우이다. 일반적으로 적절한 제약조건이 부족하거나 정규화를 잘못했을 때 발생한다.
데이터 모델링의 3요소
Thing : 엔티티, 인스턴스
Attributes : 속성, 속성값
Relationships : 관계
Entity : 특정 추상표현이나 사물 같은 것. (성적, 교수)
Attribute : 엔티티의 속성이나 특성을 나타낸 것. (교수의 이름, 학생의 특정 과목 성적 등)
정규화
- 중복성을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구성하는 프로세스
1 정규형(1NF)
- 각 열에 원자값이 포함되어 있는지?
- 각 열의 항목이 같은 종류인지
- 각 열의 이름이 고유한지
- 순서는 중요하지 않음.
2 정규형(2NF)
- 키가 아닌 모든 속성이 기본키에 종속되어야 한다.
- 현재 테이블과 크게 상관 없는 속성들(partiial dependency)을 새 테이블을 만들어 분류하는 것.
3 정규형(3NF)
-이행적 함수 종속관계를 갖지 않는 것.
ex. 책 테이블에 "글쓴이의 생년월일"에 대한 열이 포함된 경우 기본 키인 "BookID"에만 의존하지 않고 "글쓴이"에도 종속된다.
그래서 이 전이 종속성을 피하기 위해 별도의 "글쓴이" 테이블을 만들어야 한다.