3. 데이터베이스 구축 - 논리적 데이터베이스 설계(관계형 데이터베이스, 시스템 카탈로그)

83. 관계형 데이터베이스 (Relational Database)

: 데이터 모델을 구성하는 개체와 관계를 모두 릴레이션(표, table)의 형태로 표현하는 방식의 데이터베이스

관계형 데이터베이스를 제안한 Edgar F. Codd와 그 내용을 담은 논문의 제목

  • 1970년 IBM의 E. F. Codd에 의해 처음 제안되었다.
  • 개체 릴레이션 : 개체를 표현하는 릴레이션
  • 관계 릴레이션 : 관계를 표현하는 릴레이션
  • 장단점
    • 장점 : 뛰어난 간결성, 타 데이터베이스로 변환이 용이
    • 단점 : 성능이 다소 떨어짐

 

1) 릴레이션

: 데이터를 표의 형태로 표현한 것. 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.

- 릴레이션의 구조

  • 릴레이션 스키마 : 한 개의 릴레이션의 논리적 구조를 정의한 것. 릴레이션의 이름과 구성 속성들의 집합
  • 릴레이션 인스턴스 : 릴레이션을 구성하는 속성들의 구체적 데이터 값이 정의되어 하나의 개체를 나타내는 것
  • 튜플 (Tuple)
    • 릴레이션을 구성하는 각각의 행
    • 값을 가진 속성의 모임으로 구성된다.
    • 파일 구조의 레코드와 대응된다.
    • 기수 (Cardinality, 대응수) : 릴레이션 내 튜플의 수
  • 속성 (Attribute)
    • 데이터베이스를 구성하는 가장 작은 논리적 단위. 릴레이션을 구성하는 각각의 열
    • 개체의 특성을 기술한다
    • 파일 구조의 데이터 항목 또는 데이터 필드에 대응된다.
    • 차수 (Degree) : 릴레이션 내 속성의 수
  • 도메인 (Domain)
    • 하나의 속성이 가질 수 있는 같은 타입의 원자값들의 집합
    • 속성이 실제 값을 가질 때 그 값의 합법성 여부를 검사하는데 이용된다.
    • ex) 학년 속성의 도메인은 {1, 2, 3, 4} 이며 이외의 값은 될 수 없다.

 

- 릴레이션의 특징

  • 릴레이션 내 튜플들은 모두 상이하며 유일하게 구별된다. (릴레이션 내 중복된 튜플은 없다.)
  • 릴레이션 내 튜플 사이에는 순서가 없다.
  • 튜플들의 삽입, 변경, 삭제 등으로 릴레이션은 시간에 따라 변한다.
  • 릴레이션 내 속성 사이에 순서는 중요하지 않다.
  • 속성의 유일한 식별을 위해 한 릴레이션 내 속성들의 명칭은 모두 달라야 한다.
  • 릴레이션을 구성하는 모든 튜플을 유일하게 식별하기 위해 키가 사용된다.
  • 속성의 값은 논리적으로 더 쪼갤 수 없는 원자값이 저장된다.

86. 키 (Key)

: 튜플을 찾거나 정렬할 때 튜플을 구분할 수 있는 기준이 되는 속성

  • ex) 학생 릴레이션에서 학생들은 학번으로 유일하게 구분되므로 '학번'은 학생 릴레이션의 키가 될 수 있다.

 

- 키의 종류

1. 후보 키 (Candidate Key)

: 릴레이션 내 튜플을 유일하게 식별하는데 이용되는 속성들의 부분집합. 기본키로 사용할 수 있는 속성들

  • 모든 릴레이션은 하나 이상의 후보키를 가진다.
  • 후보키는 릴레이션 내 모든 튜플에 대해 유일성과 최소성을 만족시켜야 한다.
    • 유일성 (Uniqueness) : 하나의 키 값으로 하나의 튜플만이 식별되어야 한다.
    • 최소성 (Minimality) : 모든 튜플을 유일하게 식별하는데 필요한 속성만으로 구성되어야 한다.

 

2. 기본 키 (Primary Key)

: 릴레이션의 후보 키 중에서 대표로 선정된 주 키(Main Key)

  • 후보 키의 성질인 유일성과 최소성을 갖는다.
  • 기본 키의 값은 중복되거나 Null value가 될 수 없다.

 

3. 대체 키 (Alternate Key)

: 릴레이션의 후보 키가 둘 이상일 때 기본 키를 제외한 나머지 후보 키 (보조 키)

 

4) 슈퍼 키 (Super Key)

: 릴레이션 내에서 모든 튜플들이 다른 값을 가지는 속성들의 집합으로 구성된 키

  • 슈퍼 키는 릴레이션 내 모든 튜플들에 대해 유일성은 만족하나, 최소성은 만족하지 못한다.

 

5) 외래 키 (Foreign Key)

: 다른 릴레이션의 기본 키를 참조하는 속성, 또는 속성들의 집합

  • 한 릴레이션이 참조하는 다른 릴레이션의 기본 키와 대응되어 릴레이션 간 참조 관계를 표현한다.
  • 릴레이션의 외래키의 값은 참조하는 릴레이션의 기본 키에 없는 값으로는 입력할 수 없다.

