데이터베이스 스키마: Difference between revisions
From IT위키
No edit summary |
No edit summary |
||
Line 19: | Line 19: | ||
#* 예: <code>PRIMARY KEY</code>, <code>FOREIGN KEY</code>, <code>UNIQUE</code>, <code>NOT NULL</code> 등 | #* 예: <code>PRIMARY KEY</code>, <code>FOREIGN KEY</code>, <code>UNIQUE</code>, <code>NOT NULL</code> 등 | ||
== 스키마의 | == 스키마의 레벨과 독립성 == | ||
아래와 같이 스키마를 3단계(level)로 구분하고 각각 독립적으로 동작하는 것을 데이터베이스나 스키마의 [[데이터베이스 독립성|독립성]]이라고 지칭한다. | |||
# '''물리적 스키마 (Physical Schema)''': | # '''물리적 스키마 (Physical Schema / Internal Level)''': | ||
#* 데이터베이스의 실제 저장 구조와 접근 방법을 정의한다. 물리적 스키마는 데이터가 어떻게 디스크에 저장되는지와 관련이 있다. | #* 데이터베이스의 실제 저장 구조와 접근 방법을 정의한다. 물리적 스키마는 데이터가 어떻게 디스크에 저장되는지와 관련이 있다. | ||
# '''논리적 스키마 (Logical Schema)''': | # '''논리적 스키마 (Logical Schema / Conceptual Level)''': | ||
#* 데이터의 구조를 정의하지만, 실제 저장 방식에 대한 정보는 포함하지 않는다. 논리적 스키마는 테이블, 열, 데이터 타입 및 관계를 설명한다. | #* 데이터의 구조를 정의하지만, 실제 저장 방식에 대한 정보는 포함하지 않는다. 논리적 스키마는 테이블, 열, 데이터 타입 및 관계를 설명한다. | ||
# '''뷰 (Views)''': | # '''뷰 (Views / External Level)''': | ||
#* 특정 쿼리의 결과를 저장하는 가상의 테이블이다. 데이터의 특정 하위 집합을 쉽게 접근할 수 있도록 도와준다. | #* 특정 쿼리의 결과를 저장하는 가상의 테이블이다. 데이터의 특정 하위 집합을 쉽게 접근할 수 있도록 도와준다. | ||
Latest revision as of 03:40, 17 October 2024
데이터베이스 스키마(Database Schema)는 데이터베이스의 구조를 정의하는 청사진 또는 모델이다. 스키마는 데이터베이스 내의 테이블, 열, 데이터 타입, 관계 및 제약조건 등을 포함하여 데이터가 어떻게 조직되고 저장될지를 설명한다.
구성 요소[edit | edit source]
- 테이블 (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
등
스키마의 레벨과 독립성[edit | edit source]
아래와 같이 스키마를 3단계(level)로 구분하고 각각 독립적으로 동작하는 것을 데이터베이스나 스키마의 독립성이라고 지칭한다.
- 물리적 스키마 (Physical Schema / Internal Level):
- 데이터베이스의 실제 저장 구조와 접근 방법을 정의한다. 물리적 스키마는 데이터가 어떻게 디스크에 저장되는지와 관련이 있다.
- 논리적 스키마 (Logical Schema / Conceptual Level):
- 데이터의 구조를 정의하지만, 실제 저장 방식에 대한 정보는 포함하지 않는다. 논리적 스키마는 테이블, 열, 데이터 타입 및 관계를 설명한다.
- 뷰 (Views / External Level):
- 특정 쿼리의 결과를 저장하는 가상의 테이블이다. 데이터의 특정 하위 집합을 쉽게 접근할 수 있도록 도와준다.
스키마 예시[edit | edit source]
다음은 간단한 데이터베이스 스키마의 예이다:
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 다이어그램[edit | edit source]
데이터베이스 스키마를 시각적으로 표현할 때, ER 다이어그램(Entity-Relationship Diagram)을 사용할 수 있다.
- 이 다이어그램은 엔티티, 속성, 관계를 나타내어 데이터베이스의 구조를 명확하게 보여준다.
실무적으로[edit | edit source]
이론적인 의미와 조금 다르게, 여러 DBMS에서 "데이터베이스 스키마"라고 하면 하나의 독립된 DB 그 자체를 가리킨다.
- 즉 스키마를 만들었다, 스키마를 구분했다는 것은 어떤 데이터베이스 시스템을 위해 DB를 구성했다는 것이다.
- 동일한 스키마 안에서 존재하는 테이블 간엔 Join이 가능하다.
- 예를들어 MySQL에선 CREATE SCHEMA와 CREATE DATABASE가 동일하게 동작한다.
인스턴스와의 차이[edit | edit source]
데이터베이스 인스턴스는 스키마와 유사하게 데이터베이스의 현재 상태를 의미하지만,
- 스키마는 데이터는 포함하지 않고 구조만 지칭하는 것과 달리 인스턴스는 현재 저장된 데이터를 나타낸다.