이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
ERD 만들기 재밌다😊
정규화(normalization) 와 역정규화(denormalization)
-
RDBMS 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.
-
자료 중복으로 인해 이상 현상이 발생할 수 있어 이를 최소화하는 것이 정규화의 목적.
-
이런 정규화 (normalization) 과정은 총 여섯 과정이 있다.
-
그중 실제로는 3NF 까지만 사용한다 .(3NF가 되면 정규화가 된 것으로 간주한다)
-
각 정규형은 이전 단계들을 기본적으로 모두 만족해야만 한다.
- 모든 항목에 값이 있어야 한다.(NOT NULL)
- 중복되는 데이터가 없어야 한다.
- 개체의 속성이 한 식별자에 종속되어야 한다.
- 하나의 식별자로 하나의 데이터가 가져와지는가.
- 연도로 인해 우승국이 결정되고, 우승국으로 인해 감독이 결정되는 경우.
- 이 경우 이행 함수 종속성이라고 한다.
- 우승국이 변경되면 불필요하게 감독까지 변경되어야 한다.
역정규화
- 정규화(normalization)는 이상 현상을 최소화하기 위해 테이블을 쪼개는 작업이다.
- 하지만 지나친 정규화는 쿼리를 복잡하게 만들고 성능을 저하시킨다.(6개의 테이블을 join 한다면?)
- 그래서 테이블을 합하는 작업을 역정규화 (denormalization)라고 한다.
설계
- 테이블에 들어갈 값과 제약조건 연간관계를 정의하는 것을 우리는 모델링이라고 한다.
- 모델링한 설계 도면을 우리는 ERD 라고 부른다.
- SNS 서비스를 각자 설계해 보자.
- 설계한 내용에 대한 테스트 및 검증이 필요하다.
- 우리가 만든 SNS 서비스의 데이터베이스에 대해서는 검증 테스트가 필요할 것이다.
설계1
설계2
- 회원은 일반회원과 판매자 회원이 있다.
- 일반 회원은 아이디, 비밀번호, 배송지 주소, 연락처 필드가 있다.
- 판매자 회원은 아이디, 비밀번호, 계좌번호 필드가 있다
- 판매 물품에는 품목 아이디, 품목 이름, 가격, 판매자 아이디, 소속 카테고리가 존재한다.
- 판매 품목에는 대분류, 중분류, 소분류를 가지고 있다
- 카테고리는 대분류, 중분류, 소분류를 고를 때 마다 해당 분류의 물품이 바로 나타나야 한다.
- 판매 품목은 판매자 회원이 올릴 수 있다
- 구매 테이블에는 사용자아이디, 물품아이디, 물품이름, 가격, 구매 날짜, 수량 등이 저장된다.
- 판매자는 본인이 판매한 물품들과 매출을 계산할 수 있어야 한다.
- 판매 품목에는 구매후기가 달린다.