3.1.3 중복 데이터 저장 최소화하기
지금까지 봤듯이 데이터를 관리하는 데 테이블을 사용하면 편리합니다. 그런데 한 가지 더 짚고 넘어갈 내용이 있습니다. 1장에서 RDBMS의 특징 중 하나는 ‘테이블을 이용해 중복 데이터 저장을 최소화한다’였습니다. 도대체 어떤 식으로 중복 데이터를 최소화해서 테이블에 저장하는지 알아보죠.
표 3-1에 우리나라에 있는 도시가 나와 있는데, 이는 데이터베이스에서 우리나라의 도시만 가져오기 위해 CountryCode 칼럼 값이 ‘KOR’인 건을 조회한 결과입니다. 그런데 ‘KOR’은 국가 코드이지 국가명이 아닙니다.
예제 데이터에 담긴 우리나라의 영문 국가명은 ‘South Korea’입니다. 따라서 다음처럼 국가명이 South Korea로 나와야 하는데, 왜 city 테이블을 만든 사람은 KOR이라고 넣었을까요?
▼ 표 3-2 국가명을 도시 정보에 담은 예
ID |
Name |
CountryName |
District |
Population |
2331 |
Seoul |
South Korea |
Seoul |
9981619 |
2332 |
Pusan |
South Korea |
Pusan |
3804522 |
2333 |
Incheon |
South Korea |
Incheon |
2559424 |
2334 |
Taegu |
South Korea |
Taegu |
2548568 |
2335 |
Taejon |
South Korea |
Taejon |
1425835 |
2336 |
Kwangju |
South Korea |
Kwangju |
1368341 |
테이블에 KOR 대신 South Korea를 넣으면 저장 공간을 많이 차지합니다. KOR은 3글자지만, South Korea는 공백 포함 11글자입니다. 우리나라는 영문 국가명이 11자로 짧은 편에 속하지만, 아주 긴 영문 국가명을 가진 나라도 있습니다. 도미니카 공화국은 Dominican Republic으로 18자, 콩고는 Congo, The Democratic Republic of the로 37자나 되죠.