SQL 16일차 1-1 ~ 1-5

1-1 데이터 모델의 이해

모델링의 정의

1. 복잡한 "현실세계"를 단순화시켜 표현하는 것
2. 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것
3. 현실 세계의 추상화된 방영

->복잡한 현실세계를 일정한 표기법에 의해 표현하는 일

모델링의 특징

1. 추상화
2. 단순화
3. 명확화

모델링의 세 가지 관점

1.데이터 관점
2. 프로세스 관점
3. 상관 관점

데이터 모델링의 정의

1. 정보 시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
2. 현실세계의 데이터에 대해 약속된 표기법에 의해 표현되는 과정
3. 데이터베이스를 구축하기 위한 분석/설계

데이터 모델이 제공하는 기능

1. 시스템을 현재 또는 원하는 모습으로 가시화
2. 시스템의 구조와 행동을 명세화
3. 시스템을 구축하는 구조화된 틀을 제공
4. 시스템을 구축하는 과정에서 결정한 것을 문서화
5. 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공
6. 특정 목표에 따라 구체화된 상체 수준의 표현방법을 제공

데이터 모델링의 중요성 및 유의점
파급효과
복잡한 정보요구사항의 간결한 표현
데이터 품질

데이터 모델링의 3단계 진행
현실 세계 --(개념 데이터 모델링) --> 개념적 구조 --(논리 데이터 모델링)--> 논리적 구조 --(물리 데이터 모델링)--> 물리 구조

프로젝트 생명주기에서 데이터 모델링
정보전략계획 -> 분석 -> 설계 -> 개발 -> 테스트 -> 전환/이행 단계

정보 전략 계획/분석 : 개념적 데이터 모델링
분석 단계 : 논리적 데이터 모델링
설계 단계 : 물리적 데이터 모델링

데이터 독립성의 필요성
지속적으로 증가하는 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위한 목적이 있음
끊임없이 요구되는 사용자 요구사항에 대해 화면과 데이터베이스 간에 서로 독립성을 유지하기 위한 목적으로 데이터 독립성 개념이 출현

데이터베이스 3단계 구조
외부 스키마 - 사용자 관점
개념 스키마 - 통합 과정
내부 스키마 - 물리적 관점

데이터 베이스 3단계 구조에서의 데이터 독립성 2가지

논리적 독립성 - 개념 스키마 변경되어도 외부 스키마에는 영향 X
물리적 독립성 - 내부 스키마 변경되어도 외부/개념 스키마는 영향 X

데이터베이스의 3단계 구조에서의 사상(매핑) 2가지
외부적/개념적 사상(논리적 사상) : 외부적 뷰와 개념적 뷰의 상호 호환성 정의
개념적/내부적 사상(물리적 사상) : 개념적 뷰와 저장된 DB의 상호 관련성 정의

데이터 모델링의 세 가지 요소

1. 업무가 관여하는 어떤 것
2. 어떤 것이 가지는 성격
3. 업무가 관여하는 어떤 것 간의 관계

어떤 것 ( 엔터티 )
연관 ( 관계 )
성격 ( 속성 )

데이터 모델링 작업 순서
1. 엔터티를 그린다.
2. 엔터티를 적절하게 배치한다.
3. 엔터티간 관계를 설정한다.
4. 관계명을 기술한다.
5. 관계의 참여도를 기술한다.
6. 관계의 필수 여부를 기술한다.

데이터 모델링의 이해관계자

데이터 모델링 기술/이해
프로젝트 개발자
DBA
현업업무전문가
전문 모델러

좋은 데이터 모델의 요소
완전성 - 업무에 필요한 데이터가 모두 정의되어야 함
중복 배제 - 동일한 사실은 한번만 저장 해야함
업무 규칙 - 데이터 모델 분석만으로도 비즈니스 로직이 이해되어야 함
데이터 재사용 - 데이터 통합성과 독립성 고려해야함
의사소통 - 데이터 모델을 보고 이해 당사자들끼리 의사소통이 이루어져야 함
통합성 - 동일한 데이터는 유일하게 정의해서 다른 영역에서 참조해야 함


1-2 엔터티(Entity)

엔터티의 개념

엔터티는 사람, 장소, 물건, 사건, 개념 등의 명사에 행당한다.
엔터티는 업무상 관리가 필요한 관심사에 해당한다.
엔터티는 저장이 되기 위한 어떤 것이다.

엔터티란 "업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)으로 설명할 수 있다.

엔터티는 인스턴스의 집합이라고 할 수 있다.

엔터티의 특징

