데이터 모델링
데이터를 제한된 공간에 효과적으로 저장하는 방법을 추상화 하는 것
** 모델링 대상 데이터 : 현실에 존재하는 모든 것
- 특징 : 추상화 단순화 명확화
- 핵심 개념 : 개체(엔티티) 속성 관계
- 관점
- 데이터 관점 : 어떤 목적의 데이터? 데이터간 관계는?
- 프로세스 관점 : 데이터로 어떤 작업?
- 데이터-프로세스 연계 관점 : 작업시 데이터 영향?
- 좋은 모델 : 완전성/중복 배제/업무 규칙/데이터 재사용/의사소통/통합성
RDB
실 세계의 정보를 2차원의 테이블로 표현 --> 행(레코드)/열(컬럼,속성)
관계 대수, 관계 해석 개념에 기초
테이블의 특징 : 레코드의 유일성 / 레코드의 무순서성 / 컬럼의 무순서성 / 속성의 원자성
모델링 종류
- 개념적 모델링 : 엔티티 속성 관계 식별자 정의
- 논리적 모델링 : 테이블 컬럼 외래키 기본키 정의
- 개념적 모델링 결과를 실제 스키마로 매핑 및 정규화 수행
정규화
: 삭제/삽입/갱신 이상을 최소화하기 위한 작업 (1~5 정규화)
- 재사용성 가장 높은 모델링
- 물리적 모델링 :
- 스키마를 DBMS에 맞게 변환/정의
- DBMS 결정 / 제약조건 설정 / 컬럼의 타입 및 크기 결정
- 사용량, 프로세스, DBMS성능 고려
Entity-Relationship 다이어그램
( E-R 모델 ) itwiki
약속된 기호에 따라 엔티티간 관계 정의/표현. RDB 모델링 과정에 활용.
개념적 모델의 이해에 도움.
- 도형
- 직사각형 : 엔티티
- 이중 직사각형 : 약한 엔티티
- 다이아몬드 : 관계(Relationship)
- 원 : 속성(Attribute)
- 밑줄을 포함하는 원 : 키(key) 속성
- 작성 순서
- 엔티티 생성
- 엔티티 배치 (관계 고려)
- 관계 설정
- 관계 설명 기술
- 식별 관계, 필수 여부 확인
엔티티 및 속성
인스턴스는 속성에 의해 설명될 수 있다.
- 인스턴스 : 현실에 실재하는 각각의 대상
- 엔티티 : 현실 개체를 저장 할 수 있는 변별력 있는 것. 인스턴스의 집합.
- 속성 : 현실 개체의, 엔티티 내의 공통된 특성.
- 도메인 : 속성이 가질 수 있는 값의 특정범위 (자료형, 크기, 제약사항 포함)
- 식별자 : 인스턴스를 유일하게 식별할 수 있는 속성
- 모든 엔티티에 존재.
- (논리적 모델링에서 기본키로 매핑)
- 유일성 / 최소성 / 불변성 / 존재성
엔티티 분류
- 형태 : 유형 엔티티 / 개념 엔티티 / 사건 엔티티
- 발생 시점 : 기본 엔티티 / 중심 엔티티 / 행위 엔티티
부모-자식 엔티티(테이블)
어떤 엔티티의 식별자가 다른 엔티티의 속성으로 사용되면 부모-자식 관계가 형성된다.
- 부모 테이블 : 속성(주로 PK)을 상속해주는 테이블
- 자식 테이블 : 속성(주로 FK)을 상속 받는 테이블
식별 관계
부모-자식 관계에서 자식의 FK가 식별자인지에 따라 식별/비식별 관계로 구분한다.
- 식별 관계 : 부모의 속성이 자식에서 주 식별자로 사용되는 경우
- 비식별 관계 : 식별자가 아닌 일반 속성으로 사용되는 경우
식별관계 표기법
IE표기법 : 점선-비식별, 실선-식별 / 원-0, 수직선-1, 까마귀발-2 이상
Barker표기법 : 수직선-식별 / 점선-반대쪽 선택관계, 실선-반대쪽 필수
정규화
목적 : 중복저장 최소화 및 검색 효율화
성능 향상여부 : 삽입/수정/삭제 향상. 검색은 조건에 따라 다름
이상현상(anomaly)
정규화 처리가 되지 않은 엔티티(테이블)에서 나타나는 문제
- 삭제 이상 : 대상 아닌 것도 같이 삭제
- 입력(삽입) 이상 : 불필요한 것도 함께 삽입
- 수정(갱신) 이상 : 대상 아닌 것도 수정
단계
- 제 1 정규화(1NF) : 엔티티에 저장되는 정보가 원자값이 되도록 처리
- 제 2 정규화(2NF)
- 1NF 만족
- 부분 종속 처리 (기본키에 속하지 않는 속성이 기본키에 완전히 종속되도록 처리)
- 제 3 정규화(3NF)
- 2NF 만족
- 이행 종속 처리 (기본키에 완전히 종속되지 않는 속성을 분리 또는 제거)
반정규화
수행하는 이유
- 검색시 입출력량이 많아 성능 저하 예상
- 테이블간 거리가 멀어 조인으로 인한 성능 저하 예상
- 속성값 연산 조회시 성능 저하 예상
문제
반정규화의 진행으로 데이터 무결성이 훼손될 수 있음
기법
- 테이블 반정규화 : 병합 / 분할 / 추가
- 컬럼 반정규화 : 중복 컬럼 추가 / 파생 컬럼 추가 / 이력 테이블 컬럼 추가
- 관계 반졍규화 : 중복 관계 추가
분산 데이터베이스
다른 공간에 배치된 2개 이상의 물리적 DB를 가상 시스템을 통해 논리적으로 묶은 DB
(하나의 DB로 인식, 물리적인 공간은 네트워크로 연결)
구축시 고려사항
- DB물리적 분할,
- 처리 성능
- 네트웍 부하, 속도 고려
- 사용자 접근에 따른 성능 문제 최소화
기법
테이블 위치 분산 / 테이블 분할 분산 / 테이블 복제 분산 / 테이블 요약 분산
저도 같은 책으로 공부중입니다. 궁금한게 있는데, p31의 연습문제 4번 정답이 1번이 아니라 4번이라 생각되는데
맞는지 궁금합니다..!