개요

 

알기쉽게 해설한 데이터베이스 모델링이라는 책의 내용을 기반으로해서 데이터베이스 모델링 제일 기초적인 부분들 정리함. 이책은 SQL Server기반이라서 일단 5장 논리적 데이터베이스 모델링까지만 이 책을 기반으로 했고, 물리적 모델링이라던가는 다른 것을 보고 해야겠음.
이 글은 남들 보기 좋으라고 만든 것이 아니라, 내가 공부하면서 노트필기하듯이 쭉쭉쭉 정리한 내용입니다.

 

데이터베이스 개념

데이터베이스에 대한 이해

  • 데이터베이스 정의
    • 여러 응용시스템을 통해 액세스가 가능한 공유된 형태의 통합된 데이터의 집합 
    • 정보와 데이터
      • 데이터 : 수집된 사실이나 값
      • 정보 : 데이터를 처리해 얻어진 결과
  • 데이터베이스 관리 시스템의 특징
    • 데이터의 독립성 : 물리적 독립성(데이터 변경시에 어플리케이션 수정 불필요) , 논리적 독립성(여러 어플리케이션에서 접근 가능)
    • 데이터의 무결성 : 쓸데없는 데이터가 생기는 것을 방지
    • 데이터의 보안성 : 권한 없는 사용자가 접근할 수 없게함
    • 데이터의 불일치 배제 : 무결성과 같은 맥락
    • 데이터의 중복성 감소 : 같은 데이터를 여러군데 저장할 필요가 없다
    • 데이터의 공유


데이터베이스 관리 시스템에 대한 이해

  • 파일 시스템

파일 단위로 업무 처리 → 데이터 중복(이파일 저파일에 같은 내용), 데이터 종속 발생(해당 파일은 특정 어플에서만 열림. 이를테면 MS 엑셀)

  • 데이터베이스 관리 시스템(DBMS)

데이터베이스와 어플리케이션 간의 인터페이스 역할을 하는 논리적인 프로그램

  • 데이터베이스 관리 시스템(DBMS)의 유형

DBMS는 데이터 모델에 따라 계층형, 망형, 관계형, 객체지향, 객체관계형으로 나뉨


관계형 데이터베이스 관리 시스템

관계형 DBMS에 대한 이해

1969년 EF코드가 수학적 기초에 근거를 두고 고안함

 

최소의 의미를 가지는 테이블들로 구성됨
테이블내의 필드 중 일부를 다른 테이블과 중복함을 통해 각 테이블간의 관계를 정의

 

 

업무 변화에 대한 적응 능력 높음, 유지 보수 편리함, 생산성이 높음, 응용 프로그램 개발이 용이함
시스템 부하가 상대적으로 높다

 

실체(Entity)와 관계(Relation)을 통해 기업의 업무 프로세스를 표현

예제를 통한 관계형 DBMS에 대한 이해

기본 테이블

이름회원번호핸드폰번호주소핸드폰명구입일통신사
신민항2012001010-1357-1234동대문구 휘경1동 123-456하이폰 4s2011.11.11크트
서현2012002010-3490-4620동대문구 휘경1동 123-456하이폰 4s2011.11.11스크트
현아2012003010-1257-1257내 마음속NULLNULLNULL
수지2012004010-2379-6983동대문구 휘경2동 456-123갤러리탭2011.09.10알지
아이유2012005010-7095-1569동대문구 휘경3동 135-790NULLNULLNULL

L자형 테이블

이름회원번호핸드폰번호주소핸드폰명구입일통신사
현아2012003010-1257-1257내 마음속NULLNULLNULL
아이유2012005010-7095-1569동대문구 휘경3동 135-790NULLNULLNULL
신민항2012001010-1357-1234동대문구 휘경1동 123-456하이폰 4s2011.11.11크트
서현2012002010-3490-4620동대문구 휘경1동 123-456하이폰 4s2011.11.11스크트
수지2012004010-2379-6983동대문구 휘경2동 456-123갤러리탭2011.09.10알지



이름회원번호핸드폰번호주소핸드폰명구입일통신사
현아2012003010-1257-1257내 마음속NULLNULLNULL
아이유2012005010-7095-1569동대문구 휘경3동 135-790NULLNULLNULL
신민항2012001010-1357-1234동대문구 휘경1동 123-456하이폰 4s2011.11.11크트
서현2012002010-3490-4620동대문구 휘경1동 123-456하이폰 4s2011.11.11스크트
수지2012004010-2379-6983동대문구 휘경2동 456-123갤러리탭2011.09.10알지

L자형 테이블 나누는 방법 (테이블 수평 분할, 테이블 수직 분할)


