DBMS - ER 모델 기본 개념

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘은 Entity-Relationship (ER) 모델의 fascinatings한 세상으로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 저는 여러분이 인생에서 코드를 한 줄도 작성하지 않았다면도 이 여정을 안내해 드리겠습니다. 그러니 가상의 메모장을 집어들고, 시작해 보겠습니다!

DBMS - ER Model Basic Concepts

Entity

Entity는 무엇인가요?

Entity는 데이터베이스 우주의 별과도 같습니다. 그것은 우리가 정보를 저장하고 싶은 것, 사람, 장소, 또는 개념입니다. 예를 들어 도서관을 위한 데이터베이스를 만들고 있다고 상상해 봅시다. 책, 작가, 독자 모두 entity가 됩니다.

간단한 예를 보겠습니다:

Entity 설명
Book 실물이나 디지털 독서 자료
Author 책을 쓰는 사람
Reader 책을 빌리는 사람

### Entity Sets

이제 큰 상자에 "Books"라는 레이블을 붙여 도서관에 있는 모든 책을 담아보겠습니다. 이 상자는 우리가 entity set이라고 부르는 것 - 유사한 entity들의 모음입니다. 이 상자 안의 각 책은 "Books" entity set 내의 고유한 entity입니다.

## Attributes

### Attributes는 무엇인가요?

만약 entity가 우리 데이터베이스 우주의 별이라면, attribute는 각 별을 돋보이게 하는 세부 정보입니다. 그들은 entity를 설명하거나 특징 짓는 속성이나 특성입니다.

도서관 예제를 확장해 보겠습니다:


| Entity    | 속성                               |
|-----------|-----------------------------------|
| Book      | ISBN, 제목, 출판일, 장르           |
| Author    | 작가 ID, 이름, 생일, 국적         |
| Reader    | 독자 ID, 이름, 주소, 전화번호      |

각 attribute는 entity를 더 정확하게 식별하고 설명하는 데 도움이 됩니다. 예를 들어, ISBN(국제 표준 도서 번호)는 각 책에 고유한 식별자입니다.

Attributes의 유형

모든 attribute는 동일하지 않습니다. 다양한 유형을 살펴보겠습니다:

  1. 단순 속성: 이는 원자 단위인 것입니다. 예를 들어 사람의 나이.
  2. 복합 속성: 이는 더 작은 부분으로 나눌 수 있는 것입니다. 예를 들어 주소(도로, 도시, 우편 번호).
  3. 단일 값 속성: 이는 특정 entity에 대해 하나의 값을 가지는 것입니다. 예를 들어 사람의 생일.
  4. 다중 값 속성: 이는 여러 값을 가질 수 있는 것입니다. 예를 들어 사람의 전화번호.
  5. 導出 속성: 이는 다른 attribute에서 계산할 수 있는 것입니다. 예를 들어 나이(생일에서 계산된 것).

다음 표는 이러한 유형을 요약합니다:

속성 유형 예시
단순 나이
복합 주소(도로, 도시, 우편 번호)
단일 값 생일
다중 값 전화번호
导出 나이(생일에서 계산된 것)

## Relationship

### Relationship은 무엇인가요?

이제 우리 데이터베이스 우주의 별들을 연결해 보겠습니다! Relationship은 두 개 이상의 entity 간의 관계입니다. 도서관 예제에서는 작가가 "책을 쓴다"고 하고, 독자가 "책을 빌린다"고 합니다.

### 관계의 유형

관계는 몇 개의 entity가 관련되는지에 따라 다양한 맛을 가집니다:

1. **일대일 관계**: Entity A의 한 인스턴스가 Entity B의 정확히 하나의 인스턴스와 연관되고, 반대로도 그렇습니다.
2. **일대다 관계**: Entity A의 한 인스턴스가 Entity B의 여러 인스턴스와 연관될 수 있지만, B의 각 인스턴스는 A의 단일 인스턴스와만 연관됩니다.
3. **다대다 관계**: Entity A의 여러 인스턴스가 Entity B의 여러 인스턴스와 연관될 수 있습니다.

도서관 예제로 설명해 보겠습니다:


| 관계 유형 | 예시                                    |
|-----------|----------------------------------------|
| 일대일     | 책 "has" ISBN (각 책에 고유한 ISBN이 있습니다) |
| 일대다     | 작가 "writes" 책 (한 작가가 여러 책을 쓸 수 있습니다) |
| 다대다     | 독자 "borrows" 책 (여러 독자가 여러 책을 빌릴 수 있습니다) |

관계의 Cardinality

Cardinality는 우리 데이터베이스 우주의 교통 규칙과도 같습니다. 그것은 하나의 entity의 몇 개의 인스턴스가 다른 entity의 인스턴스와 연관될 수 있는지 정의합니다. 주요 유형은 다음과 같습니다:

  1. 1:1: Entity A의 한 인스턴스가 정확히 Entity B의 한 인스턴스와 연관되고, 반대로도 그렇습니다.
  2. 1:N: Entity A의 한 인스턴스가 Entity B의 여러 인스턴스와 연관될 수 있지만, B의 각 인스턴스는 A의 단일 인스턴스와만 연관됩니다.
  3. M:N: Entity A의 여러 인스턴스가 Entity B의 여러 인스턴스와 연관될 수 있습니다.

도서관 예제에 적용해 보겠습니다:

Cardinality 예시
1:1 책 "has" ISBN (각 책에 하나의 고유한 ISBN이 있습니다)
1:N 작가 "writes" 책 (한 작가가 여러 책을 쓸 수 있습니다)
M:N 독자 "borrows" 책 (여러 독자가 여러 책을 빌릴 수 있습니다)


이제 여러분은 ER 모델의 기본 개념을 탐험한 것입니다. 기억해 두세요, 잘 설계된 데이터베이스는 그 캐릭터(entity), 그들의 특성(attributes), 그리고 그들이 상호작용하는 방식(relationship)에 대해 이야기해 줍니다.

마무리하면서, 저는 초보 강의 시절의 한 해프닝을 떠올립니다. 저는 관계를 설명하기 위해 로맨틱 코미디 비유를 사용했었는데, 데이터베이스 관계를 데이트 상황과 비교하는 것이 학생들에게 매우 혼란스럽고 유쾌하게 느껴졌던 일이 있습니다!

이 개념들을 계속 연습하면, 여러분은 가장 사랑하는 카페에서나 소셜 미디어 피드에서도 entity와 relationship을 보게 될 것입니다. 행복하게 모델링하세요!

Credits: Image by storyset