SQLD · SQL 개발자

엔터티·속성·관계

데이터 모델링의 세 가지 구성요소를 다룹니다. 정의를 외우는 문제보다, 주어진 업무 설명에서 무엇이 엔터티이고 무엇이 속성인지 가려내는 문제가 많습니다. 엔터티가 되려면 업무에서 관리할 필요가 있고 인스턴스가 두 개 이상이어야 한다는 기준이 판단의 출발점입니다.

이 주제에서 다루는 내용

  • 엔터티의 성립 요건과 유형 — 유무형, 발생시점에 따른 분류
  • 속성의 분류 — 기본속성, 설계속성, 파생속성
  • 도메인의 의미와 역할
  • 관계의 표기법과 관계차수, 선택성(필수/선택)
  • 엔터티·속성·관계를 업무 서술에서 식별하는 절차

자주 틀리는 지점

  • 인스턴스가 하나뿐인 대상을 엔터티로 고르는 실수.
  • 파생속성을 기본속성과 구분하지 못하는 경우. 계산으로 얻어지면 파생속성입니다.
  • 관계차수와 선택성을 한 덩어리로 보는 경우. 서로 다른 축입니다.

연습문제 3문항

아래 문항은 오리지널 문제입니다. 기출문제가 아닙니다.

  1. 다음 중 엔터티(Entity)의 특징에 대한 설명으로 옳지 않은 것은?

    • A. 엔터티는 업무에서 관리하고자 하는 정보의 단위이며, 실체가 있는 것과 개념적인 것 모두 해당될 수 있다.
    • B. 엔터티의 인스턴스는 유일한 식별자에 의해 식별 가능해야 하며, 둘 이상의 인스턴스가 존재해야 한다.
    • C. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다.
    • D. 엔터티는 속성을 갖지 않아도 되며, 업무 프로세스와 무관하게 정의될 수 있다.

    정답: D

    해설. 엔터티는 반드시 속성을 가져야 하며 업무에서 필요로 하는 정보를 관리해야 한다. D는 이를 부정하므로 틀림. A는 유무형 엔터티 분류, B는 식별자·인스턴스 조건, C는 관계 필수 특성을 각각 올바르게 설명한다.

  2. 물류 회사에서 다음과 같은 배송 테이블을 정규화하려고 한다. 현재 테이블에서 발생할 수 있는 이상현상과 정규화 방향에 대한 설명으로 가장 적절한 것은? [DELIVERY 테이블] DELIVERY_ID | CUSTOMER_NAME | CUSTOMER_PHONE | PRODUCT_LIST | DRIVER_NAME | DRIVER_LICENSE ----------- | ------------- | -------------- | ------------ | ----------- | -------------- D001 | 김철수 | 010-1234-5678 | 노트북,마우스 | 이기사 | 12-34-567890 D002 | 박영희 | 010-9876-5432 | 키보드 | 최운전 | 98-76-543210 D003 | 김철수 | 010-1234-5678 | 모니터 | 이기사 | 12-34-567890

    • A. 현재 테이블은 1정규형을 위반하고 있으며, PRODUCT_LIST 컬럼의 다중값을 별도 테이블로 분리하고, 고객과 기사 정보를 각각 독립된 테이블로 정규화해야 한다.
    • B. 테이블은 3정규형까지 만족하므로 정규화가 필요없으며, 단지 PRODUCT_LIST를 JSON 형태로 변경하면 된다.
    • C. 2정규형 위반이 주요 문제이며, CUSTOMER_NAME과 DRIVER_NAME만 별도 테이블로 분리하면 모든 이상현상이 해결된다.
    • D. 현재 상태에서는 삭제이상만 발생하고 삽입이상과 갱신이상은 발생하지 않으므로, DELIVERY_ID에 인덱스만 추가하면 된다.

    정답: A

    해설. 현재 DELIVERY 테이블은 1정규형(원자값 조건)을 위반하고 있다. PRODUCT_LIST 컬럼에 '노트북,마우스'와 같은 다중값이 저장되어 있기 때문이다. 또한 CUSTOMER_NAME-CUSTOMER_PHONE, DRIVER_NAME-DRIVER_LICENSE 간의 함수적 종속성으로 인해 갱신이상(김철수 전화번호 변경 시 여러 행 수정 필요)과 삽입이상(배송 없이 고객 정보만 저장 불가)이 발생한다. 정답 A가 올바른 정규화 방향을 제시한다. B는 3정규형 만족 판단이 틀렸고, C는 1정규형 위반을 간과했으며, D는 삽입이상과 갱신이상 발생 가능성을 무시했다.

  3. 다음 데이터 모델에서 3단계 스키마 구조에 대한 설명으로 옳은 것은?

    • A. 외부 스키마는 사용자별 뷰를 정의하며, 개념 스키마의 일부분을 추상화하여 보여준다.
    • B. 개념 스키마는 물리적 저장 구조를 정의하며, 인덱스와 저장 방식을 포함한다.
    • C. 내부 스키마는 전체 데이터베이스의 논리적 구조를 나타내며, 엔터티 간의 관계를 정의한다.
    • D. 외부 스키마와 내부 스키마는 직접 연결되어 있으며, 개념 스키마를 거치지 않는다.

    정답: A

    해설. 3단계 스키마에서 외부 스키마는 개별 사용자나 응용프로그램의 관점에서 필요한 데이터만을 뷰(View) 형태로 제공합니다. B는 개념 스키마가 아닌 내부 스키마의 역할입니다. C는 내부 스키마가 아닌 개념 스키마의 역할을 설명했습니다. D는 3단계 스키마의 독립성 원칙에 위배됩니다.

SQLD 연습문제 전체 풀기

같은 시험의 다른 주제