본문 바로가기
Programming

UML - ER Diagram

by 느리게 걷는 즐거움 2024. 6. 21.
반응형

데이터베이스 설계: ER 다이어그램 이해하기

데이터베이스 설계에서 중요한 단계 중 하나는 데이터 모델을 시각적으로 나타내는 것입니다. 이를 위해 사용되는 주요 도구 중 하나가 Entity-Relationship(ER) 다이어그램입니다. ER 다이어그램은 데이터베이스 구조의 논리적 설계를 시각화하고, 데이터 간의 관계를 명확히 하는 데 유용합니다.

ER 다이어그램이란?

ER 다이어그램은 데이터베이스 설계에서 사용되는 그래픽 도구로, 엔터티(Entity)와 엔터티 간의 관계(Relationship)를 시각적으로 나타냅니다. 각 엔터티는 실세계에서 개체를 의미하고, 이들 사이의 관계는 데이터베이스에서 구조화된 방식으로 데이터를 표현합니다.

ER 다이어그램 작성 방법

엔터티(Entity) 데이터베이스에서 저장할 개체나 사물을 나타냅니다. 학생, 강의, 직원 등이 엔티티가 될 수 있습니다. 직사각형 상자로 표시하며, 엔터티 이름을 포함합니다.
속성(Attribute) 엔터티가 가지는 세부 정보를 나타냅니다. 학생 엔터티의 속성으로 이름, 학번, 이메일 등이 사용될 수 있습니다. 엔터티 상자 안에 속성 이름을 작성합니다.
관계(Relationship) 엔터티 간의 연결을 나타내며, 데이터베이스에서 데이터들 간의 링크를 형성합니다. 일대일, 일대다, 다대다 등 다양한 관계 유형이 있습니다. 엔터티 간의 관계를 선으로 연결하여 표시합니다.

관계의 속성

이름: 관계에 이름을 부여하여 관계의 의미를 명확히 합니다. 예를 들어, "수강"이라는 관계를 나타내는 경우 "Enrolls"라고 이름을 지정할 수 있습니다.

카디널리티(Cardinality): 각 엔터티 인스턴스 간의 관계에서 인스턴스 수의 제한을 나타냅니다. 예를 들어, 한 고객이 여러 주문을 가질 수 있는지 여부를 명시합니다.

옵션성: 관계가 필수적인지 선택적인지를 나타냅니다. 예를 들어, 모든 고객이 반드시 주문을 가지고 있어야 하는지를 결정합니다.

PlantUML 표기법

일대일 관계
(One-to-One Relationship)
한 엔터티의 인스턴스가 다른 엔터티의 인스턴스와 하나씩 연결된 관계입니다.
ex) 한 사람이 하나의 운전 면허를 가집니다.
 
일대다 관계
(One-to-Many Relationship)
한 엔터티의 인스턴스가 다른 엔터티의 여러 인스턴스와 연결된 관계입니다.
ex) 한 고객이 여러 주문을 가집니다.
|| --o{
(0 or many)

||--|{
(1 or many)

||-{ 
(many)


다대일 관계
(Many-to-One Relationship)
여러 엔터티 인스턴스가 하나의 엔터티 인스턴스와 연결된 관계입니다.
ex) 여러 주문이 하나의 고객에 의해 생성됩니다.
 
다대다 관계
(Many-to-Many Relationship)
여러 엔터티 인스턴스가 다른 여러 엔터티 인스턴스와 서로 연결된 관계입니다.
ex) 여러 학생이 여러 과목을 수강합니다.
 

||--o{
0 or many -o{  
1 or many -|{  

예시 다이어그램

학사 관리 시스템의 예시를 통해 ER 다이어그램을 작성하는 방법을 설명합니다. 학생, 강의, 교수 간의 관계를 다이어그램으로 나타냅니다.

@startuml

entity Student {
  * student_id: int
  --
  * name: string
  * email: string
}

entity Course {
  * course_id: int
  --
  * title: string
  * description: string
}

Student --|{ Course : enrolls

@enduml

@startuml

entity Customer  {
  + id (PK)
  --
  name
  mail
}

entity Order  {
  + id (PK)
  --
  # customer id (FK)
  order date
}

entity "Order Detail" as OrderDetail {
  + id (PK)
  --
  # order id  (FK)
  price without tax
}

Customer -right-o{ Order
Order ||-right-|{ OrderDetail

@enduml

Customer 엔터티 + id (PK): id 필드는 기본 키(Primary Key)로 설정되어 있습니다.
name, mail: 일반 속성입니다.
Order 엔터티 + id (PK): id 필드는 기본 키입니다.
# customer id (FK): customer id는 외래 키(Foreign Key)로, Customer 엔터티와 연결됩니다.
order date: 일반 속성입니다.
Order Detail 엔터티 + id (PK): id 필드는 기본 키입니다.
# order id (FK): order id는 외래 키로 Order 엔터티와 연결됩니다.
price without tax: 일반 속성입니다.
Customer - Order 관계 -right-o{는 "일대다" 관계를 의미합니다. 즉, 한 Customer는 여러 Order를 가질 수 있습니다.
Order - Order Detail 관계 ||-right-|{는 "일대다" 관계를 나타내며, 이는 한 Order가 여러 OrderDetail을 가질 수 있음을 의미합니다.

 

반응형

'Programming' 카테고리의 다른 글

AJAX란?  (0) 2024.06.21
AJS: Atlassian JavaScript Library  (0) 2024.06.21
UML - Class Diagram  (0) 2024.06.21
SQL 명령어  (0) 2024.06.20
리눅스 명령어 (E)  (0) 2024.06.20