06 정규화 I

데이터베이스 2016. 3. 10. 22:52
  • 정규화

    6.1 좋은 릴레이션과 나쁜 릴레이션

  • 잘못된 데이터베이스 모델링
    • 데이터중복
    • 갱신 이상
      • 삽입 이상: 레코드 추가 시 불필요한 컬럼의 값 없이는 추가하지 못하는 경우
      • 삭제 이상: 삭제 시 의도하지 않았던 다른 데이터가 삭제 되는 경우
      • 수정 이상: 중복 저장된 레코드를 수정 시 모두 반영이 안되어 데이터베이스의 일관성이 깨지는 경우

           

       

    6.2 함수적 종속성

    • 함수적 종속성

      릴레이션 인스턴스를 분석하여 속성들 간의 연관 관계를 표현한 것

    • 정의

      임의의 릴레이션 스키마 R의 인스턴스 r(R )에 포함되는 서로 다른 두 레코드 t1, t2와 속성 집합 X와 Y에 대해

      t1[X] = t2[X]일 때, t1[y] = t2[y] 이면 함수적 종속성 X Y가 성립한다.

         

    • 함수적 종속성 추론 규칙
      • 함수적 종속성은 정규화 실행 여부에 중요한 판단기준이 되지만 릴레이션의 인스턴스만으로는 숨어 있는 함수적 종속성을 찾아내기 어려움
      • 숨어 있는 함수적 종속성을 찾기 위해 추론 규칙을 사용함
      • F의 클로저
        • F: 릴레이션 스키마를 분석하여 찾아낸 함수적 종속성 집합
        • F+: F로 유추할 수 있는 모든 함수적 종속성 집합

             

    • 함수적 종속성
      • 함수적 종속성 추론 규칙
        • 재귀성 규칙 : X Y이면, X Y 이다
        • 부가성 규칙 : XY이면, XZYZ 이다
        • 이행성 규칙 : XY이고, YZ이면, XZ이다
        • 분해 규칙 : XYZ이면, XY이다
        • 합집합 규칙 : XY이고, XZ이면, XYZ이다
        • 의사 이행성 규칙 : XY이고, WYZ이면 WX이다
    • 커버
      • 정의

        함수적 종속성들의 집합 E가 있을 때, E가 F+에 포함되면 E의 모든 함수적 종속성이 F로부터 추론될 수 있다. 이 때 F가 E를 커버한다고 한다

           

    • 카노니컬 커버
      • F의 카노니컬 커버 Fc는 F+에 존재하는 모든 함수적 종속성을 커버할 수 있는 최소한의 함수적 종속성들로만 이루어진 집합임
      • 함수적 종속성 추론 규칙으로 확장한 클로저에는 자명한 종속성과 중복된 종속성이 포함됨, 따라서 불필요한 함수적 종속성을 제거하여 정규화함

           

      • 표준형 조건
        • F의 모든 함수적 종속성의 오른편 속성은 하나임
        • F에서 X A를 X의 진부분집합 Y에 대하여 Y A로 교체했을 때, 그 집합이 F와 동등한 집합일 수 없음
        • F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합일 수 없음

             

    • 카노니컬 커버의 예
      • 릴레이션 R의 스키마(X, Y, Z)

       

       

    6.3 기본 정규형

    • 정규형
      • 정규화 과정에서 사용되는 중복을 최소화하는 릴레이션의 형식
      • 정규형의 분류

           

    • 정규화의 목적
      • 어떠한 릴레이션이라도 데이터베이스 내에서 표현할 수 있도록 함
      • 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성
      • 릴레이션에 바람직하지 않은 삽입, 수정, 삭제 등의 이상이 발생하지 않도록 함
      • 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 줄임

           

'데이터베이스' 카테고리의 다른 글

08 데이터 저장과 파일  (0) 2016.03.11
07 정규화 II  (0) 2016.03.10
05 SQL  (0) 2016.03.09
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
Posted by redcode.
,

05 SQL

