62
SQL Developer 2nd 엔터티 . 속성 . 관계 . 식별

Sql developer 2nd

Embed Size (px)

DESCRIPTION

SQL Developer 스터디 2주차 - 엔터티 - 속성 - 관계 - 식별자

Citation preview

Page 1: Sql developer 2nd

SQL Developer 2nd!

엔터티 . 속성 . 관계 . 식별자

Page 2: Sql developer 2nd

Entity (엔터티)

Page 3: Sql developer 2nd

엔터티(Entity) 개념사람, 장소, 물건, 사건, 개념 등의 명사로 표현

업무상 관리가 필요한 관심사저장이 되기 위한 어떤 것

Page 4: Sql developer 2nd

개발자 관점에서의 개념= Entity= Instance

Instance

Entity

Page 5: Sql developer 2nd

Entity / Instance 관계와 표기

Page 6: Sql developer 2nd

엔터티(Entity)의 특징

• 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다. ( ex : 환자, 토익 응시횟수 … )

• 유일한 식별자에 의해 식별이 가능해야 한다.

• 영속적으로 존재하는 인스턴스의 집합이어야 한다. ( ‘한 개’ 가 아니라 ‘두 개 이상’ )

• 엔터티는 업무 프로세스에 의해 이용되어야 한다.

• 엔터티는 반드시 속성이 있어야 한다.

• 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.

Page 7: Sql developer 2nd

1) 업무에서 필요로 하는 정보

업무영역 내에서 관리가 필요한지 여부를 판단하는 것이 중요

Page 8: Sql developer 2nd

2) 식별이 가능해야 함

업무적으로 의미를 가지는 인스턴스가 유일한지를 검증이 필요

Page 9: Sql developer 2nd

3) 인스턴스의 집합

인스턴스가 한 개뿐 이라면 집합의 성립이 되지 않음

Page 10: Sql developer 2nd

4) 업무프로세스에 의해 이용

사용되지 않은 엔터티는 프로세스에서 누락된 엔터티 이거나 프로세스에 필요없는 엔터티 일 수 있음

Page 11: Sql developer 2nd

5) 속성을 포함

속성이 존재하지 않으면 존재할 필요가 없음

Page 12: Sql developer 2nd

6) 관계의 존재

엔터티가 관계가 없으면, 잘못된 엔터티이거나 관계가 누락될 가능성이 큼

예외 ) 통계용 엔터티, 코드성 엔터티, 시스템내부 엔터티

Page 13: Sql developer 2nd

엔터티(Entity)의 분류

• 유무형에 따른 종류 A. 유형 엔터티 : 물리적형태, 안정 ∙ 지속적으로 활용되는 엔터티

B. 개념 엔터티 : 개념적형태, 관리해야할 개념적 엔터티

C. 사건 엔터티 : 업무진행상 발생량이 많고, 통계용으로 주로 쓰이는 엔터티

• 발생시점에 따른 종류 A. 기본 엔터티 : 다른 엔터티와 관계에 의해 생성되지 않고, 독립적으로 생성하는 엔터티

B. 중심 엔터티 : 기본 엔터티로부터 발생하고, 업무의 중심이 되는 엔터티

C. 행위 엔터티 : 두 개 이상의 부모 엔터티로부터 발생되고, 내용이 변경되거나 데이터양 이 증가함

Page 14: Sql developer 2nd

엔터티(Entity) 분류 방법

Page 15: Sql developer 2nd

엔터티(Entity)의 명명(Naming)

• 가능하면 현업업무에서 사용하는 용어를 사용

• 가능하면 약어를 사용하지 않는다.

• 단수명사를 사용한다.

• 모든 엔터티에서 유일하게 이름이 부여되어야 한다.

• 엔터티 생성 의미대로 이름을 부여한다. ex ) 고객제품

Page 16: Sql developer 2nd

Attribute (속성)

Page 17: Sql developer 2nd

속성(Attribute)의 개념

인스턴스의 구성요소!

Page 18: Sql developer 2nd

엔터티, 인스턴스, 속성, 속성값의 관계

개발자 개념으로…?

?

A. 엔터티 : Table

B. 인스턴스 : Row

C. 속성 : Column

D. 속성값 : Value

Page 19: Sql developer 2nd

