[4] 데이터 모델링

hyunsooo·2023년 6월 14일
0
post-thumbnail

1. 데이터베이스 설계 단계

데이터베이스 설계는 조직 및 사용자의 다양한 요구 사항을 고려하여 데이터베이스를 구성하는 방법입니다. 데이터베이스 설계 단계는 5가지 단계로 이루어져 있습니다. 단계 별로 설계 과정 중 오류가 발생하게 되어 수정이 필요하다면 이전 단계로 되돌아가 설계 내용을 변경할 수 있습니다. 1단계부터 3단계까지가 데이터베이스 설계의 핵심 단계이며, 5단계의 경우 SQL문을 활용하여 데이터베이스를 생성하는 과정입니다.

1.1. 요구사항 분석

요구사항 분석 단계는 데이터베이스의 용도를 파악하여 어떤 데이터가 포함되어야 하는지 명확하게 명세를 하는 단계입니다. 해당 단계에서는 현실 세계의 정보들을 반영하여 구체적인 명세서를 정의하게 됩니다. 따라서 1단계에의 결과물은 요구 사항 명세서입니다.

1.2. 개념적 설계

요구사항 명세서를 바탕으로 개념적 설계 단계가 수행됩니다. 이 단계에서는 현실 세계의 정보들을 사람의 머리로 이해할 수 있도록 설계하는 단계입니다. 따라서 DBMS에 독립적인 개념적 구조를 설계하게 됩니다. 개념적 설계 단계의 결과물은 개념적 스키마(E-R 다이어그램)입니다.

1.3. 논리적 설계

개념적 스키마를 바탕으로 논리적 설계 단계가 수행됩니다. 논리적 설계 단계는 DBMS에 적합한 논리적 구조를 설계하여 논리적 스키마(릴레이션, 테이블 스키마)를 결과물로 가지게 됩니다.

1.4. 물리적 설계

물리적 설계 단계는 DBMS로 구현 가능한 물리적 구조를 설계하는 단계로, 물리적 스키마의 결과물을 가지게 됩니다.

1.5. 구현

실제 SQL문을 작성하고 DBMS에서 실행하여 데이터베이스를 생성하는 단계입니다.

2. 데이터 모델링과 데이터 모델의 개념

2.1. 데이터 모델링

데이터 모델링은 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정입니다. 따라서 데이터 모델링은 데이터베이스 설계의 핵심 과정입니다. 예를 들어, 코끼리를 데이터 모델링을 하기 위해서는 추상화(abstraction)를 통해 코끼리의 특징을 데이터베이스로 옮길 수 있습니다. 이처럼 추상화하는 과정을 개념적 모델링이라고 하며, 현실 세계의 정보를 사람의 머리로 이해할 수 있도록 하는 과정이기 때문에 개념적 설계 단계입니다.

이후에, 추상화된 정보들을 가지고 컴퓨터에서 운영할 수 있는 데이터베이스 형태로 변환하는 과정을 논리적 모델링이라고 하며, 논리적 설계 단계라고 할 수 있습니다.

2.2. 데이터 모델

데이터 모델은 데이터 모델링의 결과물을 표현하는 도구를 의미합니다.

개념적 데이터 모델은 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구이며 대표적으로 개체-관계(E-R) 모델이 있습니다.
논리적 데이터 모델은 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구이며 대표적으로 관계 데이터 모델이 있습니다.

3. 개체-관계 모델(E-R model; Entity-Relationship model)

피터 첸이 제안한 개념적 데이터 모델로 개체와 개체간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법입니다. 따라서 개체-관계 모델에서의 핵심 요소는 개체, 속성, 관계입니다.

3.1. 개체-관계 다이어그램(E-R diagram)

개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현하는 방법입니다. 다이어그램은 속성과 개체, 관계로 이루어져 있으며 각각 표현되는 모양이 다른 것을 확인할 수 있습니다. 특히 타원형에 밑줄이 쳐져 있는 경우 로 활용되는 속성입니다.

다이어그램에서 N-M으로 표현된 관계는 한명의 고객은 여러 개의 책을 구매할 수 있고, 한권의 책은 여러명의 고객에게 팔릴 수 있는 관계를 표현합니다. N-1도 하나의 출판사는 여러 개의 책을 공급할 수 있고 하나의 책은 하나의 출판사를 통해서 공급받을 수 있는 관계를 의미합니다.

3.1.1. 개체(Entity)

위의 예시에서 개체는 고객, 책, 출판사를 의미합니다. 즉, 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물 또는 개념(사건) 같이 구별되는 모든 것을 개체로 표현할 수 있습니다. 따라서 개체들은 서로 구별되는 고유 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태(속성)을 하나 이상 가지고 있습니다.

예를 들어, 서점이라는 현실 세계를 개념적으로 모델링하기 위해서 필요한 개체는 고객이 될 수 있습니다. 또는 학교를 개념적 모델링하기 위해서 필요한 개체는 학과, 과목, 학생, 교수 등이 될 수 있습니다.

3.1.2. 속성(Attribute)

속성은 개체나 관계가 가지고 있는 고유의 특성을 의미합니다. 더이상 쪼갤 수 없는 가장 작은 논리적 단위를 의미합니다. E-R 다이어그램에서는 타원으로 표현하고 타원 안에 이름을 표기합니다.

개체이름과 속성으로 하나의 개체가 정의된 것을 개체 타입(type)이라고 합니다. 이렇게 정의된 개체 타입이 실제 값을 가짐으로 실체화된 개체를 개체 인스턴스(instance), 개체 인스턴스를 모아놓은 것을 개체 집합(set)이라고 합니다.