데이터베이스 2016. 3. 9. 22:52
  • SQL

    5.1 SQL 개요

    • SQL 개요
      • SQL(Structured Query Language)은 관계 대수에 기초하여 관계형 DB의 데이터를 관리하기 위해 설계된 언어
      • 1986년 ANSI, 1987년 ISO에서 표준으로 제정
      • 특징

        비절차적 언어, 필요한 데이터만 기술

        인간의 언어와 매우 유사하고 간단, 명료

           

    5.2 데이터 정의

    • 데이터 정의 언어(Data Definition Language; DDL)
      • 데이터(테이블 및 인덱스)의 구조를 생성, 수정, 삭제 하는 등의 정의
      • 데이터가 준수해야 하는 제약조건을 기술
    • 데이터 조작 언어(Data Manipulation Language)
      • 데이터를 추가, 수정 및 삭제 등의 명령 포함
      • 데이터베이스로부터 데이터를 검색

           

         

    • 데이터 타입
      • 컬럼이 가질 수 있는 값의 범위, 즉 도메인 결정
      • 기본 데이터형
        • INTEGER: 부호있는 4바이트 2진 정수
        • SMALLINT: 부호있는 2바이트 2진 정수
        • NUMERIC(p [,g]): 부호있는 10진 p자리 정수, g자리 소수
        • FLOAT: 부동 소수점수
        • CHAR(n): n 크기 고정길이 문자열
        • VARCHAR(n): n 크기 가변길이 문자열
        • DATETIME: 년-월-일 시:분:초 형식의 날짜시간
  • 스키마 정의
    • 테이블 생성
      • 새로운 2차원 형태의 테이블을 생성
      • 구문형식

           

           

    • 테이블 수정
      • 테이블에 새로운 컬럼을 추가, 삭제 및 수정하여 구조를 변경
      • 구문형식

       

    • 테이블 제거
      • 테이블을 데이터베이스에서 제거
      • 구문형식

       

       

    5.3 데이터 조작

    • INSERT문
      • 테이블에 새로운 레코드를 삽입
      • 모든 속성 또는 부분 속성에 대한 속성값을 삽입
      • 구문형식

           

    • UPDATE 문
      • 조건을 만족하는 레코드의 특정 컬럼값을 수정
      • 구문형식

           

    • DELETE 문
      • 조건을 만족하는 레코드를 삭제
      • 구문형식

           

    • 기본 SELECT 질의
      • 테이블에서 조건을 만족하는 전체 또는 특정 레코드를 검색
      • 구문형식

    • 복수의 테이블에 대한 SELECT 질의
      • 하나 이상의 테이블에서 정보를 추출
      • 구문형식

    • 집합 연산이 포함된 SELECT 질의
      • 집합 연산을 주어진 두 릴레이션에 적용
      • 두 릴레이션의 스키마가 반드시 동일
      • 집합 연산(A 연산자 B 형식)
        • UNION(합집합): A 또는 B에 존재하는 모든 레코드의 집합
        • INTERSECT(교집합): A 와 B 양쪽 모두에 존재하는 레코드의 집합
        • EXCEPT(차집합): B 릴레이션에는 없고 A 릴레이션에만 존재하는 레코드의 집합

       

    • 집계 함수를 사용한 SELECT 질의
      • 복수의 레코드에 존재하는 특정 컬럼값에 집계 함수를 통해 다양한 계산을 수행할 수 있는 기능
      • 집계 함수의 종류
        • COUNT: 컬럼에 있는 값들의 개수
        • SUM: 컬럼에 있는 값들의 합
        • AVG: 컬럼에 있는 값들의 평균
        • MAX: 컬럼에서 가장 큰 값
        • MIN: 컬럼에서 가장 작은 값

             

    • 그룹 질의
      • 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
      • 구문형식

        *주의 - 출력되는 컬럼에 그룹의 기준과 집계함수 이외의 컬럼은 포함될 수 없음

           

    • HAVING 절을 사용한 그룹 질의
      • 레코드를 그룹화하고 집계 함수를 적용한 결과에 조건을 기술
      • 구문 형식

        *주의 - WHERE 절은 레코드에 적용되는 조건을 기술

        HAVING 절은 레코드 그룹에 적용되는 조건을 기술

    • 중첩 질의
      • SELECT 문 내부에서 독립적으로 실행 가능한 또다른 SELECT 문이 내포되어 있는 질의
      • FROM 절에서의 중첩 질의 활용
      • 구문형식

    • WHERE 절에서의 중첩 질의 활용
      • WHERE 절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
        • IN, NOT IN, EXISTS, NOT EXISTS 사용
      • 구문형식

           

      • 하나 이상의 원본 테이블로부터 유도되어 일반 테이블처럼 조작할 수 있는 가상 테이블
      • 물리적으로 저장되지 않음
      • 구문형식

           

'데이터베이스' 카테고리의 다른 글

