ERD(Entity Relationship Diagram)
1. ERD란 무엇인가?
ERD (Entity Relationship Diagram)는 데이터베이스 설계를 위한 다이어그램으로, 엔티티(Entity)와 엔티티 간의 관계(Relationship)를 시각적으로 표현하는 도구입니다. ERD는 데이터베이스를 구축하기 전에 요구 사항을 분석하고, 데이터베이스에 저장할 데이터의 구조를 설계하는 데 중요한 역할을 합니다.
- 엔티티 (Entity): 데이터베이스에서 중요한 객체나 개념을 나타냅니다. 예를 들어, 고객, 주문, 책, 직원 등이 엔티티로 정의될 수 있습니다.
- 속성 (Attribute): 각 엔티티가 가지는 정보나 특성을 나타냅니다. 예를 들어, 고객 엔티티는 이름, 이메일, 전화번호와 같은 속성을 가질 수 있습니다.
- 관계 (Relationship): 서로 다른 엔티티들 간의 상호작용을 나타냅니다. 예를 들어, 고객은 주문을 하고, 주문은 책을 포함하는 관계입니다.
- 카디널리티 (Cardinality): 엔티티 간의 관계에서 개체들의 수를 나타내며, 1:1, 1:N, M:N 관계로 나눠집니다.
ERD는 이러한 구성 요소들을 시각적으로 표현하여 데이터베이스 설계를 명확히 하고, 효율적인 데이터 관리와 시스템 개발을 돕습니다.
2. 요구 사항 분석을 통한 ERD 작성 예시
2.1 요구 사항 분석
요구 사항: 고객은 책을 주문할 수 있다.
- 고객은 여러 주문을 할 수 있습니다.
- 각 주문은 여러 책을 포함할 수 있습니다.
- 한 권의 책은 여러 주문에 포함될 수 있습니다.
- 각 주문 항목은 책의 수량과 가격을 기록합니다.
2.2 엔티티 및 속성도출
위의 요구 사항을 기반으로 다음과 같은 엔티티 및 속성들을 도출할 수 있습니다:
- 고객 (Customer): 고객의 정보
- 고객ID (Primary Key)
- 이름
- 이메일
- 전화번호
- 책 (Book): 서점에서 판매하는 책의 정보
- 책ID (Primary Key)
- 제목
- 저자
- 출판사
- 가격
- 주문 (Order): 고객이 한 번에 구매하는 주문
- 주문ID (Primary Key)
- 고객ID (Foreign Key)
- 주문일자
- 주문 항목 (OrderItem): 각 주문에 포함된 책의 수량과 가격
- 주문ID (Foreign Key)
- 책ID (Foreign Key)
- 수량
- 가격
2.3 관계 정의
1. 고객 (Customer)과 주문 (Order)은 1:N 관계입니다. 하나의 고객은 여러 개의 주문을 할 수 있습니다.
2. 주문 (Order)과 주문 항목 (OrderItem)은 1:N 관계입니다. 하나의 주문은 여러 개의 주문 항목을 가질 수 있습니다.
3. 책 (Book)과 주문 항목 (OrderItem)은 1:N 관계입니다. 하나의 책은 여러 주문 항목에 포함될 수 있습니다.
4. 주문 (Order)과 책 (Book)은 M:N 관계입니다. 주문은 여러 책을 포함할 수 있으며, 한 권의 책은 여러 주문에 포함될 수 있습니다.
이 M:N 관계를 해결하기 위해 주문 항목 (OrderItem) 테이블을 도입하여, 주문과 책 사이의 관계를 1:N으로 변환합니다.
2.4 ERD 설계
이제 위에서 정의한 관계를 바탕으로 ERD를 설계합니다. 각 엔티티와 관계는 다음과 같습니다:
+-----------------+ +-----------------+ +-------------------+
| Customer | 1 N | Order | 1 N | OrderItem |
+-----------------+ +-----------------+ +-------------------+
| CustomerID(PK) | | OrderID(PK) | | OrderID(FK) |
| Name | | CustomerID(FK) | | BookID(FK) |
| Email | | OrderDate | | Quantity |
| Phone | +-----------------+ | Price |
+-----------------+ +-------------------+
|
|
|
N | 1
|
+-------------------+
| Book |
+-------------------+
| BookID(PK) |
| Title |
| Author |
| Publisher |
| Price |
+-------------------+
2.5 ERD 설명
1. 고객 (Customer):
- 고객ID (Primary Key)는 고객을 고유하게 식별합니다.
- 고객은 여러 주문을 할 수 있으므로, 주문 (Order) 엔티티와는 1:N 관계를 가집니다.
2. 주문 (Order):
- 주문ID (Primary Key)는 각 주문을 고유하게 식별하는 기본 키입니다.
- 고객ID (Foreign Key)를 사용하여, 해당 주문이 어느 고객에 의해 이루어졌는지를 식별합니다.
- 주문일자는 주문이 이루어진 날짜를 기록합니다.
- 주문 항목 (OrderItem)과는 1:N 관계를 가지며, 하나의 주문은 여러 주문 항목을 가질 수 있습니다.
3. 주문 항목 (OrderItem):
- 주문ID (Foreign Key)는 해당 주문을 식별하는 외래 키입니다.
- 책ID (Foreign Key)는 주문 항목에 포함된 책을 식별하는 외래 키입니다.
- 수량 (Quantity)과 가격 (Price)는 해당 주문 항목에 포함된 책의 수량과 가격을 기록합니다.
- 이 테이블은 주문과 책 간의 M:N 관계를 해결하는 중간 테이블 역할을 합니다.
4. 책 (Book):
- 책ID (Primary Key)는 각 책을 고유하게 식별하는 기본 키입니다.
- 책 제목, 저자, 출판사, 가격 등의 정보가 포함됩니다.
- 주문 항목 (OrderItem)을 통해 여러 주문에 포함될 수 있습니다.
- 주문 항목 (OrderItem)과는 N:1 관계를 가지며, 하나의 책은 여러 주문 항목에 포함될 수 있습니다.
2.6 결론
이와 같은 ERD 설계는 고객이 여러 권의 책을 주문하는 시스템에서 발생할 수 있는 복잡한 관계를 명확하게 정의하고 효율적으로 관리할 수 있게 합니다.
ERD는 데이터베이스 설계의 중요한 부분으로, 시스템의 요구 사항을 정확하게 분석하고 이를 기반으로 데이터베이스 구조를 설계할 수 있도록 도와줍니다. 이 과정에서 고객, 주문, 책, 주문 항목 간의 관계를 명확히 정의하고, 이를 바탕으로 효율적인 데이터 관리가 가능해집니다. ERD는 데이터베이스 설계를 위한 중요한 청사진 역할을 하며, 이후의 개발 단계에서 매우 중요한 역할을 합니다.