개념적 데이터 모델은 개체와 속성 그리고 개체간의 관계를 이용하여 현실세계에 존재하는 데이터를 추상화하여 개념적 구조로 표현하는 방법이다. 대표적으로 ER 모델(Entity-Relationship model, ER model)이 있다.
개체(Entity)
'사람과 사물 같이 유형의 정보를 가지고 현실세계에 물리적으로 존재하는 실체' 혹은 '개념, 사건 등과 같이 무형의 정보를 가지고 추상적/개념적으로 존재하는 실체' 를 말한다. 예를 들어 서점을 운영하는데 필요한 회원과 도서는 물리적으로 존재하는 개체에 해당되며, 대학 운영에 중요 데이터를 가지고 있는 강의, 과목, 수강 등은 추상적으로 존재하는 개체라고 할 수 있다.
개체는 발생시점에 따라 기본 개체, 중심 개체, 행위 개체로 구분할 수 있다.
- 기본 개체 : 원래 업무에 존재하는 정보이다. 기본 개체는 다른 개체와의 관계에 의하지 않고 독립적으로 생성되며 자신은 다른 개체의 부모 역할을 한다. 예를 들어 도서관 데이터에서 회원, 도서, 출판사 등은 기본 개체라고 할 수 있다.
- 중심 개체 : 해당 업무에서 중심적인 역할을 하며, 다른 개체와의 관계를 통해서 새로운 행위 개체를 생성하기도 한다. 예를 들어 택배 시스템에서 배달, 주문 같은 경우가 중심 개체이다.
- 행위 개체 : 두 개 이상의 부모 개체에서 발생되고, 내용이 빈번하게 변경되거나 데이터 양이 증가한다. 분석 초기에는 잘 나타나지 않을 수 있다. 예를 들어 주문 내역을 행위 개체라고 할 수 있다.
기본 개체는 주로 완전한 명사이고, 중심 개체는 동사형이 가능한 명사이고, 행위 개체는 기본 개체와 중심 개체가 상호작용을 거쳐서 생기게 되는 명사이다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
ERD 에서 개체 타입은 위와 같이 직사각형으로 나타내고 단수형 명사를 사용한다.
속성(Attribute)
속성은 개체의 특성이나 상태를 구체적으로 기술한다. 예를 들어 이름, 등급, 적립금 같은 것은 개체의 특성이나 상태를 설명할 수 있으므로 속성이라고 한다. 여기서 홍길동, 특별회원, 510,000원 같이 값이 들어간 것을 속성 값이라고 한다.
ERD에서 속성은 기본적으로 타원으로 나타내고, 그 속성이 소속된 개체 타입에 실선으로 연결한다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
개체 인스턴스를 다른 개체 인스턴스들과 구별할 수 있게 하는 하나 또는 그 이상의 속성을 식별자(Identifier) 라고 하고, 개체를 설명하게 위해서만 존재하는 속성을 설명자(descriptor)라고 한다. 식별자는 DB에서 사용되는 PK(primary key)라고 생각하면 편할 것 같다.
ERD에서 식별자는 속성 이름에 밑줄을 그려줌으로서 표시한다.
관계(Relationship)
개체와 개체가 맺고 있는 의미있는 연관성을 나타낸다. 그리고 관계가 형성된 개체는 서로의 행동이 서로에게 영향을 끼친다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
학생과 강좌 개체간의 관계는 수강한다 라는 관계형태로 연결된다.
ERD에서 관계는 기본적으로 마름모로 나타낸 후 그 관계 타입이 관련된 개체 타입에 실선으로 연결한다. 일반적으로 관계의 의미를 나타내는 단수형 동사를 사용한다.
관계 카디널리티는 개체간의 관계에 실제로 참여할 수 있는 인스턴스의 수를 뜻한다. 일반적으로 1대1, 1대다, 다대다 방식이 있다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
회원과 포스팅의 관계가 1대다 라고 할 수 있다. 한명의 블로그 회원이 여러개의 포스팅을 할 수 있기 때문이다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
사람과 주민번호의 관계가 1대1이라고 할 수 있다. 사람은 각자 하나씩의 주민번호만 가질 수 있기 때문이다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
인스타나 페이스북의 팔로우가 다대다 라고 할 수 있다. 여러명이 자신을 팔로우할 수 있고 자신도 여러명을 팔로우 할 수 있기 때문이다.
'CS > Database' 카테고리의 다른 글
[DB] 쿼리문 연습하기 (LEFT JOIN, INNER JOIN, GROUP BY) (2) | 2021.11.25 |
---|