SQLD 1장
SQLD를 공부하는 데 있어 국민대 김남규 교수의 '데이터베이스 실무' 강의를 참조함.
데이터 모델링의 특징
1) 추상화(=모형화)
2) 단순화
3) 명확화
-> 구체화, 복잡화, 일반화 x
모델링의 관점
- 데이터 관점 (what)
- 프로세스 관점 (how)
- 데이터와 프로세스의 상관 관점 (interaction)
데이터 모델링의 3단계
데이터베이스의 3단계 구조
데이터 모델링의 3가지 구성요소
엔터티의 분류
<유형과 무형에 따른 분류>
개념과 사건은 무형 entity 에 해당됨
<발생 시점에 따른 분류>
기본 : 독립적으로 생성
중심 : 기본과 행위 중간에서 생성
행위 : 2개 이상의 엔터티에서 생성
엔터티의 특징
-해당 업무에서 반드시 필요하고 관리해야 함
-유일한 식별자에 의해 식별 가능해야 함
-반드시 속성을 가지되, 연관 엔터티는 주식별자 속성만 가져도 무관함
-통계성,코드성 엔터티를 제외하면 다른 엔터티와 최소 한 개 이상의 관계를 가짐. 즉, 고립 엔터티를 인정하지 않음
-이름이 동일한 엔터티가 중복 존재하는 것을 허용하지 않음
관계의 표기법
-관계 차수 : 관계에 참여할 수 있는 인스턴스 수
-관계 소속성 : 관계에 선택적으로 참여
속성의 정의와 특징
-분리되지 않는 최소의 데이터 단위로서 원자성을 지님
-주식별자에 함수적으로 종속되어야 함
-속성은 한 개의 속성값을 지니나 multi-valued는 별도의 엔터티로 분리됨
-현업에서 사용하는 이름이 부여됨
-명사형 사용
-전체 모델에서 유일하게 정의
속성의 도메인
-각 속성이 가질 수 있는 값의 범위
-속성에 대한 data type, 크기 등을 지정하는 개념
속성의 특성에 따른 분류
기본 속성
설계 속성 : 데이터 모델링을 위해 새로 만든 속성으로 코드나 일련번호 등이 해당
파생 속성 : 다른 속성으로부터 유도된 속성으로 계산값과 같은 통계가 해당
속성의 엔터티 구성 방식에 따른 분류
PK : 엔터티의 인스턴스를 구별할 수 있는 속성
FK : 타 엔터티의 PK를 참조하는 속성
타 엔터티의 pk를 일반 속성으로서 참조하는 형태에 해당됨.
일반 : 그 외의 속성
식별자의 분류
<대표성>
주식별자(PK)
보조 식별자(CK) : 대표성을 가질 수 없는 것 외에는 PK와 동일하다.
<목적>
내부 식별자 : 엔터티 내부에서 스스로 만들어짐
외부 식별자 : 타 엔터티의 식별자(FK)
<속성 수>
단일 식별자
복합 식별자 : 둘 이상의 속성이 존재해야 식별자가 됨
<본질>
본질 식별자
인조 식별자 : 설계 속성, 복잡한 구성일 경우
식별자의 특징
유일성 : 각 인스턴스들을 모두 유일하게 구분할 것
최소성 : 유일성이 만족되면 복합 식별자를 두지 않을 것
불변성 : 식별자의 값은 변하지 않을 것
존재성 : NULL값이 될 수 없을 것
식별자 관계 vs 비식별자 관계
FK가 주식별자에 포함 -> 식별자 관계 (실선 표기)
FK가 비식별자 속성으로 포함 -> 비식별자 관계 (점선 표기)
식별자 관계를 남용시 주식별자 속성이 증가하며 비식별자 관계를 남용시 조인(join) 증가
식별자 관계
-부모의 주식별자가 자식 엔터티의 주식별자로 상속
-반드시 부모 엔터티가 생성되어야 자식 생성(weak entity)
-1:1관계는 유일한 주식별자가 FA, 1:N관계는 FA 포함 주식별자가 다수
관계의 분류
ERD : 존재/행위에 대한 관계 (단일화)
UML : 연관/의존 관계 (실선/점선 표기)
관계의 표기법
관계명
관계차수
관계선택사양(Optionality)
성능 데이터 모델링
DB성능을 고려하여 데이터 모델링을 수행하는 것으로 (반)정규화, 테이블 통합 및 분할, 조인 구조, PK/FK 설정이 포함됨
정규화
삽입./삭제/갱신 이상현상 방지, 함수적 종속성 기반, 중복 방지, 조회 조인 발생
1NF : 모든 값이 원자성을 가짐(유사속성 반복 비허용)
2NF : 부분함수종속 제거(PK 중 일부와의 종속관계 제거)
3NF : 이행함수종속 제거(PK 외의 종속관계 제거)
반정규화
조회 성능 향상, 속성(칼럼) 중복 허용, 과도한 반정규화는 데이터 무결성을 해침
칼럼 반정규화 : 중복 추가(조인 감소), 파생 추가, 이력 테이블 추가
테이블 반정규화 : 병합, 분할, 추가
관계 반정규화
슈퍼/서브타입
one-to-one : pk 부모자식 동일
plus type : 슈퍼 + 서브타입 접근 필요
single type : All in one, 동시 접근 다수