Relational Data Modeling(관계형 데이터 모델링)은 Oracle, MySQL, MSSQL 등 관계형 데이터베이스를 채택하고 있는 제품들을 이용하여 현실의 정보를 정보 시스템의 데이터베이스 내에 반영할 때 사용할 수 있는 모델링 기법이다. Relational Data Modeling의 전반적인 진행과정은 다음과 같다.
- 업무파악 : 데이터베이스로 반영하고자 하는 바가 무엇인지 파악하는 데이터 모델링의 기획 단계이다.
- 개념적 데이터 모델링 : 업무파악으로 발견한 목표에서 핵심적인 개념과 관계를 추출하는 단계이다.
- 논리적 데이터 모델링 : 개념적 데이터 모델링의 결과를 조금 더 구체화하여 표의 형식으로 만드는 단계이다.
- 물리적 데이터 모델링 : 논리적 데이터 모델링에서 나온 결과를 바탕으로 데이터 베이스 제품을 산정하고 실제 데이터 베이스를 구현하는 단계이다.
개념적 데이터 모델링 - ERD (Entity Relational Diagram)
ERD는 업무파악에서 발견한 현실의 대상을 분석하여 특정 개념을 추출, 개념간의 관계를 파악함으로써 복잡한 현실을 정보 시스템의 데이터베이스 내에 효율적으로 반영될 수 있도록 도와주는 모델링 기법을 의미한다. 이를 위해 ERD는 현실을 세 가지의 관점에서 바라보는데 각각의 관점은 다음과 같다.
- 정보 (Attribute)
- 그룹 (Entity)
- 관계 (Relationship)
첫 번째, 대상을 특징 지을 수 있는 요소들을 분석하여 정보를 추출한다. 두 번째, 첫 번째 과정에서 나온 정보들을 분석하여 연관되어진 정보들이 있다면 그것들을 그룹으로 묶는다. 세 번째, 그룹들간의 관계를 파악하여 그룹을 연결한다.
예를 위해, 가상의 대학교 동아리를 생각해보자. 이 동아리는 밴드 동아리로 회원들은 매년 정기적인 공연을 위해 동아리 연습을 하는 등, 동아리 운영을 한다. 어느 날, 동아리의 관리가 개판이라 잘 되지 않는 문제 때문에 동아리에 관련된 정보를 데이터베이스에 저장해야 하는 일이 생겼다. 평소 데이터 모델링에 관심이 많던 당신은 이 부분을 ERD를 통해 개념화 해보고 싶다. 어떻게 하겠는가.
우선 동아리와 관련된 각각의 개념들을 추출해 낼 것이다. 그리고 한참 개념들을 추출하던 당신은 특정 개념들이 서로 연관되어질 수 있다는 사실을 발견했다. 당신이 구조화한 개념들과 그들의 그룹관계는 다음과 같다.
이 표에서 크게 세 덩어리에 해당하는 '회원', '역할', '악기'는 ERD에서의 그룹에 해당한다. 그리고 각각의 덩어리에 속해 있는, 가령 회원 그룹 내의 '이름', '기수', '담당역할', '담당악기'는 ERD에서의 정보에 속한다. 자, 이제 각각의 그룹들의 관계를 파악해서 ERD를 완성해보자. 그 일을 하기 전 우선, 관계를 설정하는데 반드시 필요한 Identifier과 관계 설정에서 중요한 Cardinality, Optionality를 먼저 살펴보도록 하자.
Identifier
Identifier은 식별자를 의미한다. 데이터 모델링에서는 각각의 그룹 내에서의 식별자를 갖는 것이 매우 중요하다.
왜 그럴까? 그것은 각각의 그룹들이 서로 어떠한 관계를 맺고, 어떻게 관계를 맺고 있는지를 분명히 해야 하기 때문이다. 한 가지 직관적인 예를 들어보자.
여기는 카페이다. 나는 조금 전 아메리카노를 시켰고 3번이라는 번호표를 받았다. 잠시 후, 아메리카노 한 잔이 나왔고 바리스타는 '3번'을 호명했다. 저 아메리카노는 누구의 것일까?
당연히 내꺼다. 나는 아메리카노를 시켰고 3번에 해당하는 아메리카노는 나의 것이니까. 그런데 만약, 매우 붐비는 카페에 이러한 번호표 시스템이 없다면 어떤 일이 일어날까? 수 많은 사람들이 연달아 아메리카노를 시키는 카페에서 조금 전에 나온 아메리카노가 내 것이라는 확신을 어떻게 할 수 있을까?
데이터 모델링에서도 마찬가지로 위와 같은 이유로 Identifier가 필요하다. 만약 Identifier, 즉 식별자가 없다면 이 그룹과 저 그룹의 관계가 무엇인지 대단히 불명확해질 수 있다.
식별자는 Primary key라 불리며 그룹 내에서 PK가 될 자격이 있는 식별자들이 다수 존재한다면 그것들을 통칭해서 Candidate key(후보키)라고 부른다. PK가 아닌 다른 후보키들은 Alternate key(대체키)라고 부른다. 만약 그룹 내에 식별자가 될 수 있는 정보가 없다면 임의로 식별자 정보를 만들어 지정한다.
Cardinality, Optionality
Cardinality의 사전적 의미는 '관계 수'이다. 두 그룹 사이에 각각의 요소들이 맺을 수 있는 관계의 수가 어떠한지 나타낸다. 말로 표현하면 너무 복잡하니 아래의 그림을 보자.
Optionality도 아래의 그림을 보자.
수정 : 그림에서 1번 동그라미와 2번 동그라미는 신경 쓰지 말아주시기 바랍니다! 오히려 더 헷갈리네요... 저는 B가 '주체'일 때 A와의 연결이 필수적(o)이라는 부분에서 B쪽에 o가 붙는거라고 외웠습니다!!
마지막, 실제 ERD 만들어보기
위의 표를 통해 ERD를 만들어 보았다. 원은 정보, 사각형은 그룹, 마름모는 관계를 의미한다. 정보 내의 밑줄은 Identifier을 의미한다.
'Database' 카테고리의 다른 글
Three schema Architecture | 내부, 개념, 외부 스키마란? (0) | 2021.10.07 |
---|---|
네트워크 기초 / DB 기초 공부 (0) | 2021.08.11 |