DataBase

[SQLD] 엔터티, 속성, NULL 속성

DH_0518 2025. 2. 5. 21:00

 

 

 

Entity(엔터티)

 

 

 

엔터티

  • 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것
  • 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로, 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합
  • 1976년 '피터 첸'에 의해 Entity-Relationship Model이라는 표기법이 만들어짐

 

 

엔터티 조건

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다
  • 유일한 식별자와 유일한 이름을 가져야 한다
  • 두 개 이상의 영속성 인스턴스의 집합이어야 한다(싱글톤 제외)
  • 두 개 이상의 속성(attribute)을 가져야 한다
  • 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다
  • 엔터티는 업무 프로세스에 의해 이용되어야 한다

 

 

엔터티의 발생 시점에 따른 분류

  • 기본 엔터티(Fundamental, Key Entity)
    • 정의: 업무에 원래부터 존재하는 정보, 다른 엔터티와의 관계 없이 독립적으로 생성
    • 특징: 고유한 주식별자(Primary Key)를 가지며, 다른 엔터티의 부모 역할을 한다. 현실에 존재하는 실물이라 생각하면 될듯
    • 예시: 사원, 부서, 고객, 상품, 자재 등
  • 중심 엔터티(Main Entity)
    • 정의: 기본 엔터티로부터 파생되며, 업무에서 중심적인 역할을 수행한다
    • 특징: 데이터 양이 많고, 다른 엔터티와의 관계를 통해 여러 행위 엔터티를 생성한다
    • 예시: 계약, 사고, 청구, 주문, 매출 등
  • 행위 엔터티(Active Entity)
    • 정의: 두 개 이상의 부모 엔터티로부터 발생, 자주 내용이 변경되거나 데이터량이 증가한다
    • 특징: 분석 초기 단계에서는 잘 드러나지 않으며, 상세 설계 단계나 프로세스와의 상관 모델링을 통해 도출된다
    • 예시: 주문 목록, 사원 변경 이력 등

 

 

엔터티 이름 부여 방법

  • 가능하면 현업 업무에서 사용하는 용어를 사용한다
  • 가능하면 약어를 사용하지 않는다
  • 단수명사를 사용한다
  • 유일한 이름을 사용해야 한다
  • 엔터티 생성 의미대로 이름을 부여한다. 즉, 엔터티가 표현하는 대상이나 개념을 명확하게 드러내도록 이름을 지정한다

 

 

ERD 작성 순서

  1. 엔터티 도출(엔터티 그리기)
  2. 엔터티 배치
  3. 엔터티 간 관계 설정
  4. 관계명 기술
  5. 관계의 참여도 기술
  6. 관계의 필수여부 기술

 

 

ERD 작성시 고려사항

  • 가장 중요한 엔터티는 왼쪽 상단에서 조금 아래쪽 중앙에 배치하고, 이를 중심으로 다른 엔터티를 나열한다

 

 

 

 

 

 

 

 

속성(Attribute)

 

 

 

속성

  • 엔터티의 특성을 나타내는 '더 이상 분리할 수 없는 최소의 데이터 단위'를 의미한다

 

 

속성 특징

  • 엔터티에 대한 자세하고 구체적인 정보를 나타낸다
  • 한 개의 속성은 한 개의 속성값을 갖는다
  • 속성도 집합이다
  • 속성에 어떤 유형의 값이 들어가는지를 정의하는 개념을 '도메인(Domain)'이라고 한다. 속성에 대한 데이터 타입과 크기, 제약사항을 지정한다

 

 

특성에 따른 분류

  • 기본 속성 (Basic Attribute)
    • 정의: 업무 분석을 통해 직접 도출된 속성, 엔터티의 핵심적인 특징을 나타냄
    • 특징: 가장 일반적이며, 엔터티의 주요 정보를 구성함
  • 설계 속성 (Designed Attribute)
    • 정의: 업무에는 존재하지 않지만, 데이터 모델링 과정에서 규칙화나 효율성을 위해 새로 도출된 속성
    • 특징: 엔터티를 식별하거나 관계를 명확히 하기 위해 추가됨
    • 예시: 유저 UUID, 상품 코드 등
  • 파생 속성 (Derived Attribute)
    • 정의: 데이터를 조회할 때 성능을 빠르게 하기 위해, 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성
    • 특징: 데이터 정합성을 유지하기 위해 가급적 사용을 최소화 하는 것이 좋다
    • 예시: 생년월일로부터 계산된 나이, 주문일과 배송일로부터 계산된 배송 기간 등

 

 

속성의 명칭 부여

  • 해당 업무에서 사용하는 이름을 부여한다
  • 서술식 속성명은 사용하지 않는다
  • 약어 사용은 가급적 자제한다
  • '전체' 데이터 모델에서 유일성을 확보하는 것이 좋다

 

 

 

 

 

 

 

NULL 속성

 

 

NULL

  • 값이 존재하지 않거나, 아직 입력되지 않는 상태를 의미한다
  • 따라서 NULL은 '값이 없음'을 나타내므로 [" ", 0] 과 동일하지 않다. 공백은 문자, 0은 숫자이다

 

NULL의 특성

  • 타입이 없다. 따라서 어느 특정 '타입'으로 간주할 수 없다
  • [IS NULL]을 제외한 NULL과의 모든 비교는  '알 수 없음(Unknown)'을 반환한다
  • [NULL = NULL] 연산의 결과는 '알 수 없음(Unknown)' 이다
  • 테이블을 생성할 때 'NOT NULL'이나 'PK'가 아닌 필드에는 NULL을 포함할 수 있다

 

NULL과의 연산

  • NULL과의 연산, 혹은 NULL을 포함하는 연산의 결과는 항상 NULL이다. 비교는 Unknown이지만, 연산 결과는 'NULL'임을 명시하자
  • 집계 함수를 계산할 때, NULL의 값은 0으로 간주되지 않고 아예 계산에서 제외된다