Database
[데이터베이스 개론] Chapter4 - 데이터 모델링
로승리
2023. 4. 20. 19:45
데이터 모델링과 데이터 모델의 개념
- 현실세계의 데이터를 컴퓨터 데이터베이스로 옮기는 변환 작업을 데이터 모델링이라 한다. 현실의 데이터에서 중요한 부분만 선별하는 것을 추상화라 하며 추상화를 통해 데이터 모델링을 진행한다.
- 데이터 모델링은 두 단계로 나누어 진행되는데, 현실에서 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 개념적 모델링이라 하고 개념 세계에서 데이터베이스에 저장할 구조를 결정하고 표현하는 작업을 논리적 모델링이라 한다.
- 현실 세계의 데이터를 모델링 하기 쉽게 데이터 모델이라는 도구의 도움을 받는다. 데이터 모델은 두 가지로 나뉘는데 현실 세계를 개념적 데이터 모델링하여 데이터베이스의 개념적 구조로 표현하는 개념적 데이터 모델과 개념적 구조를 논리적 데이터 모델링하여 데이터베이스의 논리적 구조로 표현하는 논리적 데이터 모델이 있다.
- 데이터 모델의 구성 요소
- 데이터 구조
- 개념적 데이터 모델 : 현실 세계를 개념 세계로 추상화 했을때 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조
- 논리적 데이터 모델 : 데이터를 어떤 모습으로 저장할 것인지 표현하는 논리적 구조
- 자주 변하지 않고 정적
- 연산
- 실제로 표현된 값을 처리하는 작업이며, 연산에 따라 값이 계속 변경되므로 동적
- 제약조건
- 구조적 측면의 제약조건 : 데이터 무결성 유지
- 의미적 측면의 제약조건 : 연산 허용 범위
- 데이터 구조
- 데이터 모델링과 데이터 모델의 예시
- 아파트 설계도 작성 -> 개념적 데이터 모델링
- 설계도를 그리는 방법이나 도구 -> 개념적 데이터 모델
- 설계도를 바탕으로 모델하우스를 만드는 것 -> 논리적 데이터 모델링
- 모델하우스를 만들 때 사용하는 방법이나 도구 -> 논리적 데이터 모델
- 개념적 데이터 모델링 + 논리적 데이터 모델링 = 데이터 베이스 설계
- 개념적 데이터 모델의 예시 : 개체-관계 모델
- 논리적 데이터 모델의 예시 : 관계 데이터 모델
개체-관계 모델
- 개체-관계 모델은 개체와 개체관의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법이다.
- 개체
- 개체는 현실 세계에서 구별되는 물리적, 개념적으로 존재하는 모든 것을 의미하며 개념적 모델링을 하는데 가장 중요한 요소이다.
- 개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 속성을 하나 이상 가지고 있으며 이것을 개체 타입이라 한다.
- 개체를 구성하는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(entity instance)라 한다.
- 개체 인스턴스들을 모아놓은 것을 개체 집합(entity set) 이라 한다.
- 개체와 속성은 개념적인 수준에서 사용되며 구현적 수준에서 사용되는 레코드와 필드에 대응된다.
- 개체 -> 레코드, 개체 타입 -> 레코드 타입, 개체 인스턴스 -> 레코드 인스턴스
- 속성 -> 필드
- 속성
- 속성은 개체가 가지고 있는 고유한 특성이며 관련있는 속성들을 모아 개체를 구성하면 중요한 의미를 표현할 수 있다. 속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식된다.
- E-R 다이어그램에서 속성은 타입으로 표현하고, 타원 안에 속성의 이름을 표기한다.
속성의 분류
- 단일 값 속성과 다중 값 속성
- 단일 값 속성은 특정 개체를 구성하는 속성 값이 하나인 것이며 다중 값 속성은 속성의 값이 여러 개를 가질 수 있는 것을 말한다.
- 다중 값 속성은 E-R 다이어 그램에서 이중 타원으로 표현한다.
- 단일 값 속성 예시 : 고객 객체의 이름, 적립금
- 다중 값 속성 예시 : 고객 객체의 연락처 속성(집 전화번호, 휴대폰 전화번호), 책 객체의 저자 속성(여러명의 저자)
- 단순 속성과 복합 속성
- 단순 속성은 의미를 더는 분해할 수 없는 속성이며 단순 속성의 값은 의미가 하나이다. (적립금 속성)
- 복합 속성은 단순 속성이 여러 개 모여 의미를 분해할 수 있으며 값이 여러개의 의미를 표현한다. (주소 속성 -> 도, 시, 동으로 나눌 수 있음)
- 유도 속성
- 유도 속성은 값이 별도로 저장되는 것이 아니라 기존의 다른 속성값에서 유도되어 결정되는 속성이다. (책 객체의 가격 속성과 할인율 속성으로 계산되는 판매 가격 속성)
- 유도 속성을 계산하는데 사용되는 속성을 저장 속성이라 한다.
- 유도 속성은 필요할 때마다 계산되므로 값을 따로 저장할 필요가 없다.
- 유도 속성은 E-R 다이어그램에서 점선 타원으로 표현한다.
- 널 속성
- 널 값은 아직 결정되지 않았거나, 모르는 값, 존재하지 않는 값을 의미한다. (고객의 취미를 입력하지 않았을 때, 여자인 경우 병역 속성)
- 키 속성
- 키 속성은 모든 개체가 고유하게 가지고 있기 때문에 개체 집합에서 각 개체 인스턴스를 식별하는데 사용한다.
- 키 속성은 둘 이상의 속성으로 이루어질수 있다.(고객 아이디 속성이 없는 경우 고객명과 전화번호 속성을 조합하여 고유한 키 구성)
- 키 속성은 E-R 다이어그램에서 밑줄을 그어 표현한다.
관계
- 관계는 개체와 개체가 맺고 있는 의미 있는 연관성으로 개체 집합들 사이의 대응관계(매핑)를 의미한다.
- 요구 사항을 하나의 문장으로 만들었을때 동사에 해당하는 것이 관계이다.(고객은 책을 구매한다. -> 구매)
- 관계를 여러 개체 사이에서 정의되는 관계 타입과 실제 속성 값으로 구성된 특정 개체 인스턴스들 간에 맺어진 실제 관계인 관계 인스턴스로 구분하여 표현하기도 한다.
- 관계도 개체처럼 속성을 가질수 있으며 관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 된다.
- 관계는 E-R 다이어그램에서 마름모로 표현한다.
- 관계의 유형
- 관계의 참여하는 개체 타입 기준
- 이항관계 : 개체 타입 2개가 맺는 관계
- 삼항 관계 : 개체 타입 3개가 맺는 관계
- 순환 관계 : 개체 타입 1개가 자기 자신과 맺는 관계
- 매핑 카디널리티 (관계를 맺는 두 개체 집합에서 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수) 기준
- 일대일 (1:1) 관계 : 각 A개체 인스턴스가 B개체 인스턴스 하나와 관계를 맺을 수 있고 그 반대도 성립하는 경우
- 관계의 참여하는 개체 타입 기준
- 일대다 (1:n) 관계 : 각 A개체 인스턴스가 B개체 인스턴스 여러개와 관계를 맺을 수 있고 B객체 인스턴스는 A객체 인스턴스 하나만 관계를 맺을 수 있는 경우
- 다대다 (n:m) 관계 : 각 A개체 인스턴스가 B개체 인스턴스 여러개와 관계를 맺을 수 있고 그 반대도 성립하는 경우
- 관계의 참여 특성
- 개체 A와 B의 관계에서 개체 A의 모든 개체 인스턴스가 반드시 관계에 참여해야 한다면 개체 A가 관계에 '필수적 참여한다' 또는 '전체 참여한다' 라고 한다.
- 개체 A와 B의 관계에서 개체 A의 일부 인스턴스가 선택적으로 관계에 참여한다면 개체 A가 관계에 '선택적 참여한다' 또는 '부분 참여한다' 라고 한다.
- 이러한 관계 참여 특성은 데이터베이스 설계 과정에서 중요하게 고려해야 하는 사항이며, 기존 개체 인스턴스를 삭제, 변경할 때 제약 사항으로도 활용된다.
- 필수적 참여 관계는 E-R 다이어그램에서 이중선으로 표현한다.
- 관계의 종속성
- 개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.
- 이는 개체 A가 존재해야 개체 B가 존재할 수 있고 개체 A가 삭제되면 개체 B도 함께 삭제되어야 함을 의미한다. 이러한 종속을 특별히 존재 종속이라 한다. 이때 다른 개체의 존재 여부에 의존적인 개체 B를 약한 개체라 하고 다른 개체의 존재 여부를 결정하는 개체 A를 강한 개체라 한다. 두 개체가 종속적인 관계를 맺고 있어 약한 개체를 종속 개체로, 강한 개체를 오너 개체로 부르기도 한다.
- 강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있다. 약한 개체는 자신이 지닌 속성만으로는 식별이 어려워 일반적으로 강한 개체의 키를 포함하여 키를 구성한다.
- 약한 개체를 구별해주는 속성을 구별자(delimiter) 또는 부분키(partial key) 라고 한다.
- 관계의 종속성은 E-R 다이어그램에서 이중 마름모로 표현한다.
- E-R 다이어그램
- E-R 다이어그램은 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과를 그림으로 표현한 것이다.
논리적 데이터 모델
논리적 데이터 모델의 개념과 특성
- 개체-관계 모델은 현실 세계를 개념적인 구조로 모델링 하는데 사용하므로 어떤 DBMS으로 DB를 구축하든 상관이 없다. 하지만 E-R 다이어그램으로 표현된 개념적인 구조를 데이터베이스에 표현하는 형태를 결정하는 논리적 데이터 모델링에서는 DBMS 종류가 중요하다.
- 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습 또는 구조다. 그리고 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 데이터베이스 스키마다. 논리적 구조는 사용하는 데이터베이스 관리 시스템에 따라 달라진다.
계층 데이터 모델
- 계층 데이터 모델은 데이터베이스의 논리적 구조가 트리 형태이다. 개체는 사각형으로 나타내고 개체들 간의 관계는 링크로 나타내는데, 링크는 일대다 관계만 표현할 수 있다.
- 계층 데이터 모델에서는 다대다 관계를 직접 표현할 수 없어 별도의 개체를 추가로 생성하여 관계를 표현한다.
- 계층 데이터 모델은 트리 구조로 표현되기 때문에 출판사 개체처럼 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않는다.
- 일대다 관계를 맺는 개체들 사이에는 상하 관계가 성립하며 부모 개체 하나가 자식 개체를 여러 개 가질 수 있지만, 모든 자식 개체는 부모 개체를 하나만 가질 수 있다는 제약 사항이 존재한다.
- 계층 데이터 모델은 개체 사이의 관계를 정의할 때 여러 제약이 존재하기 때문에 개념적 구조를 논리적 구조로 자연스럽게 모델링 하기 어려워 구조가 복잡하고, 데이터의 삽입, 삭제, 수정 등을 연산하거나 원하는 데이터를 검색하기가 쉽지 않다는 단점이 있다.
![]() |
![]() |
네트워크 데이터 모델
- 네트워크 데이터 모델은 데이터베이스의 논리적 구조가 그래프 또는 네트워크 형태이다. 개체는 사각형으로 나타내고 개체들 간의 관계는 화살표로 나타내는데 일대다 관계만 표현할 수 있다.
- 네트워크 데이터 모델에서는 계층 데이터 모델과 달리 두 개체 간의 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별한다.
- 네트워크 데이터 모델에서는 두 개체 사이의 일대다 관계들을 이용해 다대다 관계를 표현한다. 일대다 관계의 개체들을 각각 오너, 맴버라 부르고 이들 사이의 관계를 오너-멤버 관계라 부른다. 계층 데이터 모델과 달리 오너 개체 하나가 멤버 개체 여러 개와 관계를 맺을 수 있고 멤버 개체도 오너 개체 여러 개와 관계를 맺을 수 있다.
- 네트워크 데이터 모델은 같은 개체들 사이의 관계를 2개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링할 수 있다.
- 그러나 계층 데이터 모델보다 구조가 훨씬 복잡해질 수 있어 데이터의 삽입, 삭제, 수정 같은 연산과 데이터 검색이 계층 데이터 모델보다 더 어려워진다.
![]() |
![]() |
- 최근 객체지향 데이터 모델 및 객체관계 데이터 모델이 사용되기도 하지만 관계 데이터 모델도 여전히 많이 사용된다.
- 일반적인 DBMS는 논리적 데이터 모델을 하나만 지원하므로 DBMS를 먼저 선택하고 이에 맞는 논리적 데이터 모델을 선택해야 한다.
Q & A
본 도서의 내용을 정리한것이 아닌 학습 스터디를 위해 제가 작성한 질답입니다.
사실과 다른 내용이 있다면 지적 부탁드립니다 :)
Q1 : 데이터 모델링과 데이터 모델의 차이를 말해주세요.
데이터 모델링은 현실 세계에 존재하는 데이터를 데이터베이스로 옮기는 변환 과정을 말합니다. 이러한 데이터 모델링의 결과물을 표현하는데 데이터 모델이 사용됩니다.
Q2 : 개체와 속성, 필드와 레코드에 대해서 설명해 주세요.
개체는 데이터베이스에서 관리하는 대상, 속성은 개체의 특성을 기술하는 데이터 요소, 필드는 레코드에 저장된 데이터 중 하나의 값을 나타내는 데이터 단위, 레코드는 개체의 정보를 나타내는 최소 단위입니다.
Q3 : 데이터베이스에서 모르는 값은 어떤 속성이며, 존재하지 않은 값은 어떤 속성인가요?
둘 다 Null 속성입니다.
Q4 : 일대다 (1 : N) 관계의 예시를 들어주세요.
일대다 관계는 개체 A의 인스턴스가 개체 B의 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 인스턴스는 개체 A의 인스턴스 하나와만 관계를 맺을수 있는 관계를 말합니다. 예시로는 축구팀 개체와 선수 개체의 관계가 있습니다. 축구팀은 여러 선수 개체를 가질 수 있지만, 선수 개체는 하나의 축구팀만을 가질수 있으므로 일대다 관계의 예시가 됩니다.
Q5 : 키 속성이 무엇인지 설명하고, 적합한 키 속성이 없을 때는 어떻게 해야 하는지 말해주세요.
키 속성은 개체 인스턴스마다 달라 각 개체 인스턴스를 식별하는 데 사용되는 속성입니다. 적합한 키 속성이 없을 때는 두 개 이상의 속성을 조합하여 키 속성으로 사용할 수 있습니다.
출처 : 김연희, 데이터베이스 개론 3판, 한빛아카데미(2022)