관계형 데이터 구조의 이해

반응형
  • 관계형 데이터 구조
    • 데이터베이스를 릴레이션들의 집합으로 표현
    • 데이터와 데이터 간의 관계가 릴레이션(테이블)의 집합으로 표현
    • 선언적(비절차적) 언어인 SQL을 사용
    • 미리 정의된 물리적 연결 없이 동적 연결을 이용하여, 논리적 연결을 위해 연결자(기본키-외래키)를 이용
    • 관계형 DBMS에서 데이터는 일반 사용자에게 테이블 형태로 생각하게 함
테이블 개념 관계형 데이터 모델 개념
테이블 릴레이션(Relation)
테이블명 릴레인션명
열(Column), 필드(Field) 속성 : 도메인 내의 원자값만 유효
행(Row), 레코드(Record) 튜플(Tuple)
  • 관계형 데이터 구조의 사례
    • 릴레이션 스키마 : 논리적 구조를 기술
    • 릴레이션 인스턴스 : 특정 시점에서의 튜플들의 집합
  • 관계형 데이터 모델의 구성 요소
구성요소 기본 개념
릴레이션(relation)
  • 데이터 지정의 기본 형태인 2차원 구조의 테이블
  • 행과 열로 이루어진 테이블
  • 릴레이션 스키마와 릴레이션 인스턴스로 구성
속성(Attribute)
  • 테이블 속의 데이터에 대한 고유한 특성을 나타내는 테이블의 열
  • 차수 : 한 릴레이션에 있는 속성의 수
튜플(Tuple)
  • 테이블이 한 행을 구성하는 속성들의 집합
  • 카디널리티 : 한 릴레이션에 있는 튜플의 수
도메인(Domain)
  • 한 릴레이션에서 특정 속성이 가질 수 있는 모든 가능한 값들의 집합
  • 값들이 더 이상 나누어질 수 없도록 원자(Atomic)이어야 함
키(Key)
  • 튜플을 유일하게 식별시켜 주는 하나 또는 그 이상의 속성들의 모임
무결성 제약 조건
  • 데이터 무결성을 보장하기 위해 데이터에 적용되는 일련의 규칙
  • 무결성은 데이터에 대한 의미적 오류를 방지
    예) 나이가 음수인 경우

   

  • 릴레이션(Relation)
    • 릴레이션의 정의
      • 도메인 D1,D2, …, Dn이 존재할 때 릴레이션 R은 D1, D2, …, Dn의 카테시안 프로덕트(Cartesian Product)의 임의의 부분 집합
      • 즉, R ⊆ D1 * D2 * … * Dn
      • 튜플들의 집합으로 구성된 2차원 테이블
      • 릴레이션 스키마와 릴레이션 인스턴스로 구성
    • 릴레이션의 특성
      • 속성값은 모두 원자값이어야 하며, 분해가 불가능
      • 특정 속성값들은 같은 도메인에 속해야 함
      • 각 속성은 한 릴레이션내에서 유일한(상이한) 이름을 가져야 함
      • 각 튜플은 유일해야 함(즉, 중복된 튜플이 존재하지 않음)
      • 속성 및 튜플의 나열 순서는 무의미
           
  • 도메인(Domain)
    • 하나의 속성이 취할 수 있는 같은 타입의 모든 값들의 집
    • 단순 도메인
      원자값(Atomic Value)만으로 구성
      예) 도메인 PRICE = {정수}
    • 복합 도메인
      원자값들의 복합 값으로 구성
      예) 도메인 DATE - {<YEAR, MONTH, DAY>}
    • 특별한 값, Null은 모든 도메인의 원소
    • 순수 관계형 데이터 모델에서는 복합 도메인을 지원하지 않음
       
  • 키(Key)
    한 릴레이션 내에 튜플을 유일하게 식별할 수 있는 속성 또는 속성들의 집합
    • 키의 특성
