[ 데이터베이스 ] Relationships and Identifiers

관계
- 엔터티의 인스턴스 사이의 논리적인 연관성
- 관계 페러링의 집합
- 일반적으로 존재/행위적 관계를 구분
- ex) 강사 - 가르친다(관계) - 수강생
페어링
- 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
- 페어링의 집합은 '관계'
ERD에서의 관계
- 존재/행위적 관계 구분 X
- 식별(실선, 부모PK, 자식 FK,PK) / 비식별(점선, 부모PK, 자식 일반) 구분
UML(통합모델링언어)에서의 관계
연관관계(실선) : 항상 이용하는 존재적 관계. ex) 소속된다
의존관계(점선) : 상대 행위에 의해 발생하는 관계. ex) 주문한다
관계의 표기법
- 엔티티가 관계에 참여하는 형태를 나타냄
관계명 : 관계이름, 애매한 동사 사용 X, 현재형 표현 O. ex) 포함한다, 소속된다
관계차수 : 1:1, 1:M, M:N
관계선택성 (관계선택사양)
필수관계 : 참여하는 모든 엔터티가 항상 참여. ex) 주문서와 주문목록의 관계
선택관계 : 선택. ex) 쇼핑카트와 주문목록의 관계
관계 체크사항
1. 2개의 엔터티 사이 관심있는 연관 규칙이 있는가?
2. 2개의 엔터티 사이 정보의 조합이 발생하는가?
3. 업무기술서, 장표의 관계연결에 대한 규칙을 서술할 수 있는가?
4. 업무기술서, 장표에 관계연결을 가능케 하는 동사가 있는가?
식별자
- 엔터티 내에서 인스턴스를 구분하는 구분자
- 식별자는 논리적 모델링, key는 물리적 모델링 단계에서 사용
식별자의 특징
- 유일성 : 주식별자에 의해 모든 인스턴스들이 유일하게 구분
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족시키는 최소의 수가 되어야 함
ex) 식별자 구조 : 사원번호 (O), 사원번호+분류코드 (X)
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 함. 변하면 이전 기록 말소됨.
ex) 사원 번호가 변하면 이전기록 말소
- 존재성 : 주식별자가 지정되면 반드시 값이 들어와야 함. NOT NULL
식별자 분류
(+) 어커런스 = 빈칸, 인스턴스 = 어커런스에 들어갈 데이터
대표성 여부 : 주식별자, 보조식별자
- 주식별자 : 엔터티 내에서 각 어커런스 구분자, 엔터티 대표성이 있으므로 타 엔터티와 참조관계를 연결 O
- 보조식별자 : 구분자이나 대표성 X, 참조관계 연결 X
스스로생성여부 : 내부식별자, 외부식별자
- 내부식별자 : 엔터티 내에서 스스로 생성되는 식별자
- 외부식별자 : 타 엔터티로부터 받아오는 식별자, 자신의 엔터티에서 필요한 속성 X, 자식 엔터티에 생성되는 속성 O
참조무결성 제약 조건에 따른 식별자 특징 보유
속성의 수 : 단일식별자, 복합식별자
- 단일식별자 : 하나의 속성으로 구성
- 복합식별자 : 2개 이상의 속성으로 구성
대체 여부 : 본질식별자, 인조식별자
- 본질식별자 : 업무에 의해 만들어지는 식별자 ex) 사번 (업무적 의미가 있음)
- 인조식별자 : 비즈니스 프로세스에 의해 인위적으로 만든 식별자 ex) 일련번호, 주문번호
주식별자 도출기준
1. 해당 업무에서 자주 이용되는 속성, WHERE 절로 항상 기술
2. 명칭, 내역 등과 같이 이름으로 기술되는 것 X
3. 복합으로 주식별자를 구성할 경우, 너무 많은 속성가지면 물리 DB에서 조인으로 인한 성능 저하옴
-> 너무 많으면 인조식별자를 생성한다, 부서명보다는 부서코드
식별자 관계
식별자 : 자식의 주식별자로 부모의 주식별자 상속