이름회원번호핸드폰번호주소
현아2012003010-1257-1257내 마음속
아이유2012005010-7095-1569동대문구 휘경3동 135-790


이름회원번호핸드폰번호주소핸드폰명구입일통신사
신민항2012001010-1357-1234동대문구 휘경1동 123-456하이폰 4s2011.11.11크트
서현2012002010-3490-4620동대문구 휘경1동 123-456하이폰 4s2011.11.11스크트
수지2012004010-2379-6983동대문구 휘경2동 456-123갤러리탭2011.09.10알지




이름회원번호핸드폰번호주소
현아2012003010-1257-1257내 마음속
아이유2012005010-7095-1569동대문구 휘경3동 135-790
신민항2012001010-1357-1234동대문구 휘경1동 123-456
서현2012002010-3490-4620동대문구 휘경1동 123-456
수지2012004010-2379-6983동대문구 휘경2동 456-123


핸드폰명구입일통신사
하이폰 4s2011.11.11크트
하이폰 4s2011.11.11스크트
갤러리탭2011.09.10알지

관계에 대한 정의 (관계란, 업무적인 연관성) 부모 테이블과 자식 테이블에 대한 정의 (관계를 맺은 두 테이블 중 하나는 부모 테이블, 하나는 자식 테이블이 된다. 부모 테이블의 기본키는 자식 테이블의 외래키) 관계에 대한 정의 방법

이름회원번호핸드폰번호주소
현아2012003010-1257-1257내 마음속
아이유2012005010-7095-1569동대문구 휘경3동 135-790
신민항2012001010-1357-1234동대문구 휘경1동 123-456
서현2012002010-3490-4620동대문구 휘경1동 123-456
수지2012004010-2379-6983동대문구 휘경2동 456-123


이름핸드폰명구입일통신사
신민항하이폰 4s2011.11.11크트
서현하이폰 4s2011.11.11스크트
수지갤러리탭2011.09.10알지

참조 무결성에 대한 이해

참조 무결성 입력 : 부모=제약없음, 자식=부모테이블에 있는지 검증 수정 : 부모=수정하려는 내용이 자식에 참조되고 있는지 검증, 자식=변경될 내용이 부모테이블에도 있는 내용인지 검증 삭제 : 부모=삭제하려는 내용이 자식에 참조되고 있는지 검증, 자식=제약 없음

 부모자식
입력제약 없음부모테이블에 있는지 검증
수정수정하려는 내용이 자식에 참조되고 있는지 검증변경될 내용이 부모테이블에도 있는 내용인지 검증
삭제삭제하려는 내용이 자식에 참조되고 있는지 검증제약 없음


CASCADE : 부모 테이블의 기본키값이 변경되거나 삭제될 때에, 이를 참조하고 있는 자식 테이블도 함께 변경되거나 삭제되도록 하는 옵션


데이터베이스 모델링

데이터베이스 모델링 정의

현실 세계의 업무적인 프로세스를 물리적으로 데이터베이스화 시키기 위한 과정

프로젝트 진행 과정

계획 → 분석(업무분석) → 설계(개념논리물리) → 구현(어플개발) → 테스트 → 유지보수

  • 업무 분석 : 사용자의 요구 사항을 분석해서 어떠한 기능들이 필요한지 분석함 - 업무에 사용되는 문서를 이용. 담당자와의 인터뷰를 통해 도출.
  • 개념적 데이터베이스 모델링 : 업무를 일반화 시킴. 해당 내용을 기반으로 ERD를 그림. 업무를 일반화하는 단계일 뿐, 아직 관계형 데이터베이스 이론을 적용시키는 단계는 아니다.
  • 논리적 데이터베이스 모델링 : ERD상의 내용들을 실제로 관계 데이터베이스형태에 집어넣음 = Mapping Rule, 정규화를 수행해서 잘못된 모델들을 수정한다
  • 물리적 데이터베이스 모델링 : DBMS 선정, 해당 DBMS에 맞게끔 데이터 타입이나 사이즈 정의한다. 사용량이나 사용자들의 업무 프로세스를 분석한다. 이러한 정보들을 기반으로 반정규화 진행한다. 인덱스 설정, 데이터 분사 정의, DB 개체 정의, DB 생성

개념적 데이터베이스 모델링

개념적 데이터베이스 모델링에 대한 이해

E-R모델 : 개체-관계 모델. 현실 세계에 존재하는 데이터들과 그 관계를 이해하기 쉽게 표현한 방법

실체 (Entity)

 