속성(Attribute)의 표기법

엔터티에 따른 속성들을 표기…

Page 20: Sql developer 2nd

Wordpress ERD

Page 21: Sql developer 2nd

속성(Attribute)의 특징

• 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. ( ex : 강사의 교재이름 )

• 정규화 이론에 근간하여 정해진 주 식별자에 함수적 종속성을 가져야 한다.

• 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.

Page 22: Sql developer 2nd

속성(Attribute)의 분류• 속성의 특성에 따른 분류

A. 기본 속성 : 업무 분석을 통해 정의한 속성 ( 기분존 정의된 속성 제외 ) B. 설계 속성 : 업무상 존재하지 않지만 설계 시 도출된 속성 ( 코드성 속성 ) C. 파생 속성 : 다른 속성으로 부터 계산이나 변형되는 속성

• 엔터티 구성방식에 따른 분류 A. 식별자 : PK(Primary Key) 속성, FK(Foreign Key) 속성, 일반 속성 B. 세부 의미 : 단순형(Simple Attribute), 복합형(Composite Attribute) C. 값의 수 : 단일값(Single Value), 다중값(Multiple Value),

단일값 속성(Single-Value Attribute), 다중값 속성(Multiple-Value Attribute)

Page 23: Sql developer 2nd

도메인(Domain)

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

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

Page 24: Sql developer 2nd

속성의 명명(Naming)

Page 25: Sql developer 2nd

Relationship (관계)

Page 26: Sql developer 2nd

관계(Relationship)의 정의

Page 27: Sql developer 2nd

관계의 패어링(Paring)

엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것 [ 패어링 ] 인스턴스를 집합화 하여 관계를 도출

Page 28: Sql developer 2nd

관계의 분류

Page 29: Sql developer 2nd

Class Diagram

연관 관계 : 실선 ( 멤버변수 사용 ) 의존 관계 : 점선 ( 파라미터 사용 )

Page 30: Sql developer 2nd

관계의 표기법

• 관계명 (Membership) : 관계의 이름

• 관계차수 (Cardinality) : 1:1, 1:M, M:N

• 관계선택사양 (Optionality) : 필수관계, 선택관계

Page 31: Sql developer 2nd

1) 관계명(Membership)

• 관계 시작점(The Beginning)과 관계 끝점(The End)을 능동적 혹은 수동적으로 명명

• 애매한 동사를 피하고, 현재형으로 표현해야 한다. 실전에서 잘 사용되지 않음

Page 32: Sql developer 2nd

2) 관계차수(Degree/Cardinality)

1:1

1:M

M:N

Page 33: Sql developer 2nd

관계 차수의 실제 ERD

Page 34: Sql developer 2nd

3) 관계선택사양

• 필수 참여 (Mandatory Membership) : 관계되는 속성이 필수적으로 존재해야한다. • 선택 참여 (Optional Membership) : 관계되는 속성이 null을 허용 할 수 있다. 단, 0(zero) to 0(zero) 관계가 되는 경우는 관계설정이 잘못되었는지 판단해야 한다.

Sync & Async? Equal & Outer?

Page 35: Sql developer 2nd

관계 체크사항

• 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?

• 두 개의 엔터티 사이에 정보의 조합이 발생되는가?

• 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

• 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?

Page 36: Sql developer 2nd

관계 읽기

Page 37: Sql developer 2nd

Identifiers (식별자)

Page 38: Sql developer 2nd

식별자(Identifiers)의 개념

= KEY

Page 39: Sql developer 2nd

식별자(Identifiers)의 특징

외부식별자의 경우 주식별자와 일치하지 않으며, 참조무결성 제약조건(Referential Integrity)에 따른 특징을 가짐

어떤 실체의 튜플이 다른 실체에 있는 튜플을 참조하려면 참조되는 튜플이 반드시 그 실체 내에 존재하여야 한다는 것

Page 40: Sql developer 2nd

식별자(Identifiers) 분류

Page 41: Sql developer 2nd

식별자(Identifiers) 표기법

Page 42: Sql developer 2nd

주식별자 도출기준

• 해당 업무에서 자주 이용되는 속성을 주 식별자로 지정한다.

• 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주 식별자로 지정하지 않는다.

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

