관리 메뉴

흐에에에에에엥

관계형 데이터베이스(MYSQL) 제 2 정규화 본문

코딩/MYSQL

관계형 데이터베이스(MYSQL) 제 2 정규화

김미이이인서어어어억 2023. 3. 1. 11:56

DB 정리 및 설계할 때 좋은 정규화 2번째에 대해 적어보려합니다..! 

 

[제 2 정규화]

 정의 : 테이블 주제와 상관 없는건 빼내라!!!! 

 좀 있어 보이는 정의 : Partial  Dependency(부분 종속성)를 제거한 테이블

 

 [설명] 

   예를 들어 테이블에서 Composite Primary Key라고 하는 열이 3개 있다고 합시다. 

   Partial  Dependency는 말 그대로 Composite Primary Key 중에 특정 열에  종속되는 녀석을 말합니다. 

  아래 테이블을 보면 회원 uid와  구매물품이 Composite Primay Key고 한다면 두 녀석은 구매내역 테이블에서  

  행을 구분지어주는 특이한 녀석이 될겁니다.

 

  그런데 여기서 물건금액을 보면 회원 uid와 관계 없고 이름과도  관계없고 오로지 '구매  물품'에만 관계가 있는

   녀석입니다. 

     

  이런걸 보고 부분 종속이 된 데이터들을 다른 테이블로 옮겨주는 걸 제  2정규형이라고 합니다.

   (유식하게는 Partial Dependency가 제거된 녀석)  

          

 만족했을 때 : 제 2 정규형 테이블 

 - 나쁜 예

구매 내역 TABLE
회원 uid 이름 구매 물품 물건 금액
1 장철수 도끼 200000
2 나상실 망치 100000
2 나상실 마우스 300000
3 김민석 100000

- 좋은 예 

구매 내역 TABLE
회원 uid 이름 구매 물품
1 장철수 도끼
2 나상실 망치
2 나상실 마우스
3 김민석

 

물품 가격 TABLE
구매 물품 물건 금액
도끼 200000
망치 100000
마우스 300000
100000

장점 : 테이블 정의가 깔끔해진다, 나중에 물건 금액 수정을 할 때 금액만 바꾸면 되어서 아주 편안하다!  

단점 : 불러올 때 굉장히 귀찮... 하지만  코드로 불러올 때는 함수화 해서 해결

 

이래서 MYSQL에서 join같은걸 쓰는거 같긴합니다... 

'코딩 > MYSQL' 카테고리의 다른 글

관계형 데이터베이스(MYSQL) 제 1 정규화  (0) 2023.02.25
Mysql column 추가  (0) 2023.02.20
M1 Mac MySql 켜는 법  (0) 2023.02.07
Comments