업무수행을 위해 기업이 알아야 될 대상이 되는 것 = 데이터로써 관리되어져야 하는 항목
상호 배타성 - 실체는 인스턴스라 불리는 개별적인 객체들의 집합이다. 이 때에 각각의 인스턴스를 구분 할 수 있도록 주 식별자가 존재해야한다.
식별성 - 각각의 실체는 유일하게 식별 가능해야함

 

 

실체 파악 요령
관련 분야에 대한 지식이 필요함
서류 자료나, 담당자와의 인터뷰를 통해 파악한다
상식, 논리, 관찰력등이 필요함
위의 과정들을 통해 얻어낸 내용들 중에서 명사 위주로 추출해낸다.

 

 

주의 사항
명칭을 현업 용어에 가깝고, 단순하게 정하는것이 좋다.
상상을 통해 얻어낸 실체는 업무에 부담을 줄 수 있다.

 

속성 (Attribute)

 

실체의 성질을 나태내는 세부 항목.
특정 실체를 기술하는 사항이어야 한다.
실체당 속성은 10개 내외로 구성되는 것이 바람직하다
속성은 실별자와 비식별자로 구분된다
핵심 단어를 사용 하거나 명명 규칙을 사용하도록 한다

 

  • 속성의 유형

 

기초 속성 : 현업에서 기본적으로 사용되는 속성
추출 속성 : 기존 속성의 가공처리를 위한 속성
설계 속성 : 실제로 존재하지 않지만, 시스템 효율을 위해 설계자가 임의로 추가한 속성

 

  • 속성 도메인

속성이 가질 수 이는 값의 범위. 향후 DB 생성시나 프로그램 개발시 이를 유용하게 사용할 수 있다.

식별자

 

하나의 실체 내에서 특정 인스턴스를 구분할 수 있도록 해주는 속성, 또는 속성 집합
모든 실체는 반드시 하나 이상의 식별자가 있어야한다.

 

  • 식별자 유형

 

후보 식별자 : 유일하게 식별할 수 있도록 해주는 모든 종류의 속성 및 속성 집합
주 식별자 : 유일 식별에 사용하기 가장 적합한 후보 식별자 - 길이가 짧다거나, 활용도가 높고 실체를 대표할 수 있는것으로. 주식별자는 not null + no duplicate 속성이 됨
부 식별자 : 주식별자가 되지 못한 모든 후보 식별자
외부 식별자 : 포린키
대리 식별자 : 식별자가 너무 길거나 여러 속성을 포함해야 된다면, 효율을 위해 임의로 식별자를 추가해준다. 그게 대리 식별자임

 

관계 (Relation)

두 실체간의 명명되어진 의미있는 연결. 두 실체간의 업무적 연관성

 

학생은 책을 대여한다
책은 학생에게 대여되어진다

 

  • 차수성 - 하나의 인스턴스가, 다른 실체의 인스턴스 몇개와 관계되는가

 

1:1 - 하나의 학생은 하나의 학번을 부여 받는다. 하나의 학번은 하나의 학생에게 부여된다. 전체의 약 10%정도가 여기에 속함.
1:N - 하나의 학생은 하나의 학과에 소속된다. 하나의 학과는 여러 학생에게 소속되어 진다. 약 90%정도가 여기에 소속된다.
N:M - 하나의 학생은 여러 책을 대여할수 있다. 하나의 책은 여러 학생에게 대여될 수 있다. 0%가 여기에 소속됨 → N:M은 비효율적이기 때문에 논리적 모델링 단계에서 교차실체 추가하여 1:N 관계로 나눠서 쓰게된다.

 

  • 선택성

 

두 실체 간의 관계가 모든 인스턴스간에 항상 존재해야 하는가 - 어떤 사원은 반드시 어떤 부서에 소속해야된다. 하지만 어떤 부서는 사원이 없을 수도 있다.
반드시 ~ 해야하는 관계는 Mandatory, 아니면 Optional

 

개념적 데이터베이스 모델링 정리

  1. 업무 분석
  2. 실체 도출 - 업무 분석을 통해 얻어낸 결과물을 이용하여, 데이터로써 관리될 가치가 있는 실체들을 도출해낸다.
  3. 속성 도출 - 위의 과정에서 도출한 실체들의 속성을 정의한다.
  4. 속성 중 식별자 도출
  5. 관계 설정 - 실체 간의 관계를 설정한다.
  6. 관계 차수 설정 - 차수성
  7. 관계 식별 여부 파악 - 선택성


논리적 데이터베이스 모델링

관계형 모델의 개념

 

부모 테이블, 자식 테이블 - 주체 관계를 파악한다, 부모테이블이 먼저 정의되야 한다.
기본키, 외래키 - 부모 테이블의 기본키가 자식 테이블의 외래키
식별 관계, 비식별 관계 - 외래키가 자식 테이블 기본키에 사용되면 식별관계, 아니면 비식별관계

 


