🔷 1. 스키마란? (정의 다시 보기)
**스키마(Schema)**는 데이터베이스에서 데이터 구조를 정의해 놓은 설계도 같은 거야.
예를 들어:
우리가 "학생" 정보를 저장할 테이블을 만든다고 하면,
CREATE TABLE student (
student_id INT,
name VARCHAR(50),
age INT,
grade VARCHAR(10)
);
➡️ 이 CREATE TABLE 문이 바로 스키마를 만드는 것이야.
이 테이블에 저장할 수 있는 데이터의 이름, 자료형, 길이, 규칙 등이 모두 정해져 있어.
🏫 예시: 학교 다니는 우리 반
우리 반 친구들 정보를 컴퓨터에 저장한다고 생각해보자!
저장할 내용은 이런 거야:
- 이름
- 나이
- 키
이 정보를 표로 저장하려면, 표의 구조를 먼저 정해야 해.
그게 바로 스키마야!
📋 이렇게 생긴 설계도 (스키마)
| 이름 (문자) | 나이 (숫자) | 키 (숫자) |
| "맛탱이" | 10 | 140 |
이걸 스키마로 정해놓으면, 컴퓨터는 다음부터는 그 틀에 맞춰서만 데이터를 받아줘!
🔷 2. 스키마에 들어있는 정보들
스키마 안에는 어떤 게 들어있을까?
| 항목 | 설명 예시 |
| 테이블 이름 | student, member, board 등 |
| 컬럼(열)이름 | name, age, email 등 |
| 데이터 타입 | INT, VARCHAR, DATE, BOOLEAN 등 |
| 제약 조건 | NOT NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY 등 |
| 관계 | 테이블 간 연결 (ex. 외래 키) |
🔷 3. 스키마는 왜 필요해?
| 이유 | 설명 |
| 📦 데이터 구조 통일 | 모든 데이터를 같은 형식으로 정리할 수 있어. |
| 🔐 잘못된 데이터 차단 | 숫자 자리에 글자 넣는 실수 방지! |
| 🔍 검색·조회가 쉬워짐 | 구조가 정해져 있으니까 검색이 정확해져 |
| 🤝 여러 사람과 협업 가능 | 규칙이 정해져 있어 다른 개발자도 이해할 수 있음 |
🧩 스키마가 왜 중요해?
- 📦 어떤 데이터를 저장할지 정해줌
- ⛔️ 이상한 데이터 못 넣게 막아줌 (예: 나이에 "고양이" 이런 건 안 돼!)
- 📖 데이터 찾기, 정리하기 쉽게 만들어줌
🗂️ 스키마는 어디에 쓰일까?
- 데이터베이스(MySQL, Oracle, 등등)
- 앱이나 웹사이트에서 회원 정보 관리할 때
- 은행, 병원, 학교 같은 시스템에서 정보 저장할 때
🔷 4. 실무에서의 스키마 예시
📌 회원 테이블
CREATE TABLE member (
id INT PRIMARY KEY,
username VARCHAR(20) NOT NULL,
password VARCHAR(100) NOT NULL,
email VARCHAR(50),
reg_date DATE DEFAULT SYSDATE
);
➡️ 이건 "회원가입" 정보의 스키마야
여기서 보면 username은 반드시 입력해야 하고,
reg_date는 입력 안 해도 자동으로 오늘 날짜가 들어가!
🔷 5. 스키마 vs 데이터베이스 vs 테이블
| 개념 | 설명 |
| 데이터베이스 | 데이터를 저장하는 공간 전체 (큰 창고) |
| 스키마 | 그 안에 있는 데이터의 구조 설계도 |
| 테이블 | 데이터를 실제로 저장하는 표 |
비유
데이터베이스는 학교,
스키마는 학년/반의 학생정보 설계도,
테이블은 각 반의 출석부라고 보면 돼!
🔷 6. 스키마 관리 예시 (Oracle 기준)
-- 사용자(스키마) 생성
CREATE USER myuser IDENTIFIED BY mypass;
-- 권한 부여
GRANT CONNECT, RESOURCE TO myuser;
-- 해당 사용자 스키마에 테이블 생성
CREATE TABLE myuser.board (
board_id INT PRIMARY KEY,
title VARCHAR2(100),
writer VARCHAR2(50),
content CLOB
);
👉 오라클에서는 사용자 = 스키마라고 생각하면 거의 맞아!
✨ 한 줄 정리
스키마는 데이터 저장할 때 어떤 정보를 어떻게 저장할지 미리 정해놓는 설계도야!
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle] 데이터베이스 설계 (0) | 2025.06.11 |
|---|---|
| [Oracle D-20] 트리거(trigger) (0) | 2025.04.28 |
| [Oracle D-19] 이해가 안가서 다시 보는 왕초보 버전 프로시저(Procedure)와 함수(Function) 이야기 (0) | 2025.04.25 |
| [Oracle D-19] 함수(Function) (0) | 2025.04.25 |
| [Oracle D-19] 프로시저 (Procedure) (0) | 2025.04.25 |