📌 개념 정리
이번 포스팅에서는 **ERD(Entity-Relationship Diagram)**와 관련된 테이블 구조, 관계 유형, Cardinality에 대해 쉽게 설명하고, 실제 예시를 들어서 설명하겠습니다. ERD는 데이터베이스 설계에서 중요한 역할을 하며, Entity와 Relationship 간의 관계를 시각적으로 나타내는 방법입니다. 이 포스팅을 통해 ERD의 기본 개념을 이해하고, 관계형 데이터베이스를 설계하는 데 도움이 되는 정보를 제공합니다.
🚦 1. ERD (Entity-Relationship Diagram)
ERD는 데이터베이스 설계의 중요한 도구로, **엔티티(Entity)**와 **관계(Relationship)**를 나타냅니다. ERD를 통해 데이터베이스 내의 테이블과 그들 간의 관계를 시각적으로 표현할 수 있습니다.
1) Entity (엔티티) = 테이블
Entity는 데이터베이스에서 테이블에 해당합니다. 엔티티는 명사로 표현될 수 있으며, 실제로 데이터베이스 내에서 하나의 테이블로 구현됩니다. 예를 들어, 고객(Customer), 주문(Order), 제품(Product) 등이 Entity에 해당합니다.
- 행(row): **Instance(인스턴스)**라고도 하며, 데이터베이스의 한 행은 하나의 실제 데이터 항목입니다. 예를 들어, 고객 테이블에서 한 행은 하나의 고객 정보를 나타냅니다.
- 열(column): **Attribute(속성)**이라고 하며, 테이블의 각 열은 하나의 속성이나 특징을 나타냅니다. 예를 들어, 고객 테이블에서 이름, 전화번호, 주소 등이 열에 해당합니다.
2) Relationship (관계) = 외래키(Foreign Key) 관계
Relationship은 두 개의 테이블 간의 관계를 나타내며, 동사로 표현됩니다. 관계는 **외래키(Foreign Key)**를 통해 두 테이블 간의 연결을 구현합니다. 관계는 하나의 외래키가 다른 테이블의 **기본키(Primary Key)**를 참조하는 형태로 나타낼 수 있습니다. 예를 들어, 주문 테이블에서 고객 ID가 고객 테이블의 고객 ID를 참조하는 관계가 있을 수 있습니다.
(1) Relationship 유형
Relationship은 다음과 같이 세 가지로 구분할 수 있습니다:
- Binary (2-ary) 관계: 가장 일반적인 형태로 두 테이블 간의 관계입니다. 예를 들어, 고객과 주문 간의 관계는 Binary 관계입니다. Binary 관계는 가장 많이 사용되고 구현하기 쉬운 형태로, 단순한 관계를 만들 때 적합합니다.
- Unary (1-ary) 관계: 자기 자신과의 관계입니다. 이를 재귀적 관계(Recursive Relationship)라고도 부릅니다. 예를 들어, 직원 테이블에서 상사(상급자)가 자기 자신을 참조하는 관계가 Unary 관계입니다.
- Ternary (3-ary) 관계: 세 개체 간의 관계입니다. 예를 들어, 출판 시스템에서는 책, 저자, 출판사가 모두 Ternary 관계를 형성합니다. 즉, 책과 저자와 출판사가 동시에 관련된 경우입니다.
(2) Cardinality (카디널리티) – 관계의 차수
Cardinality는 관계를 맺는 테이블 간에 각 행이 얼마나 연결되는지를 나타냅니다. Cardinality는 다음과 같은 4가지 관계 유형을 정의합니다:
- 1:1 (일대일) 관계: 하나의 테이블의 한 행이 다른 테이블의 한 행과만 연결됩니다.
- 예시: 고객과 회원 카드 관계는 1:1 관계입니다. 한 명의 고객은 하나의 회원 카드만 가질 수 있습니다.
- 1:N (일대다) 관계: 한 테이블의 한 행이 다른 테이블의 여러 행과 연결됩니다. (부모-자식 관계)
- 예시: 고객과 주문 관계는 1:N 관계입니다. 한 명의 고객은 여러 개의 주문을 할 수 있습니다.
- N:1 (다대일) 관계: 여러 개체가 하나의 개체와 연결되는 관계입니다.
- 예시: 주문과 배송 관계는 N:1 관계입니다. 여러 개의 주문이 하나의 배송 정보와 연결됩니다.
- N:M (다대다) 관계: 여러 개체가 서로 연결되는 관계입니다. 이를 해결하기 위해 중간 테이블을 사용해야 합니다.
- 예시: 학생과 과목 관계는 N:M 관계입니다. 여러 학생이 여러 과목을 들을 수 있기 때문에 학생-과목 관계를 위한 중간 테이블이 필요합니다.
3. N:M 관계에서 중간 테이블 사용 예시
예시: 학생과 과목이 다대다 관계를 가질 때, 중간 테이블을 사용하여 이 관계를 관리합니다.
학생 테이블 (Students)
student_id (PK) name
1 | 학생 A |
2 | 학생 B |
과목 테이블 (Courses)
course_id (PK) course_name
1 | 수학 |
2 | 영어 |
3 | 과학 |
중간 테이블 (Student_Courses)
student_id (FK) course_id (FK)
1 | 1 |
1 | 2 |
2 | 2 |
2 | 3 |
- 중간 테이블은 학생과 과목 간의 관계를 관리하며, Foreign Key를 사용해 두 테이블을 연결합니다.
🚦 결론
- ERD에서 Entity는 테이블을 나타내고, Relationship은 테이블 간의 관계를 정의합니다.
- 1:1, 1:N, N:M 관계를 Cardinality로 구분하여 이해할 수 있습니다. N:M 관계는 중간 테이블을 사용해 처리합니다.
- 관계 유형에 맞는 테이블 설계를 통해 정확한 데이터 모델링을 할 수 있습니다.
이 포스팅을 통해 ERD의 기본 개념을 이해하고, 관계형 데이터베이스 설계를 보다 명확하게 다룰 수 있을 것입니다! 🚀
'특강' 카테고리의 다른 글
HTML/CSS/JAVASCRIPT- 윤도 강사님 강의(250401)(1/3) (0) | 2025.04.01 |
---|---|
Database Amazon 검색 시스템 구축 - 장동욱 강사님 강의 (0) | 2025.03.27 |
Database - 파머 강사님 강의(250321) (0) | 2025.03.21 |
Database 설계 실습 정리 - 장동욱 강사님 강의 (0) | 2025.03.20 |
백엔드 개발 및 SQL 전문성 향상 (0) | 2025.03.18 |