업무에서 필요로 하는 정보
식별이 가능해야 함
인스턴스의 집합
업무프로세스에 의해 이용
속성을 포함
관계의 존재

엔터티에는 반드시 속성이 포함되어야 한다.

엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 존재해야 한다

엔터티의 분류

유무형에 따른 분류

유형
개념
사건

발생시점에 따른 분류

기본
중심
행위

엔터티의 명명
가능하면 현업업부에서 사용하는 용어를 사용한다.
가능하면 약어를 사용하지 않는다.
단순 명사를 사용한다.
모든 엔터티에서 유일하게 이름이 부여되어야 한다.
엔터티 생성 의미대로 이름을 부여한다.


1-3 속성(Attribute)

속성의 개념
업무에서 필요로 한다.
의미상 더 이상 분리되지 않는다.
엔터티를 설명하고 인스턴스의 구성요소가 된다.

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

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

한 개의 엔터티는 두 개 이상의 인스턴스의 집합 이어야 한다.
한 개의 엔터티는 두 개 이상의 속성을 갖는다.
한 개의 속성은 한 개의 속성값을 갖는다.

속성은 엔터티에 속한 엔터티에 대한 자세하고 구체적인 정보를 나타내며 각각의 속성은 구체적인 값을 갖게 된다.

이름, 주소, 생년월일과 같은 각각의 값으 대표하는 이름들을 속성이라고 하고 홍길동, 서울시 강서구, 1967년 12월 31일과 같이 각각의 이름에 대한 구체적인 값을 속성 값이라고 한다.


속성의 표기법

1. 속성명을 기재하고
2. 해당 속성이 식별자인지 아닌지 표시하고
3. 해당 속성이 필수값(*)인지 선택값(0)인지 표시 한다.

속성의 표기법은 엔터티 내에 이름을 표현하면 된다.

속성의 특징
엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
정규화 이론에 근간하여 정해진 주 식별자에 함수적 종속성을 가져야 한다.
하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중 값이 있는 다중 값일 경우 별도의 엔터티를 이용하여 분리한다.

속성의 분류
속성은 업무분석을 통해 바로 정의한 속성을 기본속성
원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성
다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성

속성의 분류-엔터티 구성방식에 따른 분류
엔터티를 식별할 수 있는 속성를 PK속성, 다른 엔터티와의 관계에서 포함된 속성을 FK(Foreign Key)속성, 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성을 일반 속성이라 한다.

도메인
각 속성을 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라고 한다.
각 속성은 도메인 이외의 값을 갖지 못한다.

속성의 명명
해당 업무에서 사용하는 이름을 부여한다.
서술 식 속성 명은 사용하지 않는다.
약어 사용은 가급적 제한한다.
전체 데이터모델에서 유일성 확보하는 것이 좋다.


1-4 관계

관계의 정의
사전적으로 정의하면 상호 연관성이 있는 상태
엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태 라고 할 수 있다.

관계의 페어링
관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현한다는 것이다.
개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계를 형성될 수 있다.
각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링이라 한다.

인스턴스 각각은 자신의 연관성을 가지고 있을 수 있음

관계의 분류-존재의 의한 관계 (부서 - 사원)
관계의 분류-행위에 의한 관계 (고객 - 주문)

관계의 표기법
관계명
관계 차수
관계선택사양

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


1-5 식별자

식별자 개념
엔터티는 인스턴스들의 집합이라고 하였다. 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다. 이 구분자를 식별자라고 한다.
Entity의 각 Instance를 개별적으로 식별하기 위해 사용되는 Relationship 또는 Attribute들의 조합

식별자의 특징
1. 유일성
2. 최소성
3. 불변성
4. 존재성

식별자 분류
대표성여부 - 주식별자 / 보조 식별자

스스로 생성여부 - 내부식별자 / 외부 식별자

속성의 수 - 단일식별자 / 복합식별자

대체여부 - 본질식별자 / 인조식별자

식별자 도출 기준
해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.

식별자관계와 비식별자 관계의 결정
외부식별자는 자기 자신의 언터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽에 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 Foreign key역할을 한다.
자식 엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지(식별자 관계) 또는 부모와 연결이 되는 속성으로서만 이용할 것인지를 결정(비식별자 관계)해야 한다.

식별자 관계
자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우를 식별자 관계라고 지칭한다.
부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우는 NULL값이 오면 안되므로 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우이다.

비식별자관계
부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우가 있다. 이와 같은 경우를 비식별자 관계라고 하며 다음의 네 가지 경우에 비식별자 관계에 의한 외부속성을 생성한다.
자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우이다.

좋은 웹페이지 즐겨찾기