-
데이터 모델링1 - 데이터 모델링과 일상의 예시Data Base/관계형 데이터 모델링 2023. 9. 6. 11:02
자동차 동호회의 모델링
A자동차 동호회는 회원 명부를 체계적으로 관리하기 위해 고민중이다. 최초의 회원정보 표는 다음과 같은 모양이다.
표 1-1 A동호회의 회원정보표
성명 나이 주소 E-MAIL 휴대폰번호 보유차량
제조사차종 색상 배기량 년식 B씨 40 B아파트 bbb@gmail.com 010~ 랜드로버 이보크 WHITE 2200 2021 C씨 35 C빌라 ccc@gmail.com 010~ 아우디 A7 SILVER 3000 2022 운영자 K는 위와 같은 Colum의 정보들과 함께 1)회원 정보를 정리하였는데 이내 문제에 부딪혔다. B씨는 소유한 차 가 두대라는 것이다.
표 1-2 보유 차량 수 만큼 개인 정보가 중복됨
성명 나이 주소 E-MAIL 휴대폰번호 보유차량
제조사차종 색상 배기량 년식 B씨 40 B아파트 bbb@gmail.com 010~ 랜드로버 이보크 WHITE 2200 2021 B씨 40 B아파트 bbb@gmail.com 010~ 포르쉐 박스터 WHITE 270 2019 C씨 35 C빌라 ccc@gmail.com 010~ 아우디 A7 SILVER 3000 2022 이를 관리하기 위해서 [표 1-2]와 같이 두 개의 행으로 표현해야한다. 이 처럼 차가 두대 이상인 회원 여러 Row로 관리한다면 이메일 주소와 휴대폰번호들의 개인 정보가 차량의 대수 만큼 반복 될 수 밖에 없다.
회원이 보유한 차량 수만큼 개인 정보가 중복되는 것도 문제였지만 K씨는 회원 명부라는 관점보다 회원의 차량 정보가 더 우선시 되고 있다는 점도 문제로 인식했다. 표에서 한 줄을 차지하는 정보의 단위가 개별회원이 아닌 회원의 차량이 된 것이다.
표1-3 회원 개인 정보표
성명 나이 주소 E-MAIL 휴대폰번호 B씨 40 B아파트 bbb@gmail.com 010~ C씨 35 C빌라 ccc@gmail.com 010~ 표1-4 보유 차량 정보표
성명 보유차량
제조사차종 색상 배기량 년식 B씨 랜드로버 이보크 WHITE 2200 2021 B씨 포르쉐 박스터 WHITE 270 2019 C씨 아우디 A7 SILVER 3000 2022 한참을 고민한 K씨는 2)성격이 다른 두 정보를 함께 관리하려하다 보니 일어난 현상임을 깨닫고 위와 같이 회원개인정보[표 1-3]와 보유차량 정보를 [표 1-4]를 3)각각의 표로 분리하기로 했다.
보유 차량 정보표에는 소유자를 확인할 수 있도록 소유자의 성명을 함께 입력해서 회원 개인 정보표와의 4)연결고리로 활용하기로 했다.
표 1-5 회원번호가 추가된 회원 개인 정보표
회원번호 성명 나이 주소 E-MAIL 휴대폰번호 1001 B씨 40 B아파트 bbb@gmail.com 010~ 1002 C씨 35 C빌라 ccc@gmail.com 010~ 1003 C씨 28 B빌라 abcgmail.com 010~ 표 1-6 성명 대신 회원번호표를 사용한 보유 차량 정보표
회원번호 보유차량
제조사차종 색상 배기량 년식 1001 랜드로버 이보크 WHITE 2200 2021 1001 포르쉐 박스터 WHITE 270 2019 1002 아우디 A7 SILVER 3000 2022 1003 AUDI A6 SILVER 3000 2019 문제를 해결하고 표를 좀 더 정리하다 보니, 이번에는 이름이 똑같은 회원이 나타났다. 회원 개인 정보의 성명 속성만으로는 그들을 구분할 수 없게 되었고, 더 큰 문제 는 보유 차량 정보의 차량 역시 누구의 소유인지 정확히 알 수 없게 되었다.
위 표에서 C라는 이름이 중복되고 있으므로 회원번호가 없이 C라는 이름으로 만 두표를 연결한다면 C씨(35)세의 차량이 무엇이고, C씨(28)세의 차량이 무엇인지 알수 없게된다.
성명에 나이를 묶에서 구분할 수도 있겠지만, 아니까지 같지 말라는 법이 없으니까 궁극적인 해결책이 될 수 엇다. 결국 회원을 명확히 식별하기 위해 K는 5)회원번호라는 고유값을 가지는 새로운 속성을 관리하기로 했다.
표 1-7 협력업체 정보표
업체명 업체주소 업종 대표자명 연락처 튜닝 팩토리 서울시 양천구 목동 튜닝 deny 010~ 시유 타이어 서울시 용산구 원효로 타이어 sellys 010~ 그런데 보유 차량을 제대로 분석하려면 '아우디'와 'AUDI'가 같은 제조사임을 알아야 하며, 그러기 위해서는 제조사 이름 표기를 표준화해야한다. 예를 들어 이메일, email, e-mail과 같이 조금씩 다르게 표현되어 있다면 분석하고 집계하여 의미 있는 정보로 만들 때 어려움을 껵게 될 것이다. 그래서 K는 6)제조사 이름을 '아우디'로 통일하기로 했다.
K는 정리를 끝내려고 했는데, 최근 들어 동호회가 활성화 되면서 튜닝용품, 타이어샵, 외장과리업체 등 자동차관련업체들이 광고를 위해 들어오기 시작한 것이 생각났다. 이들 업체 정보도 관리할 필요성을 느껴 회인 개인 정보표에 담으려 하다가 이내 생각을 바꾸었다. 협력업체 정보를 개인회원 정보로 등록하기에는 다소 이질적이라 느껴서 7)별도의 표로 관리하기로 했다.
정리
동호회 회원과 보유 차량 데이터를 관리하기 위해 관련 속성ㅈ들을 하나의 표로 정의하였으며 이질적인 속성과 중복, 반복되는 값들을 분리하여 별도의 표에 저장되도록하였다. 2차원 표에 데이터를 어떻게 담는 것이 좋을지 구조적으로 고민했는데, 이것이 바로 데이터 모델링이다. 관계형 데이터 모델링은 2차원 테이블(표) 구조에 관리할 데이터를 어떻게 담는 것이 최적인지 고민하는 과정이다.
동호회 사례와 데이터 모델링의 관계정리
1)회원 정보를 정리
-> 표는 관계형 데이터베이스(RDB)의 relation을 의미한다.
2)성격이 다른 두 정보를 함께 관리하려하다 보니 일어난 현상
-> 이질적인 정보가 혼재되어 있다면 데이터 간의 종속성을 기준으로 분리, 즉 정규화해야 함을 의미한다.
3)각각의 표로 분리
-> '보유 차량 정보'표를 분리한 것은 제 1정규화가 적용된 결과다.
4)연결고리로 활용
-> 표 사이의 연결고리는 데이터 모델의 관계(relationship)속성에 해당한다.
5)회원번호라는 고유값을 가지는 새로운 속성을 관리
-> 회원번호는 엔티티 주 식별자(primary identifier)에 해당한다.
6)제조사 이름을 '아우디'로 통일
-> 'AUDI'를 '아우디'로 표기하로 한 것은 데이터 표준화 개념 중 코드(code)와 관련 있다.
7)별도의 표로 관리
-> '협력업체 정보'표를 별도로 만든 것은 엔티티 개면이 반영된 것이다.
💡 tip) 모델링이 잘 되지 않는 이유와 상화
1. 업무를 잘 이해하지 못했을 경우나 업무 요건이 명확하지 않을때 즉 '업무'적인 이유
2. 모델링 이론을 정확히 숙지하지 못한 경우
3. 1번과 2번이 혼재된 경우'Data Base > 관계형 데이터 모델링' 카테고리의 다른 글
데이터 모델링3- 데이터 저장 구조 (0) 2023.09.08 데이터 모델링2 - 데이터 이해하기 (1) 2023.09.06 DB 테이블 관계의 종류 (0) 2022.05.18 논리적 데이터 모델링 (0) 2022.01.01 Optionality (0) 2021.12.30