SJ_Koding

SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) 본문

SQL/SQLD

SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship)

성지코딩 2023. 11. 11. 16:47

2023.11.09 - [SQL/SQLD] - SQLD 대비 (1) - 데이터 모델의 이해

 

SQLD 대비 (1) - 데이터 모델의 이해

시험이 2주일도 안남았다. 이론문제를 간단히 정리하고 노랭이 책을 풀고 오답노트를 이용해 시험을 대비해볼 생각이다. 교과목 수업으로 데이터베이스를 배운 경험이 있고 프로그래머스에서 S

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

https://youtu.be/gmMaH5mMJ9M?t=862

엔터티 (논리적 모델링을 할 때, 테이블의 다른 말)

  • 데이터의 집합
  • 저장되며 관리되는 데이터
  • 개념, 사건, 장소 등의 명사
  • 유형과 무형에 따른 분류
    • 유형 엔터티: 물리적이며 안정적이며 지속적인 엔터티
      • 사원, 제품, 교수 등등
    • 개념 엔터티: 물리적이진 않지만 개념적으로 존재하며 정보로 구분되는 엔터티
      • 강의, 금융상품, 부서 등등
    • 사건 엔터티: 비즈니스 프로세스에 따라 발생되는 엔터티. 데이터가 많다.
      • 구매, 판매, 영업, 수납 등등
  • 발생 시점에 따른 엔터티 분류
    • 기본 엔터티: 키 엔터티라고 하며, 독립적으로 생성 및 관리된다. (유형 엔터티와 비슷)
      • 고객, 부서, 판매제품
    • 중심 엔터티: 기본 엔터티로 부터 발생되는 행위 엔터티를 생성하는 중간 엔터티이다. (개념 엔터티와 비슷)
      • 계좌, 주문, 수납 등등
    • 행위 엔터티: 상위에 있는 2개 이상의 엔터티로 부터 발생되는 엔터티이다. (사건 엔터티와 비슷)
      • 주문 이력, 접속 이력, 수납 이력 등등

* 엔터티의 특징

  1. 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
  2. 유일한 식별자에 의해 식별이 가능해야 한다.
  3. 영속적으로 존재하는 두 개 이상의 인스턴스 집합이어야 한다.
  4. 엔터티는 업무 프로세스에 의해 이용되어야 한다.
  5. 엔터티는 반드시 속성이 있어야 한다.
  6. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야한다.

* 엔터티를 명명하는 방법

  1. 현업업무에서 사용하는 용어를 사용한다.
  2. 약어를 사용하지 않는다.
  3. 단수명사를 사용한다.
  4. 모든 엔터티를 통틀어서 유일하게 이름이 부여되어야 한다.

 


속성 (Attribute, 테이블의 컬럼이라 생각하자)

  • 엔터티가 가지는 항목
  • 속성은 더 이상 분리 되지 않는다.
  • 업무에 필요한 데이터를 저장 한다.
  • 인스턴스의 구성 요소로 최소의 데이터 단위 이다.
  • 속성의 특징
    • 속성은 업무에서 관리되는 정보이다.
    • 속성은 하나의 값만 가진다.
    • 주식별자에게 함수적으로 종속된다. 기본키에 따라 속성의 값도 변경될 수 있다.
  • 특성에 따른 속성의 종류
    • 기본 속성: 비즈니스 프로세스에서 도출한 본래의 속성
      • 이름, ID, 전화번호, 등록일시 등등
    • 설계 속성: 데이터 모델링 과정에서 발생되는 속성 (데이터 모델링을 위해 만들어낸 것)
      • 상품코드, 지점코드 등등
    • 파생 속성: 다른 속성에 의해서 만들어지는 속성
      • 합계, 평균 등등

관계 (Relationship)

1. 관계의 개념

  • 엔터티간 논리적인 연관성을 의미한다.
  • 엔터티의 정의에 따라 영향을 받을 수 있다.
  • 속성 정의 및 관계 정의에 따라서 다양하게 변할 수 있다.

2. 관계의 분류

  • 존재에 의한 관계
    • ex) 사원 홍길동은 부서 DB팀에 소속한다(존재)
  • 행위에 의한 관계
    • ex) 고객 홍길동은 A231메뉴를 주문한다(행위).

3. 관계의 표기법

  • 관계명: 관계의 이름
    • 관계에 엔터티가 참여하는 형태를 정의한다.
    • 각 두개의 관계명을 가진다.
    • 관계명은 능동적 또는 수동적으로 명명된다.
    • 애매한 동사를 피하고 현재형으로 표기한다.
  • 관계차수: 1:1, 1:M, M:M
    • 관계에 있는 엔터티간에 참여하는 수를 의미한다.
    • 1:1 - 한 엔터티 인스턴스(row)가 다른 엔터티의 단 하나의 인스턴스와 관계를 가지는 경우
      • ex) '사람'과 '여권'의 관계
    • 1:M 예시 - 한 엔터티의 단일 인스턴스가 다른 엔터티의 여러 인스턴스와 관계를 가지는 경우
      • ex) '강사'와 '강의'의 관계. 한 강사가 여러 강의를 가르칠 수 있지만. 각 강의는 단 한 명의 강사에 의해서만 가르쳐짐.
    • M:M 예시 - 한 엔터티의 여러 인스턴스가 다른 엔터티의 여러 인스턴스와 관계를 가지는 경우:
      • ex) '학생'과 '강의'의 관계. 여러 학생들이 여러 강의를 수강할 수 있고, 각 강의는 여러 학생들에 의해 수강될 수 있음.
  • 관계 선택 사양: 필수 관계, 선택 관계
    • 엔터티가 관계에 있어 항상 참여하는지, 선택적 참여를 하는지 표기한다.
    • 필수 관계 - 한 엔터티의 인스턴스가 반드시 다른 엔터티와 관계를 맺어야 함
      • ex) '자동차'와 '엔진'의 관계. 각 '자동차'는 반드시 하나의 '엔진'을 가지고 있어야 한다. 여기서 '엔진'이 없는 '자동차'는 존재할 수 없으므로, 이 관계는 필수적임
    • 선택 관계 - 한 엔터티의 인스턴스가 다른 엔터티와 관계를 맺을 수도 있고 맺지 않을 수도 있음.
      • 관계 표기법에서 까마귀 발 옆에 O 표기 
      • ex) '학생'과 '클럽'의 관계. 학생은 클럽에 가입할 수도 있고, 가입하지 않을 수도 있음.

관계 표기법, 이때 O는 선택관계를 의미, 위에서는 없으므로 필수관계임

* 두 개의 엔터티 사이에서 관계를 도출 할 때 체크 할 사항

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

다음 글

2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자

 

SQLD 대비 (3) - 식별자

2023.11.11 - [SQL/SQLD] - SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) 2023.11.09 - [SQL/SQLD] - SQLD 대비 (1) - 데이터 모델의 이해 S

sjkoding.tistory.com