07 정규화 II  (0) 2016.03.10
06 정규화 I  (0) 2016.03.10
04 관계형 모델  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
Posted by redcode.
,
  • 관계형 모델

    4.1 관계형 모델

  • 데이터베이스 모델링 과정
  • 논리적 데이터 모델링
    • 특정 DBMS에서 사용하는 데이터 모델이 맞추어 데이터를 표현하는 과정
    • 데이터 정의 언어로 기술된 논리 스키마 생성
    • 관계형 모델

      1969년 에드가 F 코드에 의해 제안

      술어논리와 집합론을 이론적 배경으로 릴레이션(relation)으로 데이터를 표현하는 모델

      데이터 표현이 단순하고 직관적이기 때문에 현재 대다수 DBMS의 기초

      => Oracle, DB2, PostgreSQL, MySQL, MSSQL 등

         

    • 릴레이션의 특징
      • 레코드의 유일성: 중복된 레코드가 존재하지 않음
      • 레코드의 무순서성: 한 릴레이션에 포함된 레코드의 순서는 정해져 있지 않음
      • 컬럼의 무순서성: 컬럼은 순서가 없고, 이름과 값의 쌍으로 구성
      • 컬럼의 원자성: 모든 값들은 나눌 수 없는, 단 하나의 의미만을 갖는 원자값
    • 관계형 모델의 제약조건
      • 영역 제약조건: 각 컬럼 A의 값이 반드시 A의 영역 dom(A)에 속한 값의 집합에 포함
      • 키 제약조건: 키는 레코드를 고유하게 구별하는 값으로 구성
      • 개체 무결성 제약조건: 어떤 기본키 값도 널(null) 값이 될 수 없음
      • 참조 무결성 제약조건: 두 릴레이션의 레코드 사이에 일관성을 유지에 사용
    • 키의 종류 및 속성
      • 수퍼키: 유일성 만족
      • 후보키: 유일성, 최소성 만족
      • 기본키: 레코드의 구분을 위해 선택된 후보키
      • 외래키: 참조된 다른 릴레이션의 기본키
    • 컬럼의 구분(키 관점에서)
      • 주속성: 릴레이션의 키 중 적어도 한 키에 포함되는 컬럼
      • 비주속성: 주속성이 아닌 나머지 컬럼

       

    4.2 ER 다이어그램 변환

    • 관계형 모델로 변환 방법
      • 단계 1 - 개체 집합을 릴레이션으로 사상(키 지정)
      • 단계 2 - 약한 개체(복합 키 지정)
      • 단계 3 - 1:1 관계 집합 설정(외래키 지정)
      • 단계 4 - 1:N 관계 집합 설정(외래키 지정)
      • 단계 5 - M:N 관계 집합 설정(릴레이션 생성)
      • 단계 6 - 다중값 속성의 정리(릴레이션 생성)
      • 단계 7 - n항 관계 설정(릴렝리션 생성)

           

       

    4.3 관계 대수

    • 관계연산의 개념
      • 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
      • 사용자의 관점에서 필요한 새로운 릴레이션을 정의하는 방법
      • 관계 연산 정의 방법
        • 관계 대수
        • 관계 해석
    • 관계 대수와 관계 해석
      • 관계 대수(relational algebra)

        주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자연산자(, , -, σ, π, x, , ÷, 집계함수 등)으로 구성

        관계 연산의 과정을 표현

      • 관계 해석(relational calculus)

        원하는 릴레이션에 포함되는 레코드의 조건을 정의하는 방식

        관계 연산의 결과를 표현

    • 셀렉트 연산
      • 정의: 주어진 릴레이션에서 조건을 만족하는 레코드 만을 갖는 릴레이션을 추출

        => σ조건(R)

      • 조건 - aΘb 또는 aΘv

a, b

속성이름

v

상수 값

Θ

비교자 {=, , <, >, , }

R

릴레이션

   

  • 조건의 결합 - (and), (or)

       

  • 프로젝트 연산
    • 정의: 기술된 컬럼만 갖는 릴레이션을 추출
    • <컬럼리스트>: A1, A2, …, An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술

         

  • 집합 연산자
    • 수학적 집합 이론에서의 이진 연산
      • 합집합: R S
      • 교집합: R S
      • 차집합: R – S

           

  • 집합 연산자 사용 조건
    • 릴레이션 R과 S의 차수가 같다
    • 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일

   

  • 합집합: R S
    • R과 S의 어느 한쪽이라도 포함되는 레코드로 이루어진 릴레이션

         

  • 카티시언 프로덕트
    • 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 연산자
    • R × S
    • 각각 m개와 n개의 레코드, a개와 b개의 컬럼이 존재하는 R과 S 릴레이션의 경우, R × S는
      • a + b 개의 컬럼
      • m n 개의 레코드

           

  • 조인 연산자
    • 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
    • => σ AθB(R × S)

         

  • 집계 함수 연산
    • 집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
      • x( ): AVG, SUM, MIN, MAX, COUNT등의 집계 함수
      • A: 집계 연산을 적용할 컬럼

           

    • 레코드 그룹화를 위해 집계 함수 연산자 앞에 그룹화 속성을 기술
      • B: 그룹의 기준이 되는 컬럼
      • x(): 집계 함수
      • A: 집계 연산을 적용할 컬럼

'데이터베이스' 카테고리의 다른 글

06 정규화 I  (0) 2016.03.10
05 SQL  (0) 2016.03.09
03 데이터베이스 모델링  (0) 2016.03.08
02 데이터베이스  (0) 2016.03.07
01 데이터베이스 개요  (0) 2016.03.06
Posted by redcode.
,