KOSTA 교육 26일차(데이터 모델링, SQL 필기평가)
18.12.4(화)
배운 내용
- 데이터 모델링
- 엔티티타입
- 정규화
1. 데이터모델링
데이터모델링은?
정보화 시스템을 구축하기 위해, 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는 무엇인지를 분석하는 방법
모델링의 세가지 관점
- 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지를 모델링 하는 방법
- 프로세스 관점 : 업무에서 실제 하는 일은 무엇인지 또는 어떻게 해야 하는지에 대해 모델링 하는 방법
- 상관 관점 : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링 하는 방법
2. 엔티티타입
엔티티타입은?
업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위
- 엔티티타입은 엔티티의 집합이다.
엔티티 타입의 특징
- 첫 번째 반드시 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 엔티티의 집합이어야 한다. (여기서 영속적은 지속된다는 의미이다.)
- 업무 프로세스에 의해 이용되어야 한다.
- 반드시 속성이 있어야 한다.
- 최소 한 개 이상의 관계가 있어야 한다.
식별자는?
엔티티타입 내에서 엔티티들을 구분할 수 있는 구분자이다.
식별자의 분류
- 대표성 여부 : 주식별자, 보조식별자
- 자가생성여부 : 내부식별자, 외부식별자
- 단일속성여부 : 단일식별자, 복합식별자
- 대체여부 : 원조식별자, 대리식별자
Relationship(관계)는?
두 개의 엔티티타입 사이의 논리적인 관계 즉, 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 형태
관계 예시
- 부서 DB팀에 사원 황경빈이 소속되는 존재에 의한 관계이다.
- 고객 김경재가 CTA201을 주문하는 행위에 의한 관계이다.
여기서 관계간 멤버쉽이 존재하는데 이는 엔티티타입이 참여하는 관계에 대한 자신으로부터의 관점이다.
- 부서로서 사원을 포함하고, 사원으로서 부서에 소속된다는 1인칭 관점
관계의 종류(카디널리티)
- 1:1 (ONE TO ONE)
- 한 개의 구매신청에 대해 한 개의 구매주문을 작성하고
한 개의 구매주군에 대해 한 개의 구매신청내용을 작성한다.
2. 1:M (ONE TO MANY)
- 한 명의 사원은 한 부서에 소속되고 한 부서에는 여러 사원을 포함한다.
3. M:M(MANY TO MANY)
- 하나의 주문은 여러 개의 제품을 구매할 수 있고
하나의 제품은 여러 개의 주문에 의해 주문될 수 있다.
관계의 참여도
- 하나의 주문목록에는 한 개의 목록을 항상 포함하고
한 목록은 여러 개의 주문목록에 의해 포함될 수 있다.
관계의 종류(주/비식별자)
- 주식별자 : 부모의 주식별자가 자식의 주식별자로 상속됨
- 비식별자 : 부모의 주식별자가 자식의 일반속으로 상속됨
속성은?
업무에 필요한 엔티티에서 관리하고자 하는 더 이상 분리되지 않는 최소의 데이터 단위이다.
- 구성 방식에 따른 속성의 분류로 PRIMARY KEY는 사원번호, FORIEN KEY는 부서코드, 나머지는 일반 속성으로 분류된 것을 볼 수 있다.
3. 정규화
정규화는?
다양한 유형의 검사를 통해 데이터모델을 좀 더 구조화하고 개선시켜 나가는 절차이다.
- 정규화의 기본 원칙은 테이블에 중복된 데이터가 없도록 하는 것
- 정규화를 하지 않아도 오류는 없지만 쌓이다보면 걷잡을 수 없이 쓸모없는 데이터가 쌓이게 됨
- 1차 정규화 : 중복값을 제거
- 2차 정규화 : PRIMARY KEY(주키)와 관련없는 속성 제거
- 3차 정규화 : 일반속성 중 주키 역할을 하는 속성 제거
함수의 종속성
- 이름, 출생지, 주소는 주민등록번호에 함수 종속성을 가지고 있음
- 종속자는 근본적으로 결정자에 함수적으로 종속관계를 가지고 있음
ERD 작업 방법
- 엔티티타입을 그린다.
- 엔티티타입을 좌에서 우, 위에서 아래로 중요도와 업무흐름에 따라 배치한다.
- 엔티티타입간 관계를 설정한다.
- 관계명을 기술한다.
- 관계의 카디널리티를 기술한다.
- 관계의 참여도를 기술한다.
오늘 교육 간 느낀점
오늘은 대망의 SQL 정규교육이 끝이나는 날이다.
모델링을 배우면서 지금까지 배웠던 내용들을 어떻게 이용하고 데이터를 활용하는지에 대해 알게되었다. 예제도 아직 제대로 풀어보지 않아 내 것이 되지는 않았지만 내일부터 있을 프로젝트를 통하여 직접 실습해보려고 한다.
또 SQL필기평가를 보았는데 기존에 배웠던 내용들을 복습 했더니 생각보다 많이 어렵지는 않았다. 다만 시간이 부족해서 못 푼 문제들이 몇 있지만 충분히 시간이 있다면 풀 수 있는 문제들이어서 프로젝트가 끝나면 복습 할 때 다시 풀어봐 마무리하려고 한다.