Growth Hoon

20230828_TIL_SQLD {Entity, Attribute, Relationship, Identifiers} 본문

TIL_Today I Learned

20230828_TIL_SQLD {Entity, Attribute, Relationship, Identifiers}

sayhoon 2023. 8. 28. 22:58

Entity (엔터티)

- Entity는 사람, 장소, 물건과 같은 명사이다.

- 저장이 되기 위한 어떤 것

- 예시) Entity - 과목, Instance - 수학, 영어 ... 

- Entity의 특징으로는 반드시 속성이 있어야 한다.

- 다른 Entity와 최소 한 개 이상의 관계가 있어야 한다.

- 식별이 가능해야하며 (중복적인 명사 x - 이름) , 업무프로세스에 사용이 되어야 한다.

 

Entity의 분류

1. 유무형에 따른 분류

  - 유형 엔터티 : 일반적인 물리형태가 있는 Entity

  - 개념 엔터티 : 물리적인 형태가 없는 Entity ( 조직, 부서 등)

  - 사건 엔터티 : 업무를 수행하면서 발생하는 Entity

2. 발생시점에 따른 분류

  - 기본 엔터티 : 원래 존재하는정보, 타 엔터티의 부모 역할을 한다

  - 중심 엔터티 : 기본 엔터티로 발생하고, 업무에 있어서 중심적인 역할을 한다.

  - 행위 엔터티 : 두 개 이상의 부모 엔터티로부터 발생, 내용이 자주 바뀌거나 데이터 증가


속성 (Attribute)이란?

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

- S/W 비용을 산정하는 기능점수 산정 시, 분리된 속성을 하나의 속성(DET)으로 계산

- 예시로 "년도월일"이 있다.

 

엔터티는 인스턴스를 포함하고, 인스턴스는 속성을 포함한다.

각 속성마다 속성값이 존재한다.

 

속성의 특성에 따른 분류

- 기본 속성 : 엔터티를 식별하기 위해 부여된 일련번호 ( 제조년월, 제조원가 등 ) 

- 설계 속성 : 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의 ( 제품 분류 번호 )

- 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성 ( 평균값 = 제품 분류번호 별 제조원가의 평균)

 

엔터티 구성 방식에 따른 분류

- Primary Key 속성, Foreign Key 속성, 둘 다 아닌 일반 속성

 

Domain(도메인) 

- 각 속성이 가질 수 있는 값의 범위


관계 (Relationship)란?

- Entity의 instance 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

 

관계의 분류

- Sayhoon은 DB팀에 속한다와 같은 존재의 형태에 의한 관계

- 소비자 A는 생수를 구매한다와 같은 행위에 의한 관계

 

관계의 표기법

- 관계명 : 관점에 따라 능동적, 수동적으로 명명

- 관계차수 : Entity간 관계에서 참여자의 수를 표현 ( Crow's Foot은 1:M )

- 관계선택사항 : 필수참여와 선택참여로 구별됨. 선택참여는 Entity쪽을 원으로 표시


식별자 (Identifiers) 란?

식별자라는 용어는 업무적으로 구분되는 정보, Key는 DB Table에 접근을 위한 매개체

하나의 Entity는 반드시 하나의 식별자(Key)가 존재해야 한다.

 

주식별자(PK)의 특징

- 유일성 : Entity내 instance들을 유일하게 구분

- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되야함.

- 불변성 : 주식별자의 값은 변하지 않아야함.

- 존재성 : 주식별자에는 반드시 값이 존재해야함.

 

식별자의 분류

- 대표성 여부 : 주식별자, 보조 식별자로 구분함.

- 스스로 생성여부 : 내부식별자와 외부식별자( Foreign Identifier)로 구별

- 속성의 수 : 단일식별자와 복합식별자로 구분

- 대체 여부 : 본질식별자(업무에 의해 생성)인조식별자(원조식별자가 복잡하여 생성)로 구분

 

식별자관계

- 부모 Entity의 PK가 자식 Entity의 PK(실제로는 FK)로서 활용이 된다면 1:1관계

- 자식 Entity의 PK와 부모로 받은 FK를 사용하면 1:M의 관계

 

비식별자관계

- 자식Entity에서 부모의 PK를 받지 않는 경우

- Life Cycle를 다르게 관리하는 경우 : 부모의 instance가 자식의 entity와 관계가 있지만 먼저 소멸되는 경우

- 여러 Entity가 통합되어 각각의 Entity가 별도의 관계를 가지는 경우

- 자식 Entity에서 별도의 PK를 생성하는 것이 유리한 경우


1과목의 2장인 성능 데이터 모델링은 내일 정리하기로 한다.

오늘 1과목을 한번 쭉 읽고, CS책 1장의 일부를 읽었다. 

 

이번주도 화이팅 !