본문 바로가기
자격증/SQLD

[SQLD ] 1-3: 관계와 식별자 (feat. ERD 표기)

by rnasterofmysea 2025. 2. 13.
반응형

Chapter 1-3: 관계(Relationship)와 식별자(Identifier)

데이터 모델링에서 중요한 개념 중 하나는 관계(Relationship)와 식별자(Identifier)입니다. 관계는 엔티티 간의 연관성을 정의하고, 식별자는 각 엔티티의 개별 인스턴스를 구별하는 역할을 합니다. 이 두 개념을 이해하면 데이터베이스의 구조를 보다 효율적으로 설계할 수 있습니다.
 
하단은 데이터베이스 설계 기말 과제로 설계했던 ERD 다이어그램입니다 ㅎㅎ

 


1. 관계(Relationship)란?

관계(Relationship)는 두 개 이상의 엔티티 간의 연관성을 나타내는 개념입니다. 관계는 ERD(Entity-Relationship Diagram)에서 마름모(Diamond) 형태로 표현되며, 데이터베이스에서는 외래 키(Foreign Key, FK)로 구현됩니다.

 

 관계의 유형:

  • 존재 관계
  • 행위 관계
  • 연관 관계
  • 의존 관계

1) 존재 관계 (Existence Relationship)

존재 관계는 한 엔티티가 존재하기 위해 반드시 다른 엔티티가 필요할 때 발생하는 관계입니다.
즉, 특정 엔티티가 다른 엔티티 없이는 의미를 가지지 못하는 경우입니다.

  • 엔티티 A가 존재하려면 반드시 엔티티 B가 존재해야 함.
  • ER 다이어그램에서는 **이중 선(double line)**으로 표시.
  • 존재적 종속 관계를 가짐.

📌 예제

  • 사원(Employee) - 부서(Department) 관계
    • 모든 사원은 반드시 하나의 부서에 속해야 한다.
    • 사원의 존재는 부서의 존재에 의존적이다.

📍 ER 다이어그램 예시

사원 === 속함 === 부서
(Employee)  (Belongs to)  (Department)

💡 부서가 존재하지 않으면 사원도 존재할 수 없다는 점이 핵심!


2) 행위 관계 (Action Relationship)

행위 관계는 어떤 엔티티가 특정 행위를 수행할 때 발생하는 관계입니다.
즉, 존재 자체보다는 행위를 통해 관계가 형성됩니다.

  • 한 엔티티가 특정 작업을 수행할 때 관계가 형성됨.
  • ER 다이어그램에서는 **단일 선(single line)**으로 표시.
  • 관계가 엔티티의 행동에 의해 동적으로 생성될 수 있음.

📌 예제

  • 고객(Customer) - 주문(Order) 관계
    • 고객이 주문을 수행할 수 있다.
    • 주문은 고객의 특정 행위를 통해 생성됨.

📍 ER 다이어그램 예시

고객 --- 주문 --- 제품
(Customer)  (Places)  (Product)

💡 고객이 주문을 하지 않더라도 고객은 존재할 수 있음!


3) 연관 관계 (Association Relationship)

연관 관계는 두 엔티티가 서로 관계를 가지지만 독립적으로 존재할 수 있는 관계입니다.
즉, 특정 엔티티가 관계를 가지지 않더라도 개별적으로 존재할 수 있습니다.

  • 두 엔티티가 독립적으로 존재 가능.
  • 다대다(M:N) 관계일 수 있음.
  • ER 다이어그램에서는 **단일 선(single line)**으로 표시.

📌 예제

  • 의사(Doctor) - 환자(Patient) 관계
    • 의사와 환자는 각각 독립적으로 존재 가능하지만, 진료(Consultation)라는 관계를 가질 수 있음.

📍 ER 다이어그램 예시

의사 --- 진료 --- 환자
(Doctor)  (Consults)  (Patient)

💡 진료를 받지 않더라도 의사와 환자는 각각 존재할 수 있음!


4) 의존 관계 (Dependency Relationship)

