1장 데이터 모델링의 이해
데이터 모델링
특징
- 추상화: 현실 세계를 일정한 형식에 맞추어 표현
- 단순화: 복잡한 현실을 제한된 언어나 표기법으로 이해하기 쉽도록 표현
- 명확화(정확화): 애매모호함을 배제하고 누구나 이해 가능하도록 표현
목적
- 업무 내용 분석
- 분석된 모델로 데이터베이스를 생성하여 개발 및 관리에 사용
유의점
- 중복성: 여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록
- 비유연성: 데이터의 정의를 데이터 사용 프로세스와 분리
- 비일관성: 데이터와 데이터간의 상호 연관관계에 대해 명확하게 정의
→ 프로그램과 테이블의 연계성을 높이는 것은 데이터 모델의 업무 변경에 대해 취약하게 만드는 단점
데이터베이스 스키마
구조
- 외부 스키마: 사용자 관점
- 개념 스키마: 통합된 모든 사용자의 관점
- 내부스키마: 물리적 저장 구조
데이터 독립성
- 논리적 데이터 독립성: 외부 단계 + 개념적 단계
- 개념 스키마가 변경되어도 외부 스키마에 영향 X
- 논리적 구조가 변경되어도 응용 프로그램에 영행 X
- 물리적 데이터 독립성: 개념 단계 + 내부 단계
- 내부 스키마가 변경되어도 외부/개념 스키마에 영향 X
- 저장장치의 구조가 변경되어도 응용 프로그램/개념 스키마에 영향 X
엔티티
| id | 이름 | 태어난 해 |
|---|
| 1 | 이한나 | 2003 |
| 2 | 이시형 | 2006 |
- 속성: id, 이름, 태어난 해
- 속성값: 1, 이한나, 2003, 2, 이시형,2006
- 인스턴스: (1,이한나,2003), (2,이시형,2006)
특징
- 최소 두 개 이상의 속성이 있어야 한다.
- 최소 두 개 이상의 인스턴스가 있어야 한다.
- 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다. (단, 통계성 엔티티나, 코드성 엔티티의 경우 관계 생략 가능)
발생 시점에 따른 엔티티
속성
: 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
특징
특성에 따른 분류
- 기본 속성: 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
- 설계 속성: 업무에 존재X, 필요하다고 판단되어 도출해낸 속성
- 파생 속성: 다른 속성의 속상값들을 계산 or 특정한 규칙으로 변경하여 생성한 속성
관계
UML(점선/실선 구분) : ERD(단일화된 표기법)
- 연관 관계 (실선 표현): 존재적 관계 → 소스코드에서 멤버변수로 선언하여 사용 가능
- 의존 관계 (점선 표현): 행위적 관계 → 오퍼레이션에서 파라미터 등으로 이용 가능
표기법
- 관계 명: 관계 이름
- 관계 차수: 1:1, 1:N 등
- 선택성: 필수관계/선택관계
관계 도출 시 확인 사항
- 두 개의 엔티티 사이에 관심 있는 연관규칙이 존재하는가?
- 두 개의 엔티티 사이에 정보의 조합이 발생되는가?
- 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
- 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는가?
도메인
: 각 속성이 가질 수 있는 값의 범위
식별자
종류
- 대표성을 가지는가
- 스스로 생성되었는가
- 단일 속성으로 식별이 되는가
- 새롭게 만들어졌는가
주식별자 특징
- 유일성, 최소성, 불변성, 존재성(NULL X)
식별자와 비식별자
- 식별자
- 강한 연결관계
- 자식의 주식별자에 포함됨
- 실선 표현
- 상속받은 주식별자 속서을 타 엔티티에 이전 필요
- 비식별자
- 약한 연결관계
- 자신의 일반 속성에 포함됨
- 점선 표현
- 상속받은 주식별자 속성을 타 엔티티에 차단 필요
- 부모쪽의 관계 참여가 선택관계
조인과 관계
- 조인이란 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합하는 것을 의미한다.
- 관계를 맺는다는 것은 식별자를 상속시키고 해당 식별자를 매핑키로 활용해 데이터를 결합하는 것을 의미한다.
2장 데이터 모델과 SQL
정규형
종류
- 제 1정규형: 모든 속성은 반드시 하나의 값을 가져야 한다. → 모든 값이 원자값
: 칼럼 단위로 중복이 되는 경우도 대상이 됨
- 제 2정규형: 엔티티의 일반속성은 주식별자 전체에 종속이어야 한다. → 부분함수 종속 제거
- 제 3정규형: 엔티티의 일반속상 간에는 서로 종속적이지 않아야 한다. → 이행함수 종속 제거
성능
- 일반적으로 정규화 수행시 처리능력 향상. But 보장은 X, 조회성능이 저하될 수 도 있음
- 반정규화는 성능을 위해 데이터 중복을 허용하는 것이지만 성능의 향상을 항상 보장하는 것은 아니다.
특징
- 정규화는 논리 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔티티에 배치되도록 한다.
NULL
특성
- 0 또는 공백과 다르다.
- 모르는 값 / 값의 부재를 의미한다.
- NULL 값을 포함하는 연산의 결과값은 NULL
- NULL 값과의 모든 비교는 UNKNOWN or FALSE
- 집계함수 계산 시 NULL값은 계산에서 제외