ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20일차 - 정규화
    프로그래밍 언어/데이터베이스(SQL, MARIADB) 2024. 2. 22. 09:22

    모든 정규화는 이전 정규화를 만족해야한

    제 1 정규화 

    ■ 모든 항목에 값이 없어야 하며, 중복열이 없어야한다

    ■ 없거나 많을 경우 대응되냐

    -> 실무에서는 오히려 NULL 이 들어가야할 수도 있다

    전화번호 하나만 들어가면 다른 값이 NULL 이고, 하나를 두개를 중복해서 만들어진

    여러가지 상황, 하나 들어가는지 아무것도 안들어가지는지

    없을수도 딱 하나 있을때 식별

    없을수도 여러개 있을 수 도 있는 경우 비식별

    논리적 설계

    아기가 태어났을때 태명으로 그 사람의 평생의 이름이 되진 않지만, 물리적 설계전까지 쓰인다

    제 2 정규화

    개체의 속성이 한 식별자에 종속되어야 한다

    -> 한 컬럼에 한 기본키를 사용해야한다, 복합키보다 단일키를 사용해야한다 애지간하면 자제해라

    -> 설계는 뭐다 끼워맞추지 말고 유연하게 해라

    -> 복합키를 써야하는 상황인가?

    1) 기본키를 뭐를 잡을까?

    2) 이 기본키가 중복이 생기지 않으려면 어떻게 쪼개야할까?

    3) 쪼갰을때 문제는?

    제 3 정규화

    고객 번호를 변경하면 이름이 변경된다

    그에 따라 등급도 변경해야한다 

    1115번을 바꿨다 이름도 바뀔 수 있다 여기에 따라서 등급도 할인율도 바꾸어야한다

     

    어떻게 쪼개줘야 고객번호와 이름 바꾸면 안바꿔도 등급 할인율을 바꿀까?

    오직 속도를 위해서 역 정규화를 진행하기도 한다

    테이블 쪼개기는 중복이 생길거 같을때

    PK 는 하나만 꼭 집어야하는 경우만 해야한다(인덱스 걸린다)

    보기는 새로운 테이블을 만들어야한다고 착각하기

    개발하는것까지 생각하면서 해야한다

     

    우리는 일반회원의 판매자 회원 테이블을 나눌 것인가

    카테고리에서 해당 분류의 물품이 바로 나타나야 한다

    판매 품

Designed by Tistory.