특성 기본 개념
유일성
(Uniqueness)
  • 키의 값이 릴레이션 내에서 유일하다는 특성
  • 키의 값으로 릴레이션 내에 있는 튜플들을 식별
  • 릴레이션 내에서는 중복되는 튜플이 존재하지 않는 것
최소성
(Minimality)
  • 속성의 집합인 키가 릴레이션의 모든 튜플을 유일하게 식별하기 위해 꼭 필요한 최소한의 속성들로 구성된다는 특성
  • 속성들의 집합에서 특정 속성 하나를 제거하면 유일하게 식별할 수 없는 경우에 해당
  • 키의 종류
기본 개념
슈퍼키
(Super Key)
  • 키의 특성 중 유일성만을 만족하는 모든 키
    예) <학번, 이름, 학과>
후보키
(Candidate Key)
  • 키의 특성인 유일성과 최소성을 만족하는 모든키
    예) <학번>,<이름, 학과>
기본키
(Primary Key)
  • 여러 후보키 중에서 하나를 선정하여 사용하는 키
  • 보통 키라 함은 기본키를 지칭
    예) 후보키인 <학번>, <이름,학과> 중에서 하나를 선정하는 것
대체키
(Alternate Key)
  • 여러 개의 후보키 중에서 기본키로 선정되고 남은 나머지 키
  • 기본키를 대체할 수 있는 키
    예) 기본키를 <학번>으로 선정했다면, <이름,학과>를 지칭
외래키
(Foreign Key)
  • 다른 또는 자신 릴레이션의 기본키를 참조하는 속성 또는 속성의 집합
  • 참조되는 릴레이션의 기본키와 동일한 키 속성을 가짐

   

  • 무결성(Integrity)
    데이터베이스에 저장된 값과 그것이 표현하는 현실 세계의 실제값이 일치하는가에 대한 정확성을 의미
    • 무결성 제약 조건(Constraint)
      데이터베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건
    • 무결성의 종류
무결성 기본 개념
개체(Entity) 무결성
  • 릴레이션의 기본키 속성은 절대 Null 값을 가질 수 없음
  • 기본키는 유일성을 보장해 주는 최소한의 집합이여야 함
키(Key) 무결성
  • 한 릴레이션에 같은 키 값을 가진 튜플들이 허용 안됨
  • 개체 무결성에 포함되는 내용
고유(Unique) 무결성
  • 릴레이션의 특정 속성에 대해서 각 튜플이 갖는 속성값들이 서로 달라야 함
참조(Referential) 무결성
  • 릴레이션의 외래키 속성은 참조할 수 없는 값을 가질 수 없음
  • 외래키 값은 참조되는 릴레이션에서의 기본키 값이거나 Null이어야 함
도메인(Domain) 무결성
  • 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 함
  • 각 속성의 값은 도메인에 속하는 원자값이어야 함
널(Null) 무결성
  • 릴레이션의 특정 속성 값이 Null이 될 수 없도록 하는 규정