3.1.3. 속성의 분류

속성은 속성 값의 개수에 따라 단일/다중 값 속성으로 분류될 수 있습니다. 예를 들어, 고객명이라는 속성은 단일 값 속성입니다. 반면에, 연락처라는 속성은 상황에 따라 여러 개를 가질 수 있는 속성이기 때문에 다중 값 속성으로 분류 될 수 있습니다. 다이어그램에서 다중값 속성은 이중 타원으로 표현됩니다.

속성은 의미의 분해 가능성으로도 분류될 수 있는데 고객의 아이디와 같은 속성은 더이상 분해할 수 없으므로 단순 속성이 될 수 있습니다. 반면에 고객의 생년월일 속성은 년도와 월, 일로 분해될 수 있으므로 복합 속성입니다.

유도속성으로 분류되는 경우는 주민등록 또는 생년월일 속성을 통해 나이라는 속성이 유도될 수 있으므로 나이는 유도속성으로 분류될 수 있습니다. 유도 속성은 값이 별도로 저장되지는 않으며, 다이어그램에서는 점선 타원으로 표현됩니다.

3.1.4. 널 속성(null attribute)

널 속성은 널 값이 허용되는 속성으로 아직 결정되지 않거나 모르는 값 또는 조재하지 않는 값을 의미합니다. 따라서 널(null) 값은 공백이나 0과는 의미가 다릅니다.

3.1.5. 키 속성(key attribute)

위에서 언급한 키 속성은 각 개체 인스턴스를 식별하는데 사용되는 속성입니다. 그렇기 때문에 모든 개체 인스턴스의 키 속성 값은 다를 수 밖에 없습니다. 예를 들어, 고객 개체의 고객 아이디와 같은 속성이 키 속성이 됩니다. 만약 개체 속성들 중 키 속성으로 지정할 수 있는게 없다면 두 가지 이상의 속성을 묶어서 키 속성으로 지정할 수 있습니다. 다이어그램에서는 밑줄 친 타원으로 표현됩니다.

3.1.6. 관계(relationship)

관계는 개체와 개체가 맺고 있는 연관성을 의미합니다. 개체 집합들 사이의 대응 관계(매핑)을 나타내게 됩니다. 예를 들어, 고객 개체와 책 개체 간의 관계를 구매로 나타낼 수 있습니다. 다이어그램에서는 마름모로 표현됩니다.

3.1.7. 관계의 유형

관계에 참여하는 개체 타입의 수 기준

  • 이항 관계 : 개체 타입 두 개가 맺는 관계

  • 삼항 관계 : 개체 타입 세 개가 맺는 관계

  • 순환 관계 : 개체 타입 하나가 자기 자신과 맺는 관계

매핑 카디널리티(개체 간 관련 행의 수) 기준

  • 일대일(1:1) 관계 : 개체 A의 각 인스턴스가 개체 B의 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 인스턴스도 개체 A 인스턴스 하나와 관계를 맺을 수 있다. (e.g. 교수와 과목)

  • 일대다(1:n) 관계 : 개체 A의 각 인스턴스가 개체 B의 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 인스턴스는 객체 A의 인스턴스 하나와 관계를 맺을 수 있다. (e.g. 부서와 사원)

  • 다대다(n:m) 관계 : 개체 A의 각 인스턴스가 개체 B 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 인스턴스도 개체 A의 인스턴스 여러 개와 관계를 맺을 수 있다. (e.g. 책과 고객)

3.1.8. 관계의 참여 특성

  • 필수적 참여(전체 참여)

모든 개체 인스턴스가 관계에 반드시 참여해야 하는 것을 의미합니다. 예를 들어, 데이터베이스의 모든 고객은 한번이라도 구매를 했던 고객이라면 필수 참여라고 할 수 있으며, 다이어그램에서 이중선으로 표현할 수 있습니다.

  • 선택적 참여(부분 참여)

개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미합니다. 예를 들어, 고객이 구매하지 않는 책이 존재할 수 있는 관계를 나타냅니다.

3.1.9. 관계의 종속성

  • 약한 개체 (weak entity) : 다른 개체의 존재 여부에 의존적인 개체

  • 오너 개체 (owner entity) : 다른 개체의 존재 여부를 결정하는 개체

오너 개체와 약한 개체는 일반적으로 일대다 관계를 가지고 있습니다. 따라서 약한 개체는 오너 개체와의 관계에 필수적으로 참여하는 특징이 존재합니다. 약한 개체는 오너 개체의 키를 포함하여 키를 구성하게 됩니다. 다이어그램에서 약한 개체는 이중 사각형으로 표현하고 약한 개체가 오너 개체와 맺는 관계는 이중 마름모로 표현합니다.

위의 다이어그램처럼 직원의 부양가족을 관리하고 있는 상황일 때, 직원 개체가 존재하지 않으면 부양가족 개체는 의미가 없어집니다. 따라서 직원 개체는 오너 개체이며 부양가족은 약한 개체가 됩니다. 또한 한명의 직원은 여러 명의 부양가족을 가질 수 있기 때문에 일대다 관계입니다.

직원은 부양가족이 있을 수도 있고 없을 수도 있지만 부양가족 개체는 반드시 부양을 하는 직원과 관계를 맺게 됩니다. 따라서 부양가족은 부양관계에 필수적 참여를 하기 때문에 이중선으로 나타냅니다.

부양가족 개체의 속성은 이름과 생년월일이 있을때 이 속성만으로 키 속성을 구성하는 것이 아니라 직원 개체의 키(직원이름)를 포함하여 부양가족 개체를 구별할 수 있습니다.

profile
CS | ML | DL

0개의 댓글