Mapping Rule

ERD를 데이터베이스 스키마로 변환하는 과정

 

엔티티 → 테이블
속성 → 컬럼
식별자 → 기본키
관계 → 외래키

 

차수성이 N:M이라면, 두 엔티티간의 관계를 나타낼 수 있는 교차 엔티티라는 것을 새로 만들어서 두개의 1:N 관계로 나누어줌 

정규화

 

데이터 중복 방지
효율적 데이터 저장
속성들을 본래의 테이블에 정확히 위치시키기

 

 

제 1정규화 : 반복되는속성, 그룹 속성 제거 → 새로운 실체 추가 → 1:N 관계로 만들어줌
제 2정규화 : 복합키를 사용하고 있는데, 복합키 전체가 아닌 일부에만 의존하는 속성이 있다면 제거해준다.
제 3정규화 : 키가 아닌 속성중에, 기본키에 의존하지 않는 속성은 제거해야한다.

 


특수한 경우의 엔티티 모델링

  • 슈퍼타입/서브타입

 

사원 = 정규직 + 임시직
정규직은 연봉/ 임시직은 월급을 받는다. 완전히 구분됨 - 상호 배타적
사원을 정규직과 임시직이라는 서브타입으로 분할해서 사용한다. 이때 사원은 슈퍼타입

 

공통의 프로세스를 일으키는 엔티티가 하나이상 존재한다면 공통 분모를 모아서 새로운 엔티티를 정의하고 그 엔티티로부터 하여금 새로운 프로세스를 처리하도록 한다.


  • 재귀적관계 - 자기 자신과 관계를 맺음으로 새로운 정보를 얻을 수 있는 관계

 

감독자 사번 → 사번과 감독자 사번이 있는 엔티티. 자기 자신과 관계를 맺음으로써 감독자를 알 수 있다.
상품 분류 체계 → 삼품 분류 테이블을 조각조각 나누는게 아니라, 01 컴퓨터, 0101 소모품, 0102 CPU, 010101 프린터 잉크, 010201 i7-950하는 식으로 한 테이블내에서 완료함. 대신 상위 분류라는 속성을 같은 엔티티에 배치하여, 자기 자신과 관계를 맺음으로써 상위 분류를 찾을 수 있게 된다. 0101 소모품 상위-01, 010101 프린터 잉크 상위=0101 하는식으로
계층형 게시판 → 자기 글번호, 어느글에 달렸는가를 속성으로 - 어느 글의 댓글인가

 



물리적 데이터베이스 모델링

논리 데이터베이스 구조로부터, 효율적이고 구현 가능한 물리적 구조의 데이터베이스 구조를 설계하는것

  1. 개발 DBMS선정
  2. 컬럼의 데이터 타입과 사이즈 정의
  3. 데이터 사용량 분석과 사용자들의 업무 프로세스 분석
  4. 역 정규화
  5. 각종 제약조건 정의
  6. 인덱스, 뷰, 스토어드 프로시저, 트리거 등 오브젝트 정의
  7. 데이터베이스 생성

인덱스 (INDEX)

인덱스 적용시 고려사항

Trigger

커서

이것들 모두 이 책에선 SQL Server에 대해서 나와있는지라 나한테는 필요없음. 어차피 모르는 내용도 아니고하니 그냥 넘어가겠음


역정규화란?

 

시스템 퍼포먼스를 위해 정규화에 위반되는 행위를 하는 것
정확한 업무 분석과, 데이터베이스 사용량들을 알아야함

 

  • 역정규화 유형

 

데이터 중복(컬럼 역정규화) - 조인방지
파생 컬럼의 생성 - 계산해서 나올 수 있는 내용을 아예 컬럼에 박아 넣어 계산을 적게해도 되도록함. 평균값. 판매금액. 같은식~
테이블 분리 - 컬럼이 너무 많다 - 컬럼 기준으로 나눈다. 레코드가 많다 - 레코드 기준으로 나눔 = 파티션기능 사용
요약 테이블 생성 - 일매출을 합쳐서 연간 매출을 조회하는 일이 잦다. 이렇게 자주 조회되는 정보를 아예 빼내서 요약정보 테이블을 만들어줌
관계 제거 - 아예 FK를 제거해서 데이터 입력시 검증하는 절차를 제거해버림
테이블 통합 - 테이블 분리해놔서 조인한다고 성능이 더 떨어진다라면 그냥 테이블 도로 합쳐버리라

 

레이블 (0)

  • 레이블 없음
댓글 쓰기...

첨부 파일  (0)

첨부 파일 추가하기
공유된 파일이 아직 없습니다.