Certification_Note/SQL-D

[SQL-D]#02데이터 모델링의 이해 - 엔터티, 속성, 관계, 식별자, 비식별자

앵우 2021. 4. 16. 00:15

엔터티(Entity)

장소, 사람, 물건, 사건, 개념등의 명사, 업무상 관리 필요한 관심사, 저장이 되기 위한 어떤 것(Thing)

업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합 → 인스턴스의 집합

  • 엔터티의 특징

업무에서 꼭 필요한 정보 → 반드시 관리되어야하는 정보여야 한다. 유일한 식별자에 의해 식별이 가능해야 함 인스턴스 2개 이상의 집합, Business process에 의해 이용됨 반드시 속성이 있어야 함 (주식별자만 존재하고 일반속성 없어도 적절X, 관계엔터티 예외) 다른 엔터티와의 관계가 최소 1개 이상 존재 (통계성, 코드성, 내부필요 엔터티 예외)


  • 엔터티의 분류

유무형에 따른 분류)

- 유형엔터티(Tangible entity)

물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 구분 용이

- 개념엔터티(Conceptual entity)

물리적인 형태는 존재하지 않고 관리해야할 개념적 정보로 구분이 되는 엔터티. ex)조직, 보험상품

- 사건엔터티(Event entity) 업무를 수행함에 따라 발생되는 엔터티로서 비교적 발생량이 많으며 각종 통계자료에 이용.

주문, 청구, 미납 등이 해당

발생시점에 따른 분류)

- 기본엔터티(Basic entity)

그 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능한 엔터티. 자신은 타 엔터티의 부모 역할을 하게 된다.

자신의 고유한 주식별자를 가지게 된다.

- 중심엔터티(Main entity)

기본엔터티로부터 발생되고 그 업무에 있어서 중심적인 역할을 한다.

데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성. ex) 계약, 사고,

- 행위엔터티

두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터의 양이 증가된다.

주문목록, 사원변경이력

속성(Attribute)

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

  • 속성의 특징

반드시 해당 업무에서 필요하고 관리하고자하는 정보 정규화 이론에 근간, 정해진 주식별자에 함수적 종속성을 가져야 함 하나의 속성에는 1개의 값만을 가짐. 다중값일 경우 별도의 엔터티 이용하여 분리


  • 속성의 분류

특성에 따른 분류)

- 기본속성

업무로부터 추출한 모든 속성이 여기에 해당하며 가장 일반적이며 많다.

코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호와 같은 속성을 제외한 모든 속성은 기본속성이다.

- 설계속성

업무상 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 새로 만들거나 정의하는 속성 코드성 속성은 운래 속성을 업무상 필요에 의해 변형하여 만든 설계속성, 일련번호

- 파생속성

다른 속성의 영향을 받아 발생하는 속성으로 보통 계산된 값 등이 해당된다.

프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야할 점이 많으므로 가급적 적게 정의

구성 방식에 따른 분류)

PK(기본키) / FK(외래키) / 일반속성

  • 도메인(Domain)

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

엔터티 내에서 속성에 대한 데이터타입/크기/제약사항을 지정하는 것

  • 속성의 명명

해당 업무에서 사용하는 이름 부여 서술식 속성명 사용 X, 약어 사용 가급적 X 전체 데이터 모델에서 유일성 확보하는 것이 좋음

관계(Relationship)

인스턴스 사이의 논리적인 연관성으로서 존재의 형태 or 행위로서 서로에게 연관성이 부여된 상태를 의미한다.

  • 관계와 페어링

관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것이고 이것의 집합을 관계로 표현.

→ 개별 인스턴스가 각각 다른 종류의 관계를 가진다면 두 엔터티 사이 두개이상의 관계 가능.


  • 관계의 표기법

- 관계차수 - Degree/Cardinality)

1:1 관계)

1:M 관계)

M:M관계)

M:N 관계로 표현된 데이터 모델은 이후에 두 개의 주식별자를 상속받은 관계엔터티를 사용하여 3개의 엔터티로 구분하여 M:N을 해소해야 한다.

- 관계선택사양 - Optionality)

IE 표기법 / Barker 표기법 모두 잘 알고 있어야한다. 매우 헷갈리니 주의

IE 표기법의 경우 선택관계의 대상쪽에 0을 표시하여 확인하고,

Barker 표기법의 경우


  • 관계의 읽기

먼저 관계에 참여하는 기준 엔터티를 하나 또는 각으로 읽고 대상 엔터티의 개수를 읽고 관계선택사양과 관계명을 읽도록 한다.

- 기준(Source)엔터티를 한 개 또는 각으로 읽는다.

- 대상(Target)엔터티의 참여관계도 즉, 개수(하나,하나 이상)을 읽는다.

- 관계선택사양과 관계명을 읽는다.

식별자(Identifier)

엔터티를 구분짓는 논리적인 이름, 엔터티를 대표할 수 있는 속성 엔터티에는 반드시 하나의 유일한 식별자가 존재함

논리 데이터 모델링 단계 → 식별자(Identifier), 물리 데이터 모델링 → 키(Key)

  • 식별자 특징

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


  • 식별자 분류

웬만하면 암기하자.

  • 주식별자 도출 기준

- 해당 업무에서 자주 이용되는 속성을 지정

ex) 사원번호 vs 주민번호 → 사원번호 선택

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 피함

ex) 구분자가 존재하지 않을 경우(부서의 이름 등) 새로운 식별자 생성 (일련번호, 코드 등)

- 복합으로 주식별자 구성할 경우 너무 많은 속성 포함되지 않도록

ex) 주식별자 개수가 많을 경우 새로운 인조식별자를 생성하는 것이 데이터 모델을 한층 더 단순하게 만든다.

식별자와 비식별자 관계

  • 외부식별자의 식별자관계

자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우 → NULL이 오면 안된다.

- 발령엔터티는 반드시 사원엔터티가 있어야 자신도 생성될 수 있고 자신의 주식별자도 부모엔터티의 외부식별자 사원번호와 자신의 속성 발령번호로 이루어져 있음을 알 수 있다. → 1:M 관계

- 사원과 임시직사원의 관계와 주식별자를 보면, 임시직사원의 주식별자는 사원의 주식별자와 동일하게 이용되는 경우를 볼 수 있다. → 1:1 관계


  • 외부식별자의 비식별자 관계

부모로부터 속성을 받아 일반속성으로 사용 (약한 종속) 상속받은 속성 타 엔터티에 차단, 부모쪽 관계참여 선택관계

- 부모 없는 자식 생성 가능한 경우

- 엔터티별로 데이터 생명주기 다르게 관리하는 경우

- 여러개 엔터티가 하나로 통합 표현, 각각 별도의 관계 가질 경우

- 자식 엔터티에서 별도의 주식별자 생성이 더 유리할 경우

계약이 반드시 사원에 의해 이루어져 사원번호와 계약번호를 주식별자로 쓸 수 있지만, 계약번호 단독으로도 계약 엔터티의 주식별자를 구성할 수 있으므로 하나만 가지고 있는 것이 더 효율적이다.

  • 비식별자와 식별자 관계 비교