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