SQL 자격증 과목 1 - 1장 _02

ROK·2022년 8월 23일
0

SQL

목록 보기
2/3

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

관계

문제 20 : 관계

관계란 사전적 의미로 상호 연관성이 있는 상태라 할 수 있다.

연결 목적에 따른 관계 분류

존재에 의한 관계

  • 학교와 학생이라는 엔터티가 각각 존재한다면
  • 학생 엔터티의 특정 인스턴스(철수, 영희)는 학교 엔터티의 특정 인스턴스(~~고, ~~중)에 속해있다
  • 이와 같이 행위에 의한 것이 아니라 단순히 소속에 의한 관계

행위에 의한 관계

  • 손님과 주문이라는 엔터티가 있다면
  • 각 엔터티의 인스턴스끼리 관계가 발생하기 위해서는 손님이 특정 행위를 해야 한다.
  • 이러한 관계를 행위에 의한 관계라고 한다.

문제 21 : 관계의 표기법

관계를 표기할 때는 3가지 개념을 사용한다.
관계명, 관계차수, 선택성 세 가지 이다.

관계명(Membership)

  • 관계명은 엔터티가 관계에 참여하는 형태를 지칭
  • 관계는 두 개의 엔터티에 의해 발생
  • 하나의 관계는 두 개의 관계명을 가짐
    • 각각의 관계명에 따라 하나의 관계가 두 가지 관점으로 표현 될 수 있음
    • 관계가 시작되는 지점을 관계시작점, 관계가 끝나는 지점을 관계끝점이라고 한다.

관계차수(Cardinality)

  • 관계에 참여하는 두 엔터티의 참여자수를 의미
  • 일반적으로 1:1, 1:M, M:N과 같이 관계의 기수성을 나타냄
    • 관계에 하나만 참여하는지, 2개 이상이 참여하는지를 파악하는 것이 중요

관계선택사양(Optinality)

  • 엔터티가 항상 관계에 참여하는지, 선택적으로 관계에 참여하는 것인지 의미
  • 항상 관계에 참여하는 것 필수 참여(Mandatory Membership)
  • 선택적으로 관계에 참여하는 것 선택 참여(Optional Membership)

  • 학생과 수업 엔터티가 있을 때
  • 학생 엔터티는 수업 엔터티와 관계가 있을 수도 있고 없을 수도 있다.
    • 학생 엔터티를 기준 : 학생-수업 관계는 선택 참여
      • 학생은 수업을 들을 수도 안 들을 수도 있다.
    • 수업 엔터티를 기준 : 수업-학생 관계는 필수 참여
      • 수업은 학생이 필수적

문제 23 : 관계 체크 사항

두 개의 엔터티 사이의 관계를 정의할 때는 다음 사항들을 체크해야 한다.

  • 두개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
  • 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
  • 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?
  • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

식별자

문제 25 : 식별자

앞에서 엔터티는 (2개 이상의) 인스턴스의 집합이고, (2개 이상의) 속성을 가지며, 각 인스턴스는 (1개의)속성을 가지고 있는 것을 공부하고 정리했다.

그럼 엔터티 내에서 인스턴스를 구분하는 방법은 무엇일까??
인스턴스를 구별하기 위해서 있는 것이 식별자이다.

식별자 : 여러 개의 인스턴스를 담고 있는 엔터티에서 인스턴스를 구별하기 위한, 엔터티를 대표하는 속성을 의미한다.

키(Key)와 식별자

키(Key)와 비슷한데 키는 데이터베이스에서 데이블에 접근하기 위해 물리 데이터 모델링 단계에서 사용하고, 식별자는 논리 데이터 모델링 단계에서 사용해 업무적으로 구분이 되는 정보라는 차이가 있다.

식별자의 특징

식별자는 주식별자와 외부식별자로 나눠지는데 각각의 특징이 다르다.
지금은 주식별자의 특징

  • 유일성 : 주식별자는 엔터티내의 모든 인스턴스들을 유일하게 구분할 수 있어야 함
  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소가 되어야 한다.
  • 불변성 : 주식별자가 한 번 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
  • 존재성 : 주식별자가 지정되면 반드시 데이터가 존재해야한다(NULL 불가)

대표성 유무에 따른 분류

  • 주식별자(Primary Identifier)
    • 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자
    • 타 엔터티와 참조관계를 연결할 수 있는 식별자
  • 보조식별자(Alternate Identifier)
    • 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자
    • 대표성을 가지지 못해 참조관계를 연결할 수 없는 식별자

주식별자와 보조식별자의 차이는 참조관계를 연결할 수 있고 없고의 차이가 있다.

생성주체에 따른 분류(스스로 생성되었는지)

  • 내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
  • 외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자

속성 개수에 따른 분류

  • 단일식별자 : 하나의 속성으로 구성된 식별자
  • 복합식별자 : 둘 이상의 속성으로 구성된 식별자

업무적 의미에 따른 분류

  • 본질식별자 : 업무에 의해 만들어지는 식별자
  • 인조식별자 : 업무적으로 만들어지지는 않지만 복잡한 구성을 가지고 있기 때문에 인위적으로 만드는 식별자

문제 28 : 주식별자 도출기준

주식별자를 도출하는 것은 중요한 작업이다. 주식별자를 도출하기 위한 기준은

  • 해당 업무에서 자주 사용되는 속성을 주식별자로 정의
  • 명칭, 내역, 사람이름 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
  • 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.

문제 29 : 비식별자 관계

부모 엔터티로부터 속성을 받았지만 이를 자식 엔터티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하게 되는 경우가 있다.
이러한 경우를 비식별자 관계라고 한다.

아래 네 가지 경우에 대해 비식별자 관계에 의한 외부속성을 생성한다.

  • 자식엔터티가 부모엔터티로 받은 속성이 필수 값이 아닐때
  • 엔터티별로 데이터의 생명주기를 다르게 관리할 경우
    • ex. 부모엔터티가 자식엔터티보다 먼저 소멸되는 경우
  • 여러개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각 엔터티가 별도의 관계를 가질 때
  • 자식엔터티에 주식별자로 사용해도 되지만, 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때

식별자와 비식별자관계 모델링

비식별자관계 선택 프로세스

식별자관계를 파악하는데 있어 중요한 한 가지는 비식별자관계를 파악하는 것.
비식별자관계를 파악할 떄 아래 흐름에 따라 선정하면 비식별자관계를 설정할 수 있다.

식별자관계 비식별자관계 비교

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

0개의 댓글