[SQLD] #2. 데이터 모델링의 이해 - 엔터티/속성/관계/식별자

김정인·2021년 1월 8일
1

SQLD

목록 보기
2/16

엔터티 (Entity)

💡 엔터티

    업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것 (Thing)

  • 업무에서 꼭 필요한 정보
  • 유일한 식별자로 식별이 가능해야 함
  • 인스턴스 2개 이상의 집합
  • 업무 프로세스에 의해 이용되어야 함
  • 반드시 속성이 있어야 함
  • 다른 엔터티와 최소 1개 이상의 관계
  • 명명규칙: 현업업무에서 사용하는 용어 사용, 약어 사용금지, 단수명사 사용, 고유한 이름 사용, 생성의미대로 부여

💡 엔터티의 분류

유무형에 따른 분류

유형내용
유형 엔터티- 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티사원, 물품, 강사
개념 엔터티- 물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분이 되는 엔터티조직, 보험상품
사건 엔터티- 업무를 수행함에 따라 발생되는 엔터티
- 비교적 발생량이 많으며 각종 통계자료에 이용
주문, 청구, 미납

발생시점에 따른 분류

유형내용
기본 엔터티- 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지않고 독립적으로 생성이 가능
- 타 엔터티의 부모의 역할
- 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자 가짐
사원, 부서, 고객, 상품, 자제
중심 엔터티- 기본엔터티로부터 발생되고 그 업무에 있어서 중심적인 역할
- 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성
계약, 사고, 청구, 주문, 매출
행위 엔터티-두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가주문목록, 사원변경이력

속성 (Attribute)

💡 속성

    업무에서 필요로 하는 인스턴스로 관리하고자하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위

  • 엔터티를 설명하고 인스턴스의 구성요소가 된다.
  • 한 개의 엔터티는 2개 이상의 인스턴스 집합
  • 한 개의 엔터티는 2개 이상의 속성을 가짐
  • 한 개의 속성은 1개의 속성값 (value)을 가짐
  • 명명규칙: 해당업무에서 사용하는 이름 부여, 서술식 속성명 사용 금지, 약어 사용 금지, 전체 데이터모델에서 유일성 확보
  • 표기법: IE표기법, Barker 표기법 등

💡 속성의 분류

특성에 따른 분류

유형내용
기본 속성- 업무로부터 추출한 모든 일반적인 속성
설계 속성- 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성일련번호
파생 속성- 다른 속성에 영향을 받아 발생하는 속성
- 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산
- 타 속성에 의해 지속적으로 영향을 받아 자신의 값이 변하는 성질

구성 방식에 따른 분류

유형내용
PK (Primary Key) 속성엔터티를 식별할 수 있는 속성
FK (Foreign Key) 속성다른 엔터티와의 관계에서 포함된 속성
일반 속성엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성

유형내용
복합 속성여러 세부 속성들로 구성주소- 시, 구, 동, 번지
단순 속성더 이상 다른 속성들로 구성될 수 없는 단순한 속성

유형내용
단일값 속성- 속성 하나에 한 개의 값주민등록번호
다중값 속성- 여러 개의 값을 가지는 경우
-1차 정규화의 대상
전화번호-집 번호, 휴대전화 번호, 회사 번호

💡 도메인

    각 속성이 가질 수 있는 값의 범위로, 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것

관계 (Relationship)

💡 관계

    엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

  • 존재에 의한 관계 / 행위에 의한 관계

💡 관계 도출 시 체크 할 사향

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

💡 관계의 표기법

  • 관계명(Membership) : 관계의 이름
  • 관계차수(Cardinality) : 1:1, 1:M, M:N
  • 관계선택사양(Optionality) : 필수관계, 선택관계

식별자

💡 식별자

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

  • 식별자는 논리 데이터 모델링 단계에 사용 / Key는 물리 데이터 모델링 단계에 사용

💡 식별자의 특징

특징내용
유일성주식별자에 의해 엔터티 내의 모든 인스턴스들을 유일하게 구분
최소성주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소
불변성주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않음
존재성주식별자가 지정되면 반드시 데이터 값이 존재 (Null 불가)

💡 식별자의 분류

기준OX
대표성주식별자보조식별자
스스로 생성내부식별자외부식별자
단일속성단일식별자복합식별자
대체가능본질식별자인조식별자

💡 주식별자 도출기준

  • 해당 업무에서 자주 이용되는 속성을 지정
  • 명칭, 내역 등과 같이 이름으로 기술되는 것들은 피함
  • 복합으로 주식별자로 구성할 경우 속성의 수가 너무 많아지지 않도록 함(인조식별자로 대체 가능)

💡 식별자관계

  • 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우
  • 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성
  • 강한 연결관계 표현
  • 1:1 또는 1:M
  • 문제: 주식별자 속성이 지속적으로 증가하기 때문에 복잡성과 오류 가능성 유발

💡 비식별자관계

  • 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우
  • 부모 없는 자식 생성 가능
  • 약한 연결관계 표현
  • 문제: 기준 속성이 상속되지 않아 자식엔티티 데이터 처리 시 부모엔터티까지 조인. 불필요한 조인 발생, SQL구문 길어져 성능 저하

데이터 전문가 지식포털 참고

0개의 댓글