데이터베이스 기초 개념
정보처리기능사 실기시험 준비 겸 개념 정리해봅니다
스키마와 데이터 모델
데이터베이스란 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임을 말한다. 데이터베이스를 구성하는 개체, 속성, 관계 등 구조에 대한 정의와 이에 대한 제약 조건 등을 기술하는 개념을 스키마(Schema)라고 한다.
스키마의 구분
- 개념 스키마: 데이터베이스의 전체적인 논리적 구조
- 외부 스키마: 사용자나 응용 프로그래머의 입장에서 바라본 데이터베이스의 논리적 구조
- 내부 스키마: 물리적 저장장치의 관점에서 바라본 데이터 표현 형식 및 방법
스키마를 논리적으로 표현하기 위한 개념적 모형을 데이터 모델이라 한다.
데이터 모델의 구성 요소 중 개체(Entity)란 데이터베이스에 표현되는 개념이나 정보 단위를 말한다(ex: 학생 OOO). 속성(Attribute)는 개체의 구성 요소로서 그 개체의 성질이나 상태를 기술하는 항목을 말한다(ex: OOO의 이름, 학번, 학점). 관계(Relationship)란 여러 개체 간의 연관성을 결정짓는 연결을 말한다. (ex: 교수 OOO이 학생 OOO을 지도하는 관계)
ER(Entity Relationship) 모델은 대표적인 데이터 모델로, ERD(Entity Relationship Diagram)을 이용해 개체, 속성, 관계 등을 용이하게 표현한다.
또한 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성하거나 관리하는 소프트웨어를 DBMS(DataBase Management System)라고 한다.
DBMS의 종류
- 계층형 DBMS: 트리 구조를 이용하여 데이터의 상호 관계를 표현 (부모-자식 관계, 1:N 대응)
- 망형 DBMS: 그래프를 이용해 데이터의 상호 관계를 표현 (1:1, 1:N, N:M 대응 모두 지원)
- 관계형 DBMS: 2차원적인 표를 하나의 데이터베이스로 묶어 테이블 내부 정보끼리의 관계, 테이블끼리의 관계 설정
관계형 데이터베이스
이중 관계형 데이터베이스는 가장 널리 사용되는 종류이며, SQL, Oracle 등이 대표적인 관계형 DBMS이다.
관계형 데이터베이스에서 개체나 관계를 표현하는 표를 릴레이션(Relation)이라 부른다.
릴레이션은 데이터의 구조를 나타내는 릴레이션 스키마(ex: 학번, 학과)와 구체적인 속성 값에 해당하는 릴레이션 인스턴스(ex: 2024-00000, 컴퓨터공학부)으로 이루어져 있다. 릴레이션을 구성하는 각각의 행(속성들의 모임)을 튜플(Tuple)이라고 하며, 튜플의 개수를 카디널리티(Cardinality, 기수)라고 한다. 또한 속성의 개수를 디그리(Degree, 차수)라고 한다.
하나의 속성이 취할 수 있는 모든 원자 값들의 집합을 도메인(Domain)이라 말한다(ex: 학년 속성의 도메인은 {1,2,3,4}).
데이터베이스에서, 튜플을 검색하거나 정렬할 때 기준이 되는 속성을 키(Key)라 한다.
키의 종류
- 슈퍼키(Super key): 각 튜플을 유일하게 식별할 수 있는 속성들의 집합 (유일성 만족)
- 후보키(Candidate key): 슈퍼키의 부분집합으로, 튜플을 유일하게 식별하기 위한 최소한의 속성들의 집합 (유일성, 최소성 만족)
- 기본키(Primary key): 후보키 중에서 특별히 선정된 키로, 중복된 값을 가질 수 없으며 NULL 값을 가질 수 없음
- 대체키(Alternate key): 후보키 중 기본키를 제외한 나머지
- 외래키(Foreign key): 다른 릴레이션의 기본키를 참조하는 속성으로 릴레이션 간의 관계를 표현할 때 사용됨
데이터베이스의 무결성(Integrity)이란 데이터베이스 값의 정확성을 의미한다.
무결성의 종류
- 개체 무결성(Entity Integrity): 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL이나 중복된 값을 가질 수 없음.
- 도메인 무결성(Domain Integrity): 속성 값은 도메인의 원소여야 함.
- 참조 무결성(Referential Integrity): 외래키 값은 NULL 또는 참조하는 릴레이션의 기본키 값이어야 함.
- NULL 무결성
- 고유(Unique) 무결성
- 관계 무결성
- 키(Key) 무결성
- 사용자 정의 무결성
잘못 설계된 관계형 스키마에서 데이터 중복을 최소화하고 무결성을 유지할 수 있도록 만들어 가는 과정을 정규화(Normalization)이라 한다. 정규화의 과정을 개략적으로 나타내면 다음과 같다.
도메인에 원자값이 아닌 값 제거(한 속성에 여러 값 x) -> 부분적 함수 종속 제거 -> 이행적 함수 종속 제거 -> 결정자이면서 후보키가 아닌 것 제거 -> 다치 종속 제거 -> 조인 종속성 이용
정규화를 거치지 않으면 데이터베이스 내 데이터들의 중복으로 인해 릴레이션 조작 시 예기치 못한 문제가 발생할 수 있는데, 이를 이상(Anomaly)라 부른다.
고급 데이터베이스 기능
뷰(View)는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해, 기본 테이블로부터 만들어진 가상의 테이블을 말한다.
인덱스(Index)란 데이터 레코드의 검색 시간을 단축시키기 위해 만든 보조적인 데이터 구조를 의미한다.
시스템 카탈로그(System Catalog)란 시스템 그 자체에 대한 정보를 포함하는 데이터베이스이다. 여기 저장된 정보를 메타데이터(Meta-Data)라고 한다.
트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 가장 기본적인 작업 단위이다. 트랜잭션은 원자성, 일관성, 독립성, 영속성 등의 성질을 갖는다.
Reference
- 2024 시나공 정보처리기능사 실기 기본서. 길벗.