데이터베이스 스키마
From IT Wiki
데이터베이스 스키마(Database Schema)는 데이터베이스의 구조를 정의하는 청사진 또는 모델이다. 스키마는 데이터베이스 내의 테이블, 열, 데이터 타입, 관계 및 제약조건 등을 포함하여 데이터가 어떻게 조직되고 저장될지를 설명한다.
구성 요소
- 테이블 (Tables):
- 데이터를 저장하는 기본 단위이다. 각각의 테이블은 특정 주제나 개체를 나타낸다.
- 예:
Employees
,Departments
,Products
등
- 열 (Columns):
- 각 테이블의 필드를 정의한다. 열은 테이블 내의 개별 데이터 항목을 나타낸다.
- 예:
employee_id
,name
,department_id
,salary
등
- 데이터 타입 (Data Types):
- 각 열에 저장될 수 있는 데이터의 종류를 정의한다. 데이터 타입은 텍스트, 숫자, 날짜, 불리언 등 다양한 형식이 있다.
- 예:
VARCHAR
,INT
,DATE
,BOOLEAN
등
- 관계 (Relationships):
- 테이블 간의 연관성을 정의한다. 관계는 주로 **외래 키 (Foreign Key)**를 통해 설정된다.
- 예:
Employees.department_id
가Departments.department_id
를 참조하는 경우.
- 제약조건 (Constraints):
- 데이터의 무결성을 유지하기 위해 적용되는 규칙이다. 제약조건은 특정 열의 데이터가 특정 조건을 만족해야 함을 보장한다.
- 예:
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
,NOT NULL
등
스키마의 종류
- 물리적 스키마 (Physical Schema):
- 데이터베이스의 실제 저장 구조와 접근 방법을 정의한다. 물리적 스키마는 데이터가 어떻게 디스크에 저장되는지와 관련이 있다.
- 논리적 스키마 (Logical Schema):
- 데이터의 구조를 정의하지만, 실제 저장 방식에 대한 정보는 포함하지 않는다. 논리적 스키마는 테이블, 열, 데이터 타입 및 관계를 설명한다.
- 뷰 (Views):
- 특정 쿼리의 결과를 저장하는 가상의 테이블이다. 데이터의 특정 하위 집합을 쉽게 접근할 수 있도록 도와준다.
스키마 예시
다음은 간단한 데이터베이스 스키마의 예이다:
Employees 테이블
Column Name | Data Type |
---|---|
employee_id | INT |
name | VARCHAR |
department_id | INT |
salary | DECIMAL |
Departments 테이블
Column Name | Data Type |
---|---|
department_id | INT |
department_name | VARCHAR |
ER 다이어그램
데이터베이스 스키마를 시각적으로 표현할 때, ER 다이어그램(Entity-Relationship Diagram)을 사용할 수 있다.
- 이 다이어그램은 엔티티, 속성, 관계를 나타내어 데이터베이스의 구조를 명확하게 보여준다.
실무적으로
이론적인 의미와 조금 다르게, 여러 DBMS에서 "데이터베이스 스키마"라고 하면 하나의 독립된 DB 그 자체를 가리킨다.
- 즉 스키마를 만들었다, 스키마를 구분했다는 것은 어떤 데이터베이스 시스템을 위해 DB를 구성했다는 것이다.
- 동일한 스키마 안에서 존재하는 테이블 간엔 Join이 가능하다.
- 예를들어 MySQL에선 CREATE SCHEMA와 CREATE DATABASE가 동일하게 동작한다.
인스턴스와의 차이
데이터베이스 인스턴스는 스키마와 유사하게 데이터베이스의 현재 상태를 의미하지만,
- 스키마는 데이터는 포함하지 않고 구조만 지칭하는 것과 달리 인스턴스는 현재 저장된 데이터를 나타낸다.