컴퓨터공학 공부/SQLD (SQL 전문가 가이드)

SQLD 자격증 공부 데이터 모델링의 이해-관계, 식별자(SQL 전문가가이드)

개발학생 2024. 4. 2. 17:45
반응형

*본 게시물은 2013년도 SQL 전문가 가이드 교재(일명 '노랭이')를 참고하여 공부하고 정리한 게시물입니다

 

1과목 데이터 모델링의 이해: 제1장 데이터 모델링의 이해

1. 관계

  • 엔터티 간의 논리적인 관련성, 동사형

1) 관계의 페어링

  • 인스턴스 간 개별적으로 관계를 가지는 것
  • 엔터티내에 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스(각 데이터)
  • 관계는 관계 페어링의 집합을 논리적으로 표현한 것

2) 관계의 분류

  • ERD 기준: 표기구분 안함
  • UML(Unified Modeling Language) 기준 클래스 다이어그램: 연관관계와 의존관계로 표현

(1) 존재 관계: 엔터티 간의 상태

예) 사원은 부서에 항상 속해있다

(2) 행위 관계: 엔터티 간에 발생하는 행위

예) 주문은 고객이 주문을 할 때 발생한다

3) 관계 표기법

(1) 관계명(Membership)

- 관계의 이름

(2) 관계차수(Degree/Cardinality) - IE 표기법만 이미지화함(Barker 표기법은 없음)

- 관계 내 튜플의 전체 개수, 1은 직선 多는 삼발로 표시

- 1:1 관계(ONE TO ONE)

- 1:M 관계(ONE TO MANY)

- M:M 관계(MANY TO MANY)


‒ M:N 관계: 관계형 DB에서 M:N 관계의 조인은 카테시안 곱 발생

(3) 관계선택사양(Optionality)

- 참여하는 엔터티가 항상 참여하는지, 참여할 수도 있는지에 따라 필수와 선택 관계로 구분

   -> 필수관계는 I 선택관계는 O로 표시

- 어떻게 설정했는지에 따라 참조무결성 제약조건의 규칙이 바뀌게 되므로 주의 깊은 모델링 필요

4) 관계 읽기

기준 엔터티 각각/한 개 -> 대상 엔터티의 관계차수(관계참여도 개수) -> 관계선택사양 -> 관계명

 

2. 식별자

엔터티를 대표할 수 있는 유일성을 만족하는 속성

-> 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성(한 엔터티는 반드시 하나의 유일한 식별자가 존재해야 함)

1) 특징

특징 내용 예시
유일성 주식별자에 의해 엔터티 내 모든 인스턴스들을 유일하게 구분 사원번호가 주식별자이고, 모든 직원들에게 부여됨
최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 사원번호만으로도 고유한 구조인데,
사원분류코드+사원코드로 식별자가 구성될 경우 부적절한 주식별자 구조임
불변성 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 사원변호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생하는 개념
존재성 주식별자가 지정되면 반드시 데이터 값 존재(Null 안됨) 사원번호 없는 회사직원은 있을 수 없음

2) 종류

분류 식별자 설명
대표성 여부 주식별자 대표성을 만족하는 식별자로,
각 컬럼을 구분할 수 있는 구분자이며 타 엔터니와 참조관계를 연결할 수도 있음
  보조 식별자 유일성과 최소성만 만족하는 식별자로, 대표성을 가지지 못해 참조 관계 연결에 사용할 수 없음
스스로
생성 여부
내부 식별자 엔터티 내부에서 스스로 만들어지는, 자연스럽게 존재하는 식별자 (=본질식별자)
  외부 식별자 타 엔터티와의 관계를 통해서만 생성되는 식별자
속성의 수 단일 식별자 하나의 속성으로 구성
  복합 식별자 둘 이상의 속성으로 구성
대체 여부 본질 식별자 업무에 의해 만들어지는, 대체할 수 없는 식별자
  인조 식별자 인위적으로 만들어지는 대체가능한 식별자