의존 관계는 한 엔티티가 반드시 다른 엔티티에 의존하여 존재하는 관계입니다.
즉, 엔티티 B가 존재하지 않으면 엔티티 A도 존재할 수 없습니다.

  • 하나의 엔티티가 다른 엔티티에 의존적.
  • 부모-자식 관계 형성 가능.
  • ER 다이어그램에서 외래 키(Foreign Key)로 표현.

📌 예제

  • 주문(Order) - 주문 상세(Order Detail) 관계
    • 주문 상세(Order Detail)는 특정 주문(Order)에 속해야 함.
    • 주문이 삭제되면 주문 상세도 함께 삭제되어야 함.

📍 ER 다이어그램 예시

주문 --- 주문 상세
(Order)  (Order Detail)

💡 주문이 없으면 주문 상세도 존재할 수 없음!


5) 관계 유형 비교

존재 관계 특정 엔티티가 다른 엔티티 없이는 존재할 수 없음. 사원 - 부서
행위 관계 특정 행위를 수행할 때 발생하는 관계. 고객 - 주문
연관 관계 두 엔티티가 독립적으로 존재하면서 관계를 가질 수 있음. 의사 - 환자
의존 관계 하나의 엔티티가 반드시 다른 엔티티에 의존해야 존재할 수 있음. 주문 - 주문 상세

 

2. 관계의 종류

https://mjn5027.tistory.com/43

 
관계는 크게 일대일(1:1), 일대다(1:N), 다대다(N:M) 관계로 나뉩니다.

① 일대일(1:1) 관계

  • 하나의 엔티티가 다른 엔티티의 하나의 인스턴스와만 연결됨
  • 예: 사용자(User) - 사용자 프로필(Profile) 관계

 

사용자(User) 사용자 프로필(Profile)
사용자 ID (PK) 프로필 ID (PK, FK)
이름 생년월일

💡 한 명의 사용자는 하나의 프로필만 가질 수 있음

1대 1관계

② 일대다(1:N) 관계

  • 하나의 엔티티가 여러 개의 다른 엔티티와 연결될 수 있음
  • 예: 고객(Customer) - 주문(Order) 관계
고객(Customer)  주문(Order)
고객 ID (PK) 주문 ID (PK)
이름 주문 날짜
연락처 고객 ID (FK)

💡 한 명의 고객은 여러 개의 주문을 할 수 있음

1 대 M 관계

③ 다대다(N:M) 관계

  • 여러 개의 엔티티가 서로 여러 개의 엔티티와 연결될 수 있음
  • 예: 학생(Student) - 강의(Course) 관계

 

학생(Student)  수강(Student_Course)  강의(Course)
학생 ID (PK) 학생 ID (FK) 강의 ID (PK)
이름 강의 ID (FK) 강의명

💡 한 명의 학생은 여러 개의 강의를 수강할 수 있고, 하나의 강의에는 여러 명의 학생이 참여할 수 있음 → 중간 테이블(Student_Course) 필요

 

 


3. 식별자(Identifier)란?

식별자(Identifier)는 엔티티의 각 인스턴스를 고유하게 구별할 수 있는 속성을 의미합니다. 데이터베이스에서는 기본 키(Primary Key, PK)로 구현됩니다. 식별자는 크게 주 식별자(Primary Identifier), 보조 식별자(Secondary Identifier), 외래 식별자(Foreign Key)로 나뉩니다.
 

3.1 식별자의 유형

1) 대표성 여부

  • 주 식별자(Primary Key, PK): 엔티티의 개별 인스턴스를 구별하는 유일한 속성 (=기본 키 PK)
  • 보조 식별자(Candidate Key): 기본 키가 될 수 있는 후보 키 중 하나로, 유일성을 가지지만 선택되지 않은 키(=후보키)

2) 스스로 생성되었는지 여부

  • 내부 식별자(Internal Identifier): 해당 엔티티 내에서 독립적으로 생성된 식별자 (예: 고객 ID, 주문 ID)
  • 외부 식별자(External Identifier): 다른 엔티티의 식별자를 참조하는 속성 (예: 주문 테이블의 고객 ID) = 외래키(FK)