Page 43: Sql developer 2nd

자주 이용되는 속성

Page 44: Sql developer 2nd

이름으로 기술되는 속성

공통코드…

Page 45: Sql developer 2nd

속성 수의 제한

Page 46: Sql developer 2nd

식별자관계와 비식별자관계의 결정

엔터티 사이 관계유형은 업무특징, 자식엔터티의 주식별자구성 및 SQL 전략에 의해 결정

Page 47: Sql developer 2nd

식별자 관계

부모의 주식별자가 상속이 되는 경우

Page 48: Sql developer 2nd

비식별자 관계

Page 49: Sql developer 2nd

비식별자 관계• 부모엔터티에 인스턴스가 자식 엔터티와 관계를 가지고 있었지만, 자식만 남겨두고 부모가 먼저 소멸 될 수 있는 경우

• 대안으로 Foreign Key를 연결하지 않는 임시적인 방법이 있음

• 모델상으론 비식별자 관계로 설정하는 것이 바람직함

• 엔터티 통합으로 인한 식별자관계가 비식별자 관계가 되는 경우

• 자식엔터티에 별도의 주식별자를 생성하는 방법을 이용한다면 외부식별자로 표현

Page 50: Sql developer 2nd

식별자 관계로만 설정시 문제점

부모에서 자식으로 식별자 관계로 연결되므로 인해 주식별자의 속성 수가 많아지게 된다.

Page 51: Sql developer 2nd

식별자 관계로만 설정시 문제점(2)

Page 52: Sql developer 2nd

식별자 관계로만 설정시 문제점(3)

Page 53: Sql developer 2nd

비식별자 관계로만 설정시 문제점

Page 54: Sql developer 2nd

비식별자 관계로만 설정시 문제점(2)

Page 55: Sql developer 2nd

식별자관계와 비식별자관계 모델링

Page 56: Sql developer 2nd

식별자관계와 비식별자관계 모델링(2)

Page 57: Sql developer 2nd

연습문제

• 문제 1) 데이터 모델링의 세 가지 중요개념에 속하지 않는 것은? A. 업무가 관여하는 어떤것(Things) B. 업무가 관여하는 어떤것의 행위(Events) C. 업무가 관여하는 어떤것의 성격(Attributes) D. 업무가 관여하는 어떤것의 관계(Relationships)

• 문제 2) 발생시점에 따라 구분할 수 있는 엔터티의 유형이 아닌 것은? A. 행위 엔터티(Active Entity) B. 중심 엔터티(Main Entity) C. 개념 엔터티(Conceptual Entity) D. 기본 엔터티(Basic Entity)

Page 58: Sql developer 2nd

연습문제• 문제 3) 이 속성이 없어도 다른 속성을 이용하여 결과를 도출할 수 있는 특징을 가진 속성의 이름은?

A. 설계 속성(Designed Attribute) B. 파생 속성(Derived Attribute) C. 기본 속성(Basic Attribute) D. 관계 속성(Associative Attribute)

• 문제 4) 다음 설명이 나태내는 데이터 모델의 개념은 무엇인가? 학생이라는 엔터티가 있을 때 학점이라는 속성의 값의 범위는 0.0에서 4.0 사이의 실수 값이며 주소라는 속성은 길이가 20자리 이내의 문자열로 정의할 수 있다 A. 도메인(Domain) B. 용어사전(Word Dictionary) C. 속성사전(Attribute Dictionary) D. 시스템 카탈로그(System Catalog)

Page 59: Sql developer 2nd

연습문제

• 문제 5) 식별자의 대체여부에 따라 분류하는 방식은? A. 주식별자 - 보조식별자 B. 내부식별자 - 외부식별자 C. 본질식별자 - 인조식별자 D. 단일식별자 - 복합식별자

• 문제 6) 다음 개념에 해당하는 관계는 어떤 관계를 설명한 것인가? 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용한다. A. 식별자관계(Identifying Relationship) B. 일반속성관계(Attribute Relationship) C. 비식별자관계(Non-Identifying Relationship) D. 외부식별관계(Foreign Key Relationship)

Page 60: Sql developer 2nd

기출문제

Page 61: Sql developer 2nd

기출문제

Page 62: Sql developer 2nd

감사합니다 [ Thank you ]