본문 바로가기

공부/SQL

[SQLD] 모델링의 이해(2)

엔티티

엔티티

 - 명사: 업무상 관리 필요한 관심사, 저장이 되기 위한 어떤 것

 

엔티티의 특징

 - 반드시 해당 업무에서 꼭 필요한 정보

 - 유일한 식별자로 식별이 가능해야 한다.

 - 인스턴스 2개 이상의 집함이어야 한다.

 - 반드시 속성이 있어야 한다.

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

 

발생 시점에 따른 엔티티 분류

기본엔티티

 - 업무에 원래 존재하는 정보이다.

 - 다른 엔티티와의 관계에 의해 생성되지 않고 독립적으로 생성 가능하다.

 - 타 엔티티의 부모역할을 한다.

 - 사원, 부서, 고객, 상품 등

중심 엔티티

 - 기본 엔티티로부터 발생하며, 업무에 있어서 중요 역할을 한다.

 - 다른 엔티티와의 관계를 통해 행위 엔티티를 생성한다.

 - 계약, 청구, 주문, 매출 등

행위 엔티티

 - 두 개 이상의 부모 엔티티로부터 발생

 - 자주 내용이 바뀌거나 데이터량이 증가한다.

 - 분석 초기 단계에서는 잘 나타나지 않고 상세 설계나 프로세스와 상관 모델링을 하면서 도출될 수 있다.

 - 주문목록, 사원 변경이력 등

 

엔티티의 명명

 - 가능한 현업 업무에서 사용하는 용어를 사용한다.

 - 가능하면 약어 사용을 안한다.

 - 단수명사 사용한다.

 - 모든 엔티티에 유일한 이름 부여한다.

 - 생성 의미대로 이름 부여한다.

 

속성

속성의 개념

 - 의미상 더 이상 분리되지 않는 최소의 데이터 단위

 

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

 - 1개의 엔티티는 2개 이상의 인스턴스 집합이어야 한다.

 - 1개의 인스턴스는 2개 이상의 속성을 갖는다.

 - 1개의 속성은 1개의 속성값을 갖는다.

 

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

 - 기본속성: 업무로부터 추출한 모든 속성

 - 설계속성: 새로 만들거나 정의하는 속성(코드성, 일련번호 등)

 - 파생속성: 다른 속성의 영향을 받아 발생(계산된 값 등)

 

도메인

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

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

 

속성의 명명

 - 해당 업무에서 사용하는 이름을 부여한다.

 - 서술식 속성명 사용하지 않는다.

 - 약어 사용은 가급적 하지 않는다.

 - 전체 데이터 모델에서 유일성 확보하는 것이 좋다.

 

관계

관계의 정의

 - 인스턴스 사이의 논리적인 연관성. 존재나 행위로서 서로에게 연관성이 부여된 상태

 

관계의 표기법

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

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

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

관계 도출 시 체크 사항

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

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

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

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

 

식별자

식별자 개념

 - 엔티티를 구분짓는 논리적인 이름이다.

 - 엔티티를 대표할 수 있는 속성이다.

 - 엔티티에는 반드시 하나의 유일한 식별자가 존재해야 한다.

 

식별자의 종류

대표성 여부

 - 주 식별자 : 인스턴스를 유일하게 구분 할 수 있으며 참조관계를 연결 할 수 있음

 - 보조 식별자 : 유일하게 구분 가능하지만 대표성을 가지지 못해 참조관계 연결을 못함

스스로 생성 여부

 - 내부 식별자 : 엔티티 내부에서 스스로 만들어지는 식별자

 - 외부 식별자 : 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자

속성의 수

 - 단일 식별자 : 하나의 속성으로 구성됨

 - 복합 식별자 : 2개 이상의 속성으로 구성됨

대체 여부

 - 본질 식별자 : 업무에 의해 만들어지는 식별자

 - 인조 식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기에 인위적으로 만든 식별자

 

주식별자를 도출하는 기준

 - 해당 업무에서 자주 사용되는 속성을 주식별자로 지정

 - 명칭, 내역 등과 같이 이름으로 기술되는 속성은 주식별자로 지정하지 않는다.

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

 

식별자 관계

 - 부모 엔티티의 주식별자가 자식 엔티티의 주 식별자로 상속된 경우

 

비식별자 관계

- 부모 엔티티의 주식별자가 자식 엔티티의 일반 속성으로 상속된 경우

 

비식별자 관계로 설정하는 경우

 - 부모 없는 자식이 생성될 수 있는 경우

 - 부모가 있었지만 자식만 남겨두고 먼저 소멸될 수 있는 경우

 - 여러 엔티티가 하나의 엔티티로 통합되어 표현될 경우

 - 자식 엔티티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때

 - 자식과 관련이 있는 엔티티로의 주식별자 상속을 차단하기 위해

 

식별자 특징

 - 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스 유일하게 구분함

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

 - 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함

 - 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함 (Null X)

'공부 > SQL' 카테고리의 다른 글

[SQL/오라클] ROLLUP, CUBE, GROUPING SETS  (0) 2020.11.27
[SQL/오라클] DROP vs DELETE vs TRUNCATE 차이  (0) 2020.11.18
[SQL/오라클] NULL 개념  (0) 2020.11.18
SQL Injection(삽입) 공격  (0) 2020.09.14
[SQLD] 모델링의 이해(1)  (0) 2020.08.26