ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스 전체 내용 정리
    데이터베이스/기본 2016. 11. 11. 23:39

    이 글로 알 수 있는 것

    • DB의 기본, SQL, 모델링, 관계 데이터 연산, key, 무결성, 이상, 정규화, 함수종속, 조인의 내용을 알 수 있다.
    • 정규화 과정 중 각 단계의 이상현상(부분 함수 종속, 이행 함수 종속, 다치 종속, 조인 종속)을 이해하고 그 해결방법을 알 수 있다.
    • 자연조인, 동등조인, 외부조인에 대해 정확히 이해할 수 있다.
    • 정보처리기사 필기와 실기 과목을 준비하는데 유용하다.

    데이터베이스 기본

    • DB 정의
      • 특정 조직의 업무를 수행하는데 있어서 필요한 상호 관련된 데이터들의 모임
    • DB의 정의
      • 통합 데이터, integrated data
        • 검색의 효율성을 위해 중복을 최소화한 데이터
      • 저장 데이터, stored data
        • 컴퓨터가 접근가능 한 저장매체에 저장된 데이터
      • 운영 데이터, operational data
        • 조직 목표를 위해 존재가치 확실하고 반드시 필요한 데이터
      • 공유 데이터, shared data
        • 여러 프로그램들이 공동으로 사용하는 데이터
    • DB의 특징
      • 실시간 접근, real time accessibility
        • 사용자 쿼리에 즉시 처리하고 응답한다.
      • 계속 진화, continuos evolution
        • 항상 최근의 데이터를 동적으로 유지한다.
      • 동시 공유, concurrent sharing
        • 여러 사용자가 동시에 원하는 데이터를 사용 가능하다.
      • 내용 기반 참조, content reference
        • 데이터를 참조할 때 내용으로 참조한다.
      • 독립성, independence
        • 논리적 독립성
          • app과 DB와의 관계 : 데이터의 논리적 구조를 변경하더라도 app에 영향 주지 않는다.
        • 물리적 독립성
          • app과 보조메모리와의 관계 : 새로운 저장장치의 추가에도 app에 영향 주지 않는다.
    • User의 분류
      • 데이터베이스 관리자, DBA database administrator
        • 데이터베이스를 정의하고 제어하는 사람 또는 그룹
      • 데이터 관리자, DA data administrator
        • 조직 내에서 데이터에 대한 정의, 체계화, 감독 및 보안 업무
      • 데이터 설계자, DA data architect
        • 데이터 구조를 체계적으로 정의하는 사람
    • DBMS, database management system
      • DBMS의 정의
        • 파일시스템 문제를 해결하기 위해 제시된 SW
        • 조직에 필요한 데이터를 데이터베이스에 통합해 저장하고 관리한다.
      • 기존 파일시스템의 문제점
        • 데이터 종속성
          • app과 data파일 간 의존적 관계, app이 바뀌면 data도 바뀌고(혹은 그 반대)
        • 데이터 중복성
          • data의 중복으로 일관성 없어지고, 동등한 보안 수준과 무결성을 유지하기 힘들다.
    • 데이터베이스 종류
      • 관계형 데이터베이스
        • 데이터를 열과 행으로 이뤄진 2차원의 릴레이션으 표현하는 DB의 한 종류이다.
      • 객체형 데이터베이스
        • ODB의 구성
          • 객체, 객체식별자
          • 속성, 메소드
          • 클래스, 인스턴스
          • 상속
          • 오버로딩, 오버라이딩
      • 객체 관계 데이터베이스
        • RDB에 ODB 개념을 추가한 DB
      • 분산 데이터베이스
        • 논리적으로 같은 시스템에 속하나 물리적으로 분산된 DB
        • 목표
          • 위치 투명성
          • 중복 투명성
          • 병행 투명성
          • 장애 투명성
      • 멀티미디어 데이터베이스
        • 텍스트, 그래픽, 정지영상, 동영상, 음성등 복합적으로 구성된 DB
      • 주기억장치 데이터베이스
        • DB전체를 주기억장치에 상주시킨 후, DB연산을 수행하는 시스템.
        • 디스크IO발생x라 빠름

    SQL

    • SQL, structured query language
      • 관계 DB를 위한 표준 질의어, 비절차적 데이터 언어
    • SQL의 분류
      • DDL, data define languge, 데이터 정의어
      • DML, data manipulation language, 데이터 조작어
      • DCL, data control language, 데이터 제어어

    Schema

    • Schema 정의
      • DB의 구조와 제약조건에 관한 전반적인 명세
    • Schema 특징
      • 데이터 사전(data dictionary)=시스템 카탈로그(system catalog)에 저장
        • 데이터베이스에 저장되는 데이터에 관한 정보, 메타 데이터를 유지하는 시스템 데이터베이스
    • 데이터베이스의 구조(사용자의 관점에 따라 분류)
      • 외부 스키마(external schema, =서브 스키마 =사용자 뷰)
        • 사용자/app프로그래머가 각 개인의 입장에서 필요로 하는 DB의 논리적 구조 정의
      • 개념 스키마(흔히 말하는 스키마)
        • 개체 간의 관계와 제약조건, DB의 접근권한, 보안정책 및 무결성 규정에 관한 명세를 정의
        • DBA가 작성한다.
      • 내부 스키마
        • DB의 물리적 구조를 정의한다.

    데이터베이스 설계

    • DB 설계란?
      • DB 스키마를 개발하는 과정이다.
    • 설계 단계
      • 요구조건 분석
      • 개념적 설계(for 사람)
        • 개념 스키마 모델링
          • 추상화를 통해 개념 스키마를 만드는데 Entity와 Relationship을 사용하는 추상화를 ER Model이라고 한다.
        • 트랜잭션 모델링
      • 논리적 설계(for 컴퓨터)
        • 컴퓨터가 이해하고 처리, 특정 DBMS가 지원 가능한 논리적 데이터 구조로 변환한다.
        • 논리 스키마 모델링
        • 관계형 DBMS의 경우 ER model을 Relation schema로 변환한다.
          • 더 좋은 Relation schema를 위해 정규화 과정을 수행한다. 데이터 중복과 데이터 종속을 방지하기 위함이다.
        • 트랜잭션의 전체적인 골격을 개발하고 인터페이스를 정의한다.
      • 물리적 설계
        • 물리 스키마 설계 과정
        • DB파일에 대한 저장구조와 접근 경로를 설정한다.
      • 데이터베이스 구현
        • 해당 DBMS의 DDL을 통해 구축한다.
    • 데이터 모델링
      • 개념적 데이터 모델링(conceptual modeling)
      • 논리적 데이터 모델링(logical modeling)
    • 데이터 모델
      • 개념적 데이터 모델
        • 개념-관계 모델
        • 개체-관계 다이어그램
      • 논리적 데이터 모델
        • 관계 데이터 모델
        • 네트워크 데이터 모델
        • 계층 데이터 모델
    • 데이터 모델 구성요소
      • 구조, structure
        • entity간 관계
      • 연산, operation
        • 데이터 처리 방법
      • 제약조건, constraint
        • 실제 데이터의 논리적인 제약조건
    • 개체 관계 모델, ER model, entity-relationship model
      • ER model이란?
        • 개념적 데이터 모델의 대표, 현실세계를 표현한다.
        • ERD, ER-diagram
          • entity, relationship, attribute을 도형화해서 표현한다.
      • entity
        • 현실세계에서 구별되는 모든 것. 각 entity만의 고유 특성, 상태를 하나이상 가지고 있다.
        • entity type
          • entity occurrence들의 공통의 attribute를 가지는 entity class
          • entity를 고유의 이름과 속성들로 정의한 것. record type과 대응됨
        • entity instance = entity occurrence
          • entity를 구성하고 있는 속성이 실제값을 가짐으로써 실체화된 entity
      • attribute
        • entity나 relationship이 가지고 있는 고유의 특성. 의미있는 데이터의 가장 작은 논리적 단위.
        • 도메인, domain
          • attribute가 가질수 있는 값의 집합
      • relationship
        • entity와 entity가 맺고 있는 의미 있는 연관성. entity 집합들 사이의 대응관계, mapping을 의미
        • relationship type
        • 차수, degree
          • relationship에 참여하는 entity type의 개수
        • 대응 카디널리티, mapping cardinality
          • relationship에 참여하는 entity occurrence의 개수
            • 1 : 1 관계
            • 1 : N 관계
            • N : M 관계
    • 관계 데이터 모델, relationship data model
      • RD model이란?
        • 논리적 데이터 모델의 대표, table로 표현한다.
      • relation
        • 2차원 테이블로 데이터를 표현하는 수단
      • relation schema
        • relation의 이름, 각 attribute에 대해 정의한 것
      • relation instance
        • relation에 들어있는 tuple들의 집합
      • attribute
        • relation의 columns
      • tuple
        • relation의 rows
      • domain, 도메인
        • 하나의 attribute가 가질 수 있는 같은 type 값들의 집합
        • 하나의 attribute가 가질 수 있는 모든 값의 집합. '이름 속성'에는 문자열 집합만이 정의됨
        • 한 속성이 가질 수 있는 값들의 범위
      • degree
        • relation의 attribute의 개수
      • cardinality
        • relation의 tuple의 개수

    관계 데이터 연산

    • 관계 데이터 연산, relational data operation
      • 관계 데이터 모델의 연산
      • 원하는 데이터를 얻기 위해 relation에 필요한 처리요구를 수행하는 것
    • 관계 데이터 연산의 종류
      • 관계 대수
        • 원하는 데이터를 얻기 위해 데이터 처리과정을 순서대로 기술
        • 절차 중심, 절차적언어
      • 관계 해석
        • 원하는 데이터를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술
        • 결과 중심, 비절차적언어

    관계 대수

    • 관계 대수, relational algebra
      • 원하는 결과를 얻기 위해 relation의 처리과정을 순서대로 기술하는 언어
    • 관계 대수의 종류
      • 일반 집합 연산자
      • 순수 관계 연산자
    • 일반 집합 연산자, set operation
      • relation이 tuple의 집합이라는 개념을 이용한 연산자
        • r1과 r2의 합집합을 반환(중복되는 tuple 제거)
        • r1과 r2의 교집합을 반환
      • 차집합, difference, -
        • r1과 r2의 차집합을 반환
        • r1의 각 tuple과 r2의 각 tuple을 모두 연결해 만들어진 새로운 tuple을 반환
        • 그냥 r1과 r2를 조합한 것
    • 순수 관계 연산자
      • relation의 구조와 특성을 이용하는 연산자
      • 셀렉트, select, σ
        • 조건을 만족하는 tuple 반환
        • e.g. 19금 이상만: σ나이>19(고객)
      • 프로젝트, project, π
        • 주어진 attribute의 값으로만 구성된 tuple 반환
        • e.g. 사는 곳은 궁금하지 않아: π이름,나이(고객)
      • 조인, join
        • 공통 attribute를 이용해 r1과 r2의 tuple들을 연결해 만들어진 새로운 tuple 반환
        • Cartesian product 후 select연산 수행한 것과 같음
        • 두개의 r1, r2에서 공통된 속성을 연결하는 것

          (조인의 종류 상세는 제일 아래에 있음)

      • 디비전, division, ÷
        • r2의 모든 tuple과 관련있는 r1의 tuple을 반환

    관계 해석

    • 관계해석, relational calculus
      • 처리를 원하는 데이터가 무엇인지만 기술하는 언어
      • 수학의 프레디킷 해석에 기반을 두고 있음
    • 관계해석의 종류
      • 투플관계해석
      • 도메인관계해석

    Data Language

    • data language
      • DB의 구축과 이용을 위해 DBMS와의 통신수단
    • DDL, data definition language, 데이터 정의어
      • 스키마를 정의, 수정, 삭제 위한 언어
      • create/alter/drop
    • DML, data manipulation language, 데이터 조작어
      • 데이터 삽입, 삭제, 수정, 검색 등 처리 요구 위한 언어
      • select/insert/delete/update
      • 절차적 조작어/비절차적 조작어
    • DCL, data control language, 데이터 제어어
      • 내부 필요 규칙, 기법 정의 위한 언어
      • commit/rollback/grant/revoke
      • 다음 목적으로 사용한다.
        • 무결성
          • 정확하고 유효한 데이터만 유지
        • 보안
          • 허가받지 않은 사용자의 데이터접근 차단, 허가된 사용자에 권한 부여
        • 회복
          • 장애 발생해도 데이터 일관성 유지
        • 동시성 제어
          • 동시 공유 자원

    Mapping Rule

    • mapping rule
      • ER model을 relationship data model로 변환,
      • 매핑규칙, 논리적 설계 규칙
    • mapping rule 과정
      • 모든 entity는 relation으로 변환한다
        • entity A, B -> relation A, B로 표기
      • relationship 종류에 따라 다음 과정 수행
        • N:M
          • 이 관계는 relation로 변환한다.
          • rA와 rB의 PK를 별도의 릴레이션로 표현. 즉, 두개의 1:N으로 변환시켜 표현한다
        • 1:1
          • 이 관계는 FK로 표현한다.
          • rA나 rB의 PK를 다른 릴레이션의 FK로추가
        • 1:N
          • 이 관계는 FK로 표현한다.
          • rA와 PK를 rB의 FK로 추가
      • 다중값 속성은 relation로 변환한다.

    key

    키 종류

    설명

    특징

    유일성

    최소성

    슈퍼키, super key

    유일성만을 만족하는 attribute, 또는 attribute 집합

      

    O

    X

    후보키, candiate key

    tuple을 유일하게 식별하며 최소성을 만족하는 attribute, 또는 attribute집합

      

    O

    O

    기본키, primary key

    • candidate key 중 선정된 키
    • 기본적으로 사용하기 위해 선택한 키

      *PK가 여러 개의 속성으로 이뤄짐 = 복합키

    중복된 값X

    Not Null

    O

    O

    대체키, alternate key

    • candidate key 중 pk 뺀 나머지 키들

      *기본을 대체

      

    O

    O

    외래키, foreign key

    • 다른 relation의 pk를 참조하는 attribute들
    • rA의 attribute FK가 rB의 PK인 것
      • FK를 가진 r은 참조하는 relation
      • FK가 참조하는 PK를 가진 r은 참조되는 relation
    • 주문r은 고객r을 참조한다. 주문r -> 고객r, 고객r은 참조r

    중복된 값X

    Not Null

    O

    O

    무결성

    • 무결성, integrity
      • 데이터를 결함이 없는 상태로 유지하는 것. 정확하고 유효하게 유지하는 것
    • 무결성 제약조건, integrity constraint(2014-2)
      • DBMS가 데이터의 무결성을 보장하고 일관되게 유지하기 위한 규칙
    • 무결성 제약조건 종류
      • entity 무결성 제약조건
        • PK는 unique하고 not null이어야 한다.
      • referential 무결성 제약조건
        • FK는 Null 또는 참조 릴레이션에 있는 PK값이다.
      • NULL 무결성
        • 특정 attribute값이 not null
      • unique 무결성
      • domain 무결성
      • key 무결성
      • relationship 무결성

    이상

    • 이상, anomaly
      • 테이블의 일부 속성들이 종속으로 인해 데이터 중복이 발생하고, 이 때문에 테이블조작 시 문제 발생하는 현상
    • 삽입 이상
      • 새 데이터 삽입 위해 불필요 데이터도 함께 삽입해야 하는 문제
    • 삭제 이상
      • 투플 삭제 시 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실 문제
    • 갱신 이상
      • 중복 투플 중 일부만 변경하여 데이터가 불일치하는 문제
    • 그래서 정규화가 필요하다. 정규화는 attribute들 간 종속성을 분석해서, 하나의 종속성은 하나의 릴레이션에 표현되도록 분해하는 것을 말한다.

    정규화

    • 정규화, normalization
      • 이상현상을 제거하면서 DB를 올바르게 설계해 나가는 과정
      • 이상현상이 발생하지 않도록 릴레이션을 분해하는 과정
      • 함수적 종성석을 근거로 관련있는 속성들로만 릴레이션 구성

    함수 종속

    • 함수 종속, functional dependency
      • X와 Y는 하나의 릴레이션을 구성하는 attribute들의 부분집합
    • X → Y

      = X가 Y를 함수적으로 결정한다.

      = Y가 X에 함수적으로 종속되어 있다.

      • 릴레이션 내의 모든 tuple을 대상으로 하나의 X값에 대한 Y값이 항상 하나이다.
      • X는 결정자
      • Y는 종속자

    정규형

    • 정규형, normal form
      • 릴레이션이 정규화된 정도, 각 정규형마다 제약조건이 존재.
      • 차수가 높아질수록 요구되는 제약조건 많아지고 엄격해진다.

    정규화 과정

    • 비정규형
      • 자격 없는 릴레이션
      • 이상현상 발생
        • attribute값에 여러 개의 값들이 들어가있다. 다중값 속성을 포함하고 있다.
        • 이를 원자값으로만 구성하도록 분해해야 한다.
    • 제1정규형, 1NF
      • 릴레이션의 모든 속성이 분해되지 않는 원자값인 것
      • 이상현상
        • PK에 완전 함수 종속되지 못하고 PK의 일부분에 부분 함수 종속되는 속성이 존재하고 있다.
        • 부분 함수 종속이 제거되도록 릴레이션을 분해해야 한다.
    • 제2정규형, 2NF
      • 1NF에 속하고, PK아닌 모든 속성이 PK에 완전 함수 종속 되는 것
      • 이상현상
        • 함수 종속성을 여러 개 포함하고 있다. 이행적 함수 종속이 존재하고 있다.
        • 이행적 함수 종속이 제거되도록 릴레이션을 분해해야 한다.
    • 제3정규형, 3NF
      • 2NF에 속하고, 모든 속성이 PK에 이행적 함수 종속이 되지 않는 것
      • 이상현상 발생
        • 한 속성이 후보키가 아님에도 다른 속성을 결정하기 때문이다.
        • 후보키가 아닌 결정자를 제거한다.
    • 보이스/코드 정규형, BCNF, boyce/codd normal form
      • 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키가 되는 것
      • 하나의 릴레이션에 여러 candidate key가 존재하는 경우, 3NF까지 만족해도 이상현생 발생 가능
      • 이상현상 발생
        • 다치 종속 발생, multi-valued dependency (2013-1)
        • 다치 종속을 제거되도록 릴레이션을 분해해야 한다.
    • 제4정규형, 4NF
      • BCNF에 속하고, 함수 종속이 아닌 다치 종속을 제거한 것
      • 이상현상
        • 조인 종속 발생
    • 제5정규형, 5NF
      • 4NF에 속하고, 후보키를 통하지 않는 조인 종속을 제거한 것
      • 릴레이션의 모든 조인 종속이 릴레이션의 후보키를 통해서만 성립되는 정규형이다.

    정규화 과정 중 이상현상

    • 1NF의 이상현상, 부분 함수 종속 존재
      • 부분 함수 종속의 예

        • (등급)과 (할인율)은 PK에 완전 함수 종속되지 못하고 (고객아이디)에 부분 함수 종속된다.
      • 부분 함수 종속의 제거

    • 2NF의 이상현상, 이행적 함수 종속 존재
      • 이행적 함수 종속의 예

        • (고객아이디) -> (등급)
        • (등급) -> (할인율)
        • (고객아이디) -> (할인율)
      • 이행적 함수 종속의 제거

    • 3NF의 이상현상, 후보키가 아닌 결정자 존재
        • (학생ID, 강좌) -> (담당강사)
        • (담당강사) -> (강좌)
        • (담당강사)가 후보키가 아님에도 (강좌)속성을 결정하므로 이상현상 발생
      • 후보키가 아닌 결정자 제거

    • BCNF의 이상현상, 다치 종속 존재
      • 다치 종속의 예

        • 복합속성 (수강, 담임)에 대응하는 (교재)는 (수강)에만 종속되고 (담임)에는 무관하다. (교재)는 (수강)에 다치 종속이 존재한다.
        • (수강, 교재)에 대응하는 (담임)는 (수강)에만 종속되고 (교재)에는 무관하다. (담임)는 (수강)에 다치 종속이 존재한다.
      • 다치 종속의 제거

    • 조인 종속
      • 조인종속성이란 어떤 릴레이션R의 속성을 분할한 릴레이션 R1, R2, …, Rn이 있을 때, R이 분할된 릴레이션 모두 자연조인한 결과와 동일한 경우를 말한다.
      • 5NF는 릴레이션 R의 모든 조인종속성이 R의 후보키를 통해서만 성립되는 정규형이다.

    조인

    • 조인이 필요한 이유
      • RDB는 정규화를 수행하면 의미있는 데이터의 집합으로 테이블이 구성되고, 각 테이블끼리는 관계(relationship)을 가지게 된다. 그래서 RDB는 저장 공간의 효율성과 확장성이 향상된다.
      • 그러나 정규화로 데이터가 여러 테이블로 나뉘어 지므로, 각각 테이블에 저장된 데이터를 효과적으로 검색하려면 조인이 필요하다.
      • 조인은, 테이블 간 의미있는 데이터(행)를 연결하는데 활용된다.
    • 내부 조인, inner join
      • 가장 일반적인 형태의 조인 기법
      • 둘 이상의 테이블에 존재하는 공통 속성의 값이 같은 것을 결과로 추출한다.
    • 내부 조인의 종류
      • 동등 조인, equi join
      • 자연 조인, natural join
    • 동등 조인
      • 조인의 가장 일반적인 활용 형식
      • 둘 이상의 테이블에 존재하는 공통 속성의 동등 비교만을 사용한다.
      • 동등 조인의 예

    • 자연 조인
      • 동등 조인과 유사하나, 조인 대상 테이블의 모든 속성을 비교하여 같은 속성명을 가진 속성으로 조인을 수행한다. 이때 같은 이름을 가진 속성은 한번만 추출한다.
      • 자연 조인의 예

    • 외부 조인, outer join
      • 외부 조인의 예


Designed by Tistory.