프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
09_정규화
09_정규화

2023. 3. 29. 16:07부트캠프/DevOps 과제

RDBMS에서 스키마 디자인 중 필드값으로 배열을 넣어야 하는 경우가 발생했습니다. 선배 개발자에게 물어보니, 이 경우에는 정규화가 필요하다고 조언해줍니다. 다음은 사용자 정보가 담긴 user 테이블입니다. 사례를 통해 어떻게 테이블을 정규화할 지 고민해보세요.

  • idnameageemailhobby
    1 김코딩 19 kimcoding@aaa.com 코딩  
    2 박해커 28 hackerpark@bbb.com 해킹  
    3 최고수 18 choigosu@ccc.com [코딩, 해킹] <--- 이 문제를 어떻게 해결할까요?

 

  1. 테이블 분리 방법

최고수의 취미가 두 가지인 경우, 사용자 테이블에 취미 필드를 추가하여 배열 형태로 저장하는 대신, 취미 테이블을 생성하고 사용자 ID와 함께 각 취미를 하나씩 저장할 수 있습니다. 이 방법은 정규화 과정에서 "1:N 관계"를 만들기 위해 사용됩니다.

  • user 테이블

id name age email

1 김코딩 19 kimcoding@aaa.com

2 박해커 28 hackerpark@bbb.com

3 최고수 18 choigosu@ccc.com

  • hobby 테이블

user_id hobby

1 코딩

2 해킹

3 코딩

3 해킹

  1. 값 분리 방법

데이터베이스를 정규화하는 또 다른 방법은 값 분리입니다. 이 경우, 배열 값이 하나의 필드에 들어있는 경우, 이를 여러 개의 레코드로 분할하여 저장합니다.

  • user 테이블

id name age email hobby

1 김코딩 19 kimcoding@aaa.com 코딩

2 박해커 28 hackerpark@bbb.com 해킹

3 최고수 18 choigosu@ccc.com 코딩

3 최고수 18 choigosu@ccc.com 해킹

위와 같이 user 테이블의 hobby 필드를 분할하여 두 개의 레코드로 나눌 수 있습니다.