DB3-1~3-4
[자바/DataBase] DB (Chap03-1. 논리적 모델링)핵심
- 하나의 엔티티에서는 하나의 정보만을 담도록 정규화를 해야함
- 조회를 많이 해야할것 같으면 엔티티를 많이 쪼개면 안됨
- 하지만 정규화 할 때는 엔티티를 쪼갰다면 이후에 물리 디비에서 쪼개둔 걸 조인을 많이 할거 같으면 다시 합치거나 중복된 속성을 가져다 쓰는 반정규화를 하면 됨
- 실질적으로는 3정규형까지만 잘 알면 됨
1. 삭제 이상
- 지우려고 하는 정보를 지울 때 delete하면 한 행이 지워지는거라 다른 정보들도 함께 삭제됨
즉, 지우려는 정보 이외의 다른 것 까지 지워지는 현상
2. 삽입 이상
- 내가 원하는 정보만 입력하는 게 아니라 굳이 다른 정보까지 입력해야만 함
- 다른 정보에 null값을 줘야하는 경우가 생김
3. 갱신 이상
- 하나라도 바꿔주지 않으면 일관성이 맞지 않는 경우가 발생
- 그런데, 값을 잘 보면 사번이 주식별자 역할을 하지 못함
- 취미라는 속성때문에 같은 정보가 계속 중복발생됨
- 취미가 여러 개인 사람, 여러 개 아닌 사람이 발생해서 메모리 낭비가 심함
- 그래서 어떤 속성때문에 반복되는 사원정보를 부모 엔티티로 뽑아내는 과정이 필요함 => 1정규화 과정
- 방법1: 취미를 PK로 한 경우
- 방법2: 사원별 취미코드를 PK로 한 경우
- 학생이 여러 개의 자격증을 취득 가능하니 1: N관계
- 1번 이라는 자격증 코드를 1001이라는 학번이 가질 수 있고, 1002학번도 가질 수 있어서 주식별자가 위배됨
- 그래서 식별관계로 바꿔야함
- 지금처럼 늘 비-식별관계로 먼저 해본 후 검토시에 주식별자가 위배될 거 같으면 그때 취소하고 식별관계로 교체하는 습관이 중요!
[자바/DataBase] DB (Chap03-2 논리적 모델링)
이걸로 1차 정규화를 해보세요.
- 라이어에도 출연하는 사람이 옥탑방에도 출연할 수 있어서 비-식별관계로 하면 주식별자의 역할을 잃는다.
그래서 식별관계로 바꿔야함
- 재료 때문에 반복되는 요리 엔티티를 빼야함
[자바/DataBase] DB (Chap03-3. 논리적 모델링)
제 2 정규화 : 주식별자가 아닌 속성 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 것.
품목명이랑 품목단가는 품목코드에 종속된다.
-> (제거라는 표현 말고 분리라는 표현이 나음)
품목이라는 부모 엔티티로 뽑아낸 후 관계설정을 통해 식별관계로 나타내보자.
각 이상별로 살펴보고 넘어가자
상상이상
- 품목에 대한 정보를 입력하려면 주문에 대한 정보까지 입력해야함 ->(주문에 대한 정보는 NULL값)
- 주문에 대한 정보를 입력하려면 품목에 대한 정보를 일일히 입력해야함
갱신이상
- 품목단가를 수정하려면 다 수정해야함. 하나라도 수정을 잘못하면 ->(일관성 침해)
삭제이상
- 품목에 대한 정보를 삭제하려면 -> 주문에 대한 정보도 같이 삭제가 됨.
주문에 대한 정보를 삭제하려 할 때 -> 품목에 대한 정보도 같이 삭제됨.
장바구니에 여러 개의 제품들이 담기듯이 여러 개의 제품을 주문하는 순간 이 주문번호라는 주식별자는 주식별자의 의미를 잃기때문에
품목코드로 주문품목과 품목을 식별관계로 연결한다.
주식별자가 2개면 2차정규화의 대상이 됨.
주식별자의 일부에 종속되는 속성이 없으면 굳이 2차 정규화를 할 필요없음!
아래 사진으로 3개의 2차 정규화 검토 실습을 진행함
[자바/DataBase] DB (Chap03-4. 논리적 모델링)
3-5~3-7
/4-1~4-4,5-1