85. 무결성 제약 조건

: 데이터베이스 내 데이터의 정확성을 보장하고 부정확한 자료가 저장되는 것을 막기위해 입력되는 데이터에 가하는 제약 조건

  • 무결성  : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성

 

- 무결성의 종류

  1. 개체 무결성 (Entity Integrity, 실체 무결성) :기본 릴레이션의 기본 키를 구성하는 모든 속성은 Null 값이나 중복 값이 될 수 없다
  2. 도메인 무결성 (Domain Integrity, 영역 무결성) : 입력되는 속성 값은 정의된 도메인에 속한 값이어야 한다
  3. 참조 무결성 (Referential Integrity) : 외래 키의 값은 Null이거나 참조하는 릴레이션의 기본 키 값과 같아야 한다. (= 참조할 수 없는 외래 키 값을 가질 수 없다.)
  4. 사용자 정의 무결성 (User-defined Integrity) : 속성 값들이 사용자가 정의한 제약 조건을 만족해야 한다.

 

- 데이터 무결성 강화

: 데이터 무결성은 데이터의 품질에 직접적인 영향을 주므로 데이터베이스 구축 과정에서 적절한 무결성을 정의하고 강화해야 한다.

 

1. 애플리케이션 단계

  • 데이터를 조작하는 프로그램 내에 데이터 생성, 수정, 삭제 시에 무결성 조건을 검증하는 코드를 추가한다.
  • 장점 : 복잡한 무결성 조건의 구현이 가능하다.
  • 단점 : 소스 코드에 분산되어 관리가 힘들다. 개별적으로 시행되어 적정성 검토가 어렵다.

 

2. 데이터베이스 트리거

  • 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL문을 추가한다.
  • 장점 : 통합 관리가 가능하다. 복잡한 조건의 구현이 가능하다.
  • 단점 : 운영 중 변경이 어렵다. 사용상 주의가 필요하다.

 

3. 제약 조건

  • 데이터베이스에 제약 조건을 설정하여 무결성을 유지한다.
  • 장점 : 통합 관리가 가능하다. 간단한 선언만으로 구현이 가능하다. 변경이 용이하다. 오류 데이터 발생이 방지된다.
  • 단점 : 복잡한 제약 조건의 구현이나 예외 처리가 불가능하다.

89. 시스템 카탈로그 (System Catalog)

: 시스템과 관련있는 다양한 객체에 대한 정보를 보관하는 시스템 데이터베이스

  • 사용자 정보를 포함에 DBMS에서 지원하는 모든 데이터 객체에 대한 정의와 명세 정보를 유지 관리한다.
  • 데이터 사전 (Data Dictionary) : 생성되는 카탈로그들이 데이터 사전에 저장되므로 시스템 카탈로그를 좁은 의미로 데이터 사전이라고 하기도 한다.

 

- 시스템 카탈로그의 특징

  • 카탈로그 자체도 테이블로 구성되어 있어 일반 사용자도 SQL로 내용 검색이 가능하다.
  • 카탈로그의 갱신은 허용하지 않는다.
  • 카탈로그는 DBMS가 스스로 시스템의 변화에 맞춰서 생성, 유지, 갱신한다. 
  • 데이터베이스 시스템에 따라 카탈로그의 구조가 달라진다.
    • 분산 시스템에서의 카탈로그 : 일반 데이터베이스에서 필요한 정보 뿐 아니라 위치 투명성과 중복 투명성 제공을 위한 모든 제어 정보도 포함

 

1) 메타 데이터 (Meta-data)

: 다른 데이터를 설명해주는 데이터. 데이터에 대한 데이터.

 

- 시스템 카탈로그의 정보가 메타 데이터에 해당한다.

- 시스템 카탈로그 내 메타 데이터의 유형

  • 데이터베이스 객체 정보 : 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
  • 사용자 정보 : 사용자 ID 및 비밀번호, 접근 권한, etc.
  • 무결성 제약 조건에 대한 정보 : 기본 키, 외래 키, Null 값 허용 여부, etc.
  • 함수, 프로시저, 트리거 등에 대한 정보

 

2) 시스템 카탈로그를 참조하는 DBMS 모듈 시스템

  • DML 번역기 (DML Compiler) : 응용 프로그램에 삽입된 DML (데이터 조작어)문을 주 언어로 표현한 프로시저 호출로 변환해 질의 처리기와 상호 통신한다.
  • DDL 번역기 (DDL Compiler) : DDL을 메타 데이터를 갖는 테이블(카탈로그)로 변환하여 데이터 사전에 저장한다.
  • 데이터 디렉토리 (Data Directory)
    • 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리 및 유지하는 시스템
    • 시스템 카탈로그와 달리 사용자는 접근이 불가능하며 시스템만 접근한다.
  • 질의 최적화기 : 사용자의 요구를 효율적인 형태로 변환하고 질의 처리 전략을 모색한다.
  • 트랜잭션 처리기 : 같은 데이터에 대해 동시에 일어나는 트랜잭션 문제를 해결하여, 각각의 사용자가 데이터베이스 자원을 배타적으로 이용할 수 있도록 한다.