DatabaseJun 19, 2025

Database Basics

Database Basics

데이터베이스의 기초

데이터베이스(DB, Database)는 일정한 규칙 혹은 규약을 통해 구조화되어 저장되는 데이터의 집합이다. 데이터베이스를 제어, 관리하는 통합 시스템을 데이터베이스 관리 시스템(DBMS, Database Management System)이라고 한다. 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(Query Language)를 통해 삽입, 삭제, 수정, 조회 등의 작업을 수행할 수 있다.



목차



엔티티

엔티티(Entity)는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 객체를 의미한다. 예를 들어 회원이라는 엔티티는 이름, 아이디, 주소, 전화번호, 이메일 등의 속성을 가질 수 있다.


약한 엔티티와 강한 엔티티

엔티티는 약한 엔티티와 강한 엔티티로 나눌 수 있다. 약한 엔티티는 다른 엔티티에 의존하여 존재하는 엔티티를 의미하며, 강한 엔티티는 독립적으로 존재할 수 있는 엔티티를 의미한다. 예를 들어 고객이라는 엔티티는 강한 엔티티이고, 주문이라는 엔티티는 고객 엔티티에 의존하여 존재하는 약한 엔티티이다.



릴레이션

릴레이션(Relation)은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다. 엔티티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다.

회원
이름
아이디
주소
전화번호

이 엔티티는 회원의 기본 정보를 저장하기 위한 구조를 보여준다. 회원이라는 이 엔티티는 데이터베이스에서 관리될 때 릴레이션으로 표현된다. 릴레이션은 관계형 데이터베이스에서는 ‘테이블’이라고 하며, 비관계형(NoSQL, Not Only SQL) 데이터베이스에서는 ‘컬렉션’이라고 한다.

테이블과 컬렉션

데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 나눌 수 있다. 대표적인 관계형 데이터베이스 중 하나인 MySQL의 구조는 레코드-테이블-데이터베이스로 구성되어 있다. 대표적인 비관계형 데이터베이스 중 하나인 MongoDB의 구조는 도큐먼트-컬렉션-데이터베이스로 구성되어 있다.



속성

속성(Attribute)은 엔티티가 가지는 특성을 의미한다. 예를 들어 회원 엔티티는 이름, 아이디, 주소, 전화번호 등의 속성을 가질 수 있다. 속성은 릴레이션의 열(Column)로 표현되며, 각 속성은 도메인을 가진다.



도메인

도메인(Domain)이란 속성이 가질 수 있는 값의 집합을 의미한다. 예를 들어 회원 엔티티의 성별 속성이 가질 수 있는 값은 { 남성, 여성 } 이라는 집합이 된다.



필드와 레코드

필드(Field)는 릴레이션의 열(Column)과 속성을 의미하며, 레코드(Record)는 릴레이션의 행(Row)과 엔티티를 의미하고 '튜플'이라고도 불린다. 예를 들어 회원 엔티티의 이름, 아이디, 주소, 전화번호 등의 속성은 필드가 되고, 각 회원의 정보는 레코드가 된다. 아래의 표는 회원 엔티티의 릴레이션을 나타낸다.

이름아이디주소전화번호
홍길동hong123서울시 강남구010-1234-5678
김철수kim123부산시 해운대구010-2345-6789
이영희lee123대구시 수성구010-3456-7890

필드 타입

필드는 타입을 갖는다. 예를 들어 이름은 문자열, 나이는 정수의 타입을 갖는다. 타입은 DBMS마다 다르다.


숫자 타입

타입용량(바이트)범위
TINYINT1-128 ~ 127
SMALLINT2-32,768 ~ 32,767
MEDIUMINT3-8,388,608 ~ 8,388,607
INT4-2,147,483,648 ~ 2,147,483,647
BIGINT8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

날짜 타입

타입용량(바이트)범위
DATE31000-01-01 ~ 9999-12-31
DATETIME81000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP41970-01-01 00:00:01 ~ 2038-01-19 03:14:07

문자열 타입

타입용량(바이트)범위
CHAR1 ~ 255고정 길이 문자열
VARCHAR1 ~ 65535가변 길이 문자열


관계

데이터베이스에는 여러 가지의 릴레이션이 존재할 수 있으며, 이들 간의 관계(Relation)를 정의할 수 있다. 릴레이션 간의 관계는 관계 화살표로 표현되며, 관계의 종류는 다음과 같다.


1:1 관계

1:1 관계는 한 릴레이션의 레코드가 다른 릴레이션의 레코드와 1:1로 대응되는 관계를 의미한다. 예를 들어 회원 엔티티와 회원 상세 정보 엔티티가 1:1 관계를 가질 수 있다.


1:N 관계

1:N 관계는 한 릴레이션의 레코드가 다른 릴레이션의 여러 레코드와 대응되는 관계를 의미한다. 예를 들어 회원 엔티티와 주문 엔티티가 1:N 관계를 가질 수 있다. 즉, 한 회원은 여러 개의 주문을 할 수 있지만, 각 주문은 한 회원에만 속한다.


N:M 관계

N:M 관계는 두 릴레이션의 레코드가 서로 여러 개의 레코드와 대응되는 관계를 의미한다. 예를 들어 학생 엔티티와 수업 엔티티가 N:M 관계를 가질 수 있다. 즉, 한 학생은 여러 개의 수업을 들을 수 있고, 한 수업은 여러 명의 학생이 들을 수 있다. 이러한 N:M 관계는 1:N, 1:M의 관계를 갖는 중간 릴레이션을 통해 표현할 수 있다.



키(Key)는 릴레이션에서 레코드를 식별하는 데 사용되는 속성이다. 키는 릴레이션의 각 레코드를 고유하게 식별할 수 있어야 한다. 키는 다음과 같은 종류가 있다.


기본 키(Primary Key)

기본 키는 릴레이션에서 각 레코드를 고유하게 식별하는 속성이다. 기본 키는 중복된 값과 NULL 값을 가질 수 없으며 유일성과 최소성을 만족해야 한다. 예를 들어 회원 엔티티의 아이디 속성은 기본 키가 될 수 있다.


외래 키(Foreign Key)

외래 키는 다른 릴레이션의 기본 키를 참조하는 속성이며 릴레이션 간의 관계를 정의하는 데 사용된다. 예를 들어 주문 엔티티의 회원 아이디 속성은 회원 엔티티의 아이디 속성을 참조하는 외래 키가 될 수 있다. 외래 키는 기본 키와 달리 중복된 값을 가질 수 있으며, NULL 값을 가질 수도 있다.


후보 키(Candidate Key)

후보 키는 릴레이션에서 기본 키가 될 수 있는 후보 속성이며 유일성과 최소성을 만족해야 한다. 예를 들어 회원 엔티티의 아이디와 이메일 속성은 모두 후보 키가 될 수 있다.


대체 키(Alternate Key)

대체 키는 후보 키 중에서 기본 키로 선택되지 않은 속성을 의미하며 기본 키와 동일하게 유일성과 최소성을 만족해야 한다. 예를 들어 회원 엔티티의 아이디가 기본 키로 선택되었다면, 이메일 속성은 대체 키가 된다.


슈퍼 키(Super Key)

슈퍼 키는 릴레이션에서 레코드를 고유하게 식별할 수 있는 속성의 집합을 의미한다. 슈퍼 키는 기본 키, 후보 키, 대체 키를 포함하며, 중복된 값을 가질 수 있다. 예를 들어 회원 엔티티의 아이디와 이메일 속성의 조합은 슈퍼 키가 될 수 있다.

Share this post

N