DevOps_04_김재환
2023. 3. 29. 16:07ㆍ부트캠프/DevOps 과제
RDBMS에서 스키마 디자인 중 필드값으로 배열을 넣어야 하는 경우가 발생했습니다. 선배 개발자에게 물어보니, 이 경우에는 정규화가 필요하다고 조언해줍니다. 다음은 사용자 정보가 담긴 user 테이블입니다. 사례를 통해 어떻게 테이블을 정규화할 지 고민해보세요.
1 | 김코딩 | 19 | kimcoding@aaa.com | 코딩 | |
2 | 박해커 | 28 | hackerpark@bbb.com | 해킹 | |
3 | 최고수 | 18 | choigosu@ccc.com | [코딩, 해킹] | <--- 이 문제를 어떻게 해결할까요? |
최고수의 취미가 두 가지인 경우, 사용자 테이블에 취미 필드를 추가하여 배열 형태로 저장하는 대신, 취미 테이블을 생성하고 사용자 ID와 함께 각 취미를 하나씩 저장할 수 있습니다. 이 방법은 정규화 과정에서 "1:N 관계"를 만들기 위해 사용됩니다.
id name age email
1 김코딩 19 kimcoding@aaa.com
2 박해커 28 hackerpark@bbb.com
3 최고수 18 choigosu@ccc.com
user_id hobby
1 코딩
2 해킹
3 코딩
3 해킹
데이터베이스를 정규화하는 또 다른 방법은 값 분리입니다. 이 경우, 배열 값이 하나의 필드에 들어있는 경우, 이를 여러 개의 레코드로 분할하여 저장합니다.
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 필드를 분할하여 두 개의 레코드로 나눌 수 있습니다.