3) 단일 속성 여부

  • 단일 식별자(Simple Identifier): 단일 속성으로 구성된 식별자 (예: 주민등록번호, 사원 ID)
  • 복합 식별자(Composite Identifier): 두 개 이상의 속성으로 구성된 식별자 (예: 수강 기록의 학생 ID + 강의 ID) \
  • 복합 식별자를 슈퍼키(Super Key)라고도 함

4) 대체 여부

  • 원조 식별자(Natural Identifier): 현실 세계에서 자연스럽게 사용되는 식별자 (예: 주민등록번호, 이메일)
  • 인조 식별자(Surrogate Identifier): 시스템에서 자동 생성된 식별자 (예: 데이터베이스에서 자동 증가하는 ID 값)

 

① 주 식별자(Primary Key, PK)

  • 유일성: 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
  • 최소성: 유일성을 보장하는 최소 개수의 속성이여야한다.
  • 불변성: 속성값이 되도록 변하지 않아야한다.
  • 존재성: 속성값이 NULL일 수 없다.

 

📌 예제 (고객 테이블)

고객 ID (PK) 이름 연락처
101 홍길동 010-1234-5678
102 이영희 010-5678-1234

✅ 고객 ID는 각 고객을 식별하는 유일한 값이므로 PK가 될 수 있음

 

② 보조 식별자(Secondary Key)

  • 주 식별자가 아닌 다른 속성 중에서도 유일성을 가지는 속성
  • 예: 이메일(Email), 주민등록번호(SSN)

📌 예제 (사용자 테이블)

사용자 ID (PK) 이름   이메일(보조 식별자)
1001 김민수 minsu@example.com
1002 이지현 jihyun@example.com

✅ 이메일은 각 사용자가 유일하게 가질 수 있지만, 기본 키로 설정되지 않은 속성

 

③ 외래 식별자(Foreign Key, FK)

  • 다른 엔티티의 주 식별자를 참조하는 속성
  • 두 엔티티 간의 관계를 정의하는 역할

📌 예제 (주문 테이블)

 

주문 ID (PK)  주문 날짜  고객 ID (FK)
5001 2024-02-10 101
5002 2024-02-11 102

✅ 고객 ID는 고객 엔티티(Customer)의 고객 ID (PK)를 참조하는 외래 키(FK)

 

3.2 식별자 VS 비식별자

 

<유선배 SQL 개발자 강의 노트> 발췌

 


4. 관계와 식별자의 연결

관계와 식별자는 데이터베이스에서 서로 밀접하게 연결되어 있습니다.
엔티티 간의 관계를 정의할 때, 외래 키(FK)를 사용하여 관계를 표현하고, 식별자(PK)를 사용하여 데이터를 구별합니다.

📌 관계 & 식별자 적용 예제

고객(Customer) 주문(Order)

고객 ID (PK) 주문 ID (PK)
이름 주문 날짜
연락처 고객 ID (FK)
  • 고객 ID는 고객 엔티티에서 기본 키(PK)
  • 주문 테이블에서는 고객 ID를 외래 키(FK)로 사용하여 관계를 형성

 
이러한 관계를 통해 고객이 주문한 내역을 쉽게 조회할 수 있음


5. 마무리

이번 포스팅에서는 관계(Relationship)식별자(Identifier)에 대해 다루었습니다.

 

🔹 존재 관계: 특정 엔티티가 반드시 다른 엔티티에 속해야 할 때
🔹 행위 관계: 특정 행동이 수행될 때 관계가 형성될 때
🔹 연관 관계: 독립적인 엔티티가 서로 관계를 가질 수 있을 때
🔹 의존 관계: 하나의 엔티티가 다른 엔티티 없이는 존재할 수 없을 때


관계(Relationship)엔티티 간의 연관성을 정의하며, 일대일(1:1), 일대다(1:N), 다대다(N:M) 관계로 나뉩니다.
식별자(Identifier)각 인스턴스를 고유하게 구별하는 속성이며, 기본 키(PK), 보조 키, 외래 키(FK)로 구분됩니다.
식별자와 관계를 함께 활용하면 데이터베이스의 구조를 효율적으로 설계할 수 있습니다.
다음 포스팅에서는 Chapter2. 데이터 보델과 SQL을 다루겠습니다.

반응형