(순서번호(Sequence Number)를 사용하여 생성된 식별자)
-> 후보 식별자 중 주식별자로 선정할 것이 없거나,
     주식별자가 너무 많은 칼럼으로 구성되어 있을 때 사용

※ DB 키의 종류

 기본키(PK; Primary Key): 엔터티를 대표하는 키, 후보키 중 선정됨

 후보키: 유일성과 최소성을 만족하는 키

 슈퍼키: 유일성만 만족하는 키

 대체키: 기본키를 제외한 나머지 후보키

 외래키(FK; Foreign Key): 여러 테이블의 기본 키 필드, 참조 무결성(Referential Integrity)을 확인하기 위해 사용됨 (허용된 데이터 값만 저장하기 위함)

3) 주식별자 도출 기준

- 업무에서 자주 이용되는 속성

- 명칭/내역 등과 같은 이름 명명 지양(일련번호와 코드 사용)

- 복합 식별자 지양(속성의 수가 많아지지 않도록 함)

4) 식별자 관계와 비식별자관계에 따른 식별자

(1) 식별자관계와 비식별자 관계의 결정

  • 관계와 속성을 정의하고 주식별자를 정의하면 논리적인 관계에 의해 자연스럽게 외부식별자(Foreign Key 역할) 도출
    • 엔터티에 주식별자 지정 후 엔티티간 관계를 연결하면, 부모쪽의 주식별자를 자식엔터티의 속성으로 내려 보냄
부모로부터 받은 외부식별자 이용 유형 설명 예시
자신의 주식별자로 이용 null값이 오면 안되므로,
반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성됨
부모 속성을 자식엔터티가 모두 사용하고, 그것만으로 주식별자로 사용한다면 부모-자식엔터티는
1:1의 관계
    부모 속성과 다른 부모 속성을 합치거나, 부모 속성을 스스로 가지고 있는 속성과 합쳐서 함께 주식별자로 구성한다면 부모-자식엔터티는
1:m의 관계
부모와 연결이 되는 속성으로만 이용 부모로부터 속성을 받았지만,
자신의 주식별자로 사용하지 않고 일반 속성으로만 사용
부모 없는 자식 엔터티가 생성될 수 있는 경우
    엔터티별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
=> 부모가 자식보다 먼저 소멸할 수 있음
    여러 개의 엔터티를 하나의 엔터티로 통합되어 표현했는데, 각 엔터티가 별도의 관계를 가질 경우
    자식엔터티에서 별도 주식별자를 생성하는 것이 더 유리하다고 판단될
경우

(2) 한 관계로만 설정할 경우의 문제점

- 식별자 관계로만 설정
  : 특히 부모의 모든 속성을 자식의 주식별자로 만들 경우, 1개만 존재해야 하는 주식별자의 속성 수가 많아지게 됨
    => 개발 복잡성과 오류가능성 유발 요인이 될 수 있음

- 비식별자 관계로만 설정

  : 다른 엔터티의 정보를 조회할 때 불필요한 조인이 다량으로 유발되며, SQL 구문이 길어져 성능 저하

(3) 식별자관계와 비식별자관계 모델링

1. 비식별자관계 선택 시 고려사항

 

2. 식별자관계와 비식별자관계 비교

항목 식별자관계 비식별자관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 주식별자의 구성에 포함됨 자식 일반 속성에 포함됨
표기법 실선 표현 점선 표현
연결 고려사항 - 반드시 부모엔터티 종속
- 자식 주식별자구성에 부모 주식별자포함
- 상속받은 주식별자속성을 타 엔터티에 이전
- 약한 종속관계
- 자식 주식별자구성을 독립적으로 구성
- 자식 주식별자구성에 부모 주식별자 부분 필요
- 상속받은 주식별자속서을 타 엔터티에 차단
- 부모쪽의 관계참여가 선택관계

 

반응형