※ RDBMS란 무엇인가?
RDBMS(Relational Database Management System)란 데이터를 테이블(Table)이라는 구조화된 형태로
저장하고, 데이터 간의 관계(Relation)를 정의하여 효율적으로 관리하는 데이터베이스 관리 시스템입니다.
1970년 IBM의 에드거 F. 코드(Edgar F. Codd)가 관계형 모델(Relational Model)을 제안하면서 탄생했으며,
현재 대부분의 데이터베이스(MySQL, PostgreSQL, Oracle, MariaDB 등)는
이 관계형 모델을 기반으로 동작합니다.
-- 간단한 RDBMS 예시: 학생과 성적 테이블
CREATE TABLE student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
major VARCHAR(50)
);
CREATE TABLE grade (
student_id INT,
subject VARCHAR(50),
score INT,
FOREIGN KEY (student_id) REFERENCES student(student_id)
);
→ 관계형 DB는 이렇게 테이블 간의 관계를 정의하고 정형화된 구조로 데이터를 저장합니다.
※ RDBMS의 주요 구성 요소
관계형 데이터베이스를 이해하려면 아래 구성 요소들을 정확히 알아야 합니다.
| 용어 | 설명 |
|---|---|
| Relation (릴레이션) | 데이터를 저장하는 2차원 테이블 |
| Tuple (튜플) | 테이블의 한 행(Row), 즉 하나의 데이터 레코드 |
| Attribute (속성) | 테이블의 한 열(Column), 데이터의 특성 |
| Domain (도메인) | 속성이 가질 수 있는 값의 범위 |
| Cardinality (카디널리티) | 테이블에 저장된 튜플(행)의 개수 |
| Degree (디그리) | 테이블의 속성(열)의 개수 |
-- student 테이블 예시
student_id | name | major
-----------+----------+-------------
1 | 지우 | Computer Sci
2 | 민준 | Data Science
3 | 수현 | AI Engineering
# Relation: student
# Tuple: 각 행 (예: 1, 지우, Computer Sci)
# Attribute: student_id, name, major
# Domain: name은 문자열, score는 정수 등
# Cardinality: 3
# Degree: 3
※ Key(키)란?
Key는 테이블에서 특정 튜플(행)을 식별하거나 다른 테이블과의 관계를 정의하는 속성 또는 속성의 집합입니다.
데이터 무결성과 검색 성능을 높이는 핵심 개념입니다.
| 키 종류 | 설명 |
|---|---|
| Super Key (슈퍼키) | 튜플을 유일하게 식별할 수 있는 모든 속성의 조합 |
| Candidate Key (후보키) | 슈퍼키 중에서 최소한의 속성만으로 구성된 키 |
| Primary Key (기본키) | 후보키 중에서 대표로 선택된 키 (NULL 불가, 중복 불가) |
| Alternate Key (대체키) | 후보키 중 기본키로 선택되지 않은 키 |
| Foreign Key (외래키) | 다른 테이블의 기본키를 참조하는 키 (테이블 간 관계 정의) |
-- 예: student 테이블의 student_id는 Primary Key
CREATE TABLE student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50) UNIQUE
);
-- grade 테이블에서 student_id는 Foreign Key
CREATE TABLE grade (
grade_id INT PRIMARY KEY,
student_id INT,
subject VARCHAR(50),
score INT,
FOREIGN KEY (student_id) REFERENCES student(student_id)
);
→ Primary Key는 반드시 유일해야 하며 NULL을 허용하지 않습니다.
→ Foreign Key는 참조 무결성을 유지하고 테이블 간의 관계를 정의합니다.
※ 무결성 제약조건 (Integrity Constraints)
무결성(Integrity)란 데이터의 정확성, 일관성, 유효성을 보장하는 성질입니다.
RDBMS는 제약조건(Constraint)을 통해 데이터 무결성을 유지합니다.
| 제약조건 | 설명 |
|---|---|
| Entity Integrity (개체 무결성) | 기본키는 NULL이거나 중복될 수 없다. |
| Referential Integrity (참조 무결성) | 외래키는 반드시 참조하는 기본키 값 또는 NULL이어야 한다. |
| Domain Integrity (도메인 무결성) | 속성 값은 정의된 데이터 타입과 범위를 벗어나지 않아야 한다. |
-- 개체 무결성: 기본키는 NULL/중복 불가
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- 참조 무결성: 외래키는 반드시 존재하는 기본키를 참조
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
→ 무결성을 지키지 않으면 데이터 간 일관성이 깨지고,
시스템 신뢰성에 큰 문제가 생깁니다.
※ RDBMS 주요 객체
RDBMS는 테이블 외에도 여러 객체를 통해 데이터 관리와 성능을 최적화합니다.
| 객체 | 설명 |
|---|---|
| Table | 데이터를 저장하는 기본 단위 |
| View | 실제 데이터를 저장하지 않고 SELECT 결과를 가상의 테이블처럼 보여줌 |
| Index | 검색 성능을 향상시키기 위한 자료구조 (B-tree, Hash 등) |
| Trigger | 특정 이벤트(INSERT, UPDATE, DELETE) 발생 시 자동 실행되는 코드 |
| Procedure / Function | SQL 로직을 미리 정의한 재사용 가능한 코드 블록 |
-- View 예제
CREATE VIEW student_view AS
SELECT name, major FROM student WHERE major = 'AI Engineering';
-- Index 예제
CREATE INDEX idx_student_name ON student(name);
-- Trigger 예제
CREATE TRIGGER log_insert
AFTER INSERT ON student
FOR EACH ROW
INSERT INTO log_table(action) VALUES('New student added');
→ 이러한 객체들은 시스템을 더 구조적이고 효율적으로 만들어줍니다.
'2025 현대오토에버 모빌리티 SW 스쿨(클라우드 2기) > 데이터베이스' 카테고리의 다른 글
| [Database] DDL과 제약 조건 (0) | 2025.10.07 |
|---|---|
| [Database] SQL 언어 완벽 정리 (3) – SubQuery와 Join (0) | 2025.10.07 |
| [Database] SQL 언어 완벽 정리 (2) – 함수와 GROUP BY (0) | 2025.10.07 |
| [Database] SQL 언어 완벽 정리 (1) – 개요 및 SELECT 기본 (0) | 2025.10.07 |
| [Database] 데이터베이스의 개념과 역할 (0) | 2025.10.07 |