의미(Semantic) 무결성
  • 데이터베이스 내에 저장된 모든 데이터는 업무 규칙(Business Rule)을 준수해야 함
  • CHECK, DEFAULT, 데이터베이스 트리거 사용
  • 무결성 제약
    • 무결성 제약의 의미
      데이터의 무결성을 보장하기 위해 데이터에 적용하는 일련의 규칙
      • 준수 : 데이터베이스는 정확한 상태를 유지
      • 위배 : 데이터베이스는 부정확한 상태에 놓임
    • 구조적 제약 조건
      • 키로부터 유래되는 관계형 데이터 모델의 제약 조건
      • 개체 무결성 제약, 참조 무결성 제약 등
    • 의미적 제약 조건
      • 사용자의 요구 사항과 같이 광범위하고 일반적인 제약 조건(예: 사원의 급여는 상사의 급여를 초과할 수 없음)
      • 도메인 무결성 제약 조건
  • 무결성 제약의 유지 책임
    • DBMS가 자동적으로 수행하거나, 응용 프로그래머가 응용 프로그램 코드에 반영
    • DBMS에 의해 직접 지원되는 선언적 제약 조건은 스키마 정의 시 DCL로 직접 명세함
    • DCL의 능력 밖에 있는 일반적인 무결성 제약은 별도의 명세 방법이 필요
         
  • 뷰(View)
    • 뷰의 정의
      • 하나 이상의 특정 테이블들로 부터 조건에 맞는 내용들을 추출하여 생성한 가상 테이블
      • 뷰를 생성하면 뷰 정의가 시스템 내에 저장되었다가, 생성된 뷰 이름을 질의어에서 사용 할 경우 질의어 내의 뷰 이름이 정의된 질의어로 대체되어 시행
        • 뷰는 SELECT문을 이용하여 정의되며, 그 정의는 시스템 카탈로그에 저장
        • 뷰의 내용은 실제로 저장 장치 내에 존재하는 것이 아니고, 뷰에 대한 조작이 요구될 때마다 기본 테이블의 테이터를 이용하여 그 내용을 만들게 됨
             
    • 뷰의 특징
      • 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않음(실체화 뷰(Materialized View) 제외)
        • 실체화 뷰
          • 뷰 정의의 내용이 계산되어 물리적으로 저장되어 있는 뷰
          • 성능 향상에 중요한 역할을 담당
          • 뷰 정의에서 사용되는 데이터가 변경될 때마다 실체화 뷰가 최신 데이터로 변경 되어야 함.
      • 뷰는 다른 뷰의 정의에 사용될 수 있음
      • 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동으로 제거되고, 뷰 제거 시 그 위에 정의된 다른 뷰도 자동으로 제거됨
      • 뷰에 대한 검색 연산은 기본 테이블과 동일하나 삽입, 갱신, 삭제 연산에는 제약이 따름
      • 한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 함
    • 뷰의 종류
      • 행 부분 집합 뷰
        • 어느 한 테이블에 속한 행들의 일부로 구성한 뷰
        • SELECT를 통해 생성
        • 기본키를 포함하게 되므로 갱신이 가능
      • 열 부분 집합 뷰
        • 어느 한 테이블에 속한 열들의 일부로 구성된 뷰
        • PROJECT를 통해 생성
        • 기본키를 포함하고 있는 경우에만 이론적으로 갱신이 가능
      • 통계적 요약 뷰
        • 기본 테이블에 집단 함수 등을 적용해 통계 요약 정보를 포함한 뷰
        • 그룹 함수를 이용해 생성한 뷰
        • 갱신 불가
      • 조인 뷰
        • 둘 이상의 테이블로부터 조인을 통해 구성된 뷰
        • 갱신 불가
    • 뷰의 활용
      • 데이터의 논리적 독립성 제공 : 테이블의 구조가 변경되더라도 뷰를 통해 논리적 데이터의 독립성 제공
      • 다양한 관점 제공 : 사용자에게 서로 다른 데이터 이름 및 형식으로 데이터 제공
      • 데이터 보안 제공 : 뷰는 어떤 사용자들로부터 특정 데이터를 숨길 수 잇는 메커니즘을 제공
    • 뷰의 장.단점
장점 단점
  • 논리적 데이터 독립성 제공
  • 데이터 접근 제어로 보안 제공
  • 사용자의 데이터 관리를 간단하게 함(필요한 데이터만 뷰로 만들어 처리하면 명령문이 간단해짐)
  • 여러 사용자의 상이한 응용/요구 지원 가능
  • 성능을 향상시키는 효과도 있음
  • 독자적 인덱스를 가질 수 없음
  • 정의를 변경할 수 없음(ALERT 문 사용 불가)
  • 삽입, 삭제, 갱신 연산에 많은 제약이 따름
  • 변경할 수 없는 뷰
    • 상수,계산식, 그룹 합수를 사용해 만들어진 뷰
    • DISTINCT, GROUP BY, HAVING을 사용해 만들어진 뷰
    • 둘 이상의 테이블에서 유도된 뷰
    • 변경하지 못하는 뷰를 토대로 하여 생성된 뷰
반응형