🍏 개발일기/으쌰으쌰 SQLD 자격증 준비

관계 & 식별자

보배 진 2026. 2. 11. 20:37

 

관계의 정의

사진 출처 : https://coding-factory.tistory.com/870

관계 : 엔터티의 인스턴스 간에 논리적인 연관성을 가지는 형태나 행위

엔터티 간의 업무적 연관성을 표현

 

 

 

관계의 표현

2개 엔터티 사이의 관계는 2개의 관계명을 가짐

ex) 고객은 주문을 생성한다 / 주문은 고객에 의해 생성된다

 

 

 

 

관계의 분류

종류

🔹 존재에 의한 관계 : 항상 존재하는 관계 (ex: 사원은 부서에 속한다)

🔹 행위에 의한 관계 : 특정 행위로 발생하는 관계 (ex: 고객이 상품을 구매)

 

카디널리티(참여자 수)

🔹 1:1 관계 : 양쪽 엔터티의 인스턴스가 1:1로 대응

🔹 1:M 관계 : 한쪽 엔터티 인스턴스가 여러 인스턴스와 관계

🔹 N:M 관계 : 양쪽 엔터티의 인스턴스가 다대다 관계

 

 

 

 

관계의 선택성

🔹 필수적 관계 : 반드시 관계를 가져야 함 (실선)

🔹 선택적 관계 : 관계를 가질 수도 있고 아닐 수도 있음 (점선으로 표시)

 

 

 

 

관계명 표기 규칙

🔹 관계의 이름은 현재형 동사 사용

🔹 관계 참여자의 관점에서 능동적으로 명명

🔹 관계는 양방향으로 명명 (능동/수동)

 

 


 

 

식별자의 정의

식별자 : 엔터티 내에서 인스턴스를 구별하는 속성 또는 속성 조합

논리 모델링에서는 "식별자", 물리 모델링에서는 "키(Key)"라는 용어 사용

 

 

 

 

식별자의  특성

🔴 유일성 : 인스턴스를 유일하게 구분할 수 있어야 함

🔴 최소성 : 필요 최소한의 속성으로 구성

🔴 불변성 : 값이 변하지 않아야 함

🔴 존재성 : 반드시 값이 존재해야 함 (NULL은 X)

 

 

 

 

식별자의 분류

🔹 대표성에 따른 분류

- 주 식별자 : 엔터티를 대표하는 식별자 (ex:  사원번호)

- 보조 식별자 : 대체 식별 가능한 식별자 (ex: 주민등록번호)

 

🔹 생성 방식에 따른 분류

- 내부식별자 : 엔터티 내에서 스스로 생성되는 식별자 (ex: 고객번호)

- 외부식별자 : 다른 엔터티로부터 받아오는 식별자 (ex: 주문의 고객번호)

 

🔹 속성의 수에 따른 분류

- 단일 식별자 : 하나의 속성으로 구성된 식별자 (ex: 고객번호)

- 복합식별자 : 여러 속성의 조합으로 구성된 식별자 (ex: 주문번호 + 상세순번)

 

🔹 대체 가능성에 따른 분류

- 본질식별자 : 업무적으로 지연 발생한 식별자 (ex: 주민등록번호)

- 인조식별자 : 시스템에서 임의로 부여한 식별자 (ex: 일련번호)

 

 

 

식별자 도출 기준

🔹 업무에서 자주 사용되는 속성 우선

🔹 명칭이나 내역과 같은 서술형 속성 X

🔹 속성의 수가 적은 것 우선

🔹 향후 변경 가능성이 적은 속성 우선

 

 

 

 

식별자 관계와 비식별자 관계

🔹 식별자 관계 : 부모 엔터티의 주식별자가 자식 엔터티의 주식별자에 포함되는 관계 (실선)

🔹 비식별자 관계 : 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로 포함되는 관계

🔹 관계 설정 기준

   - 자식 인스턴스가 부모 없이 독립적 존재 가능 ➡ 비식별자 관계

   - 자식 인스턴스의 존재가 부모에 종속적 ➡ 식별자 관계

   - 복합식별자가 너무 많아지면 ➡ 비식별자 관계 고려

   - 객체 재사용 필요시 ➡ 비식별자 관계 고려

   - 이력 관리 엔터티 ➡ 식별자 관계 고려