데이터베이스 기본 용어

최석훈·2025년 10월 15일

데이터베이스

목록 보기
2/18

Index(인덱스)

데이터의 레코드에 빠르게 접근하기 위해 <키 값, 주소> 쌍으로 구성된 데이터 구조

데이터가 저장된 물리적 구조와 밀접한 관계를 가지고 있으며
인덱스를 통해 테이블의 레코드에 대해 빠르게 액세스를 할 수 있음

Table, Row, Column, Key

파일 시스템(File System)데이터베이스 모델링(Database Modeling)관계형 데이터베이스(Relational DB)
파일 (File)엔티티 (Entity)테이블 (Table)
레코드 (Record)튜플 (Tuple)행 (Row)
키 (Key)식별자 (Identifier)기본키 (Primary Key), 유니크 (Unique)
필드 (Field)속성 (Attribute)열 (Column)
  • 테이블(Table) : 행(Row)과 열(Column)로 이루어진 데이터 집합을 의미. (=릴레이션(Relation))

  • 행(Row) : 관계된 데이터의 묶음. 튜플(Tuple) 또는 레코드(Record)라고도 불림

  • 열(Column) : 가장 작은 단위의 데이터를 의미. 필드(Field) 또는 속성(Attribute)라고도 불림

  • 키(Key) : 테이블에서 행의 식별자로 이용되는 식별자

엔티티(Entity) : 현실 세계에 존재하는 객체를 데이터베이스 상에 표현하기 위해 사용하는 추상적인 개념.

예시) 학생을 관리하기 위해 사용하는 데이터베이스에서 학번, 이름, 나이, 학과 등등의 정보들을 통해 'Student'라는 Entity를 표현할 수 있습니다.

유일성과 최소성

  • 유일성 : 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 성질
    (ex: 주민등록번호)

  • 최소성 : 레코드를 식별하는 데 꼭 필요한 속성들로만 구성되어 있는 성질
    (ex: [주민등록번호 + 학번]은 최소성을 만족하지 않음. Because, 주민등록번호로만 행을 구분할 수 있기 때문!)

Key의 종류

  • 슈퍼 키(Super Key) : 테이블의 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합

    (유일성은 만족하지만 최소성은 만족하지 않음)

  • 복합 키(Composite Key) : 2개 이상의 속성(Attribute)을 사용한 키

  • 후보 키(Candidate Key) : 유일성과 최소성을 만족하는 키 (각 튜플을 유일하게 식별할 수 있는 속성의 집합)

  • 기본 키(Primary Key) : 후보 키에서 선택된 키 (null 값 혹은 중복 값으로 가질 수 없음)

  • 대체 키(Surrogate Key) : 후보 키에서 선택되지 않은 키

  • 외래 키(Foreign Key) : 서로 다른 테이블 간의 관계를 맺어주는 키 (다른 테이블의 기본키를 참조)

Degre(차수)

하나의 Realtion 내에 있는 Attribute의 수
(예를 들어 어떠한 테이블의 열이 고객, 이름, 전화번호로 구성되어있다면 그 테이블의 차수는 3!)

Domain(도메인)

Relation에서 각각의 속성에 채워질 수 있는 데이터의 타입과 길이를 의미
(성별이라는 필드에는 남, 여 외에 다른 값이 들어갈 수 없음. 나이 또한 숫자 값만 가능)

Schema(스키마)

데이터베이스를 구성하는 데이터 객체, 속성, 레코드 간의 관계 등등,
데이터베이스의 골격 구조를 나타내는 일종의 도면.

스키마는 데이터베이스의 엔티티와 그 엔티티들 간의 관계를 정의하고 어떠한 타입의 데이터가 어느 위치에 적재되어야 하는지, 또 다른 테이블이나 엔티티와 어떠한 관계를 맺는지 정의.


  • 외부 스키마 (=서브 스키마=사용자 뷰(가상 테이블))
    사용자 입장에서 정의한 데이터베이스의 논리 구조.
    데이터들을 어떠한 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 뜻하며
    하나의 데이터베이스에는 여러 개의 외부 스키마가 있을 수 있음

  • 개념 스키마 (=전체적인 뷰)
    데이터베이스의 전체적인 논리적 구조.
    사용자가 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스로 하나만 존재하며
    객체 간의 관계와 제약조건, 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 뜻함

  • 내부 스키마
    물리적 저장장치의 입장에서 본 데이터베이스 구조.
    데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

Transaction(트랜잭션)-다른 페이지에서 다시 다룰 예정

  • 데이터베이스 내에서 한꺼번에 모두 수행되어야 할 연산들의 집합
  • 하나의 작업 처리를 위한 논리적 작업 단위

데이터베이스 언어 종류

  • DML(Data Multipulation Language) - 데이터 조작어
    데이터베이스 내의 자료를 검색, 삽입, 갱신, 삭제하기 위해 사용되는 언어
    (주요 명령어 - INSERT, UPDATE, DELETE, SELECT 등)
-- 데이터 조회
SELECT * FROM 학생;

-- 데이터 삽입
INSERT INTO 학생 (학번, 이름, 전공)
VALUES (101, '홍길동', '컴퓨터공학');

-- 데이터 수정
UPDATE 학생
SET 이름 = '김철수'
WHERE 학번 = 101;

-- 데이터 삭제
DELETE FROM 학생
WHERE 학번 = 101;
  • DDL(Data Definition Language) - 데이터 정의어
    데이터베이스 구조를 정의하는 언어. 데이터를 생성, 수정, 삭제하는 등 전체 골격을 결정하는 역할
    (주요 명령어 - CREATE, ALTER, DROP)
-- 테이블 생성
CREATE TABLE 학생 (
  학번 INT PRIMARY KEY,
  이름 VARCHAR(20),
  전공 VARCHAR(30)
);

-- 테이블 구조 변경 (열 추가)
ALTER TABLE 학생
ADD 입학년도 INT;

-- 테이블 삭제
DROP TABLE 학생;
  • DCL(Data Control Language) - 데이터 제어어
    데이터베이스에 저장된 데이터 관리를 위해 데이터의 보안성, 무결성 유지 등을 제어하는 언어
    (주요 명령어 - COMMIT, ROLLBACK, GRANT, REVOKE 등)
-- 1. 사용자 user1에게 학생 테이블에 대한 SELECT 권한 부여
GRANT SELECT ON 학생 TO user1;

-- 2. 사용자 user1에게 부여한 권한 회수
REVOKE SELECT ON 학생 FROM user1;

-- 3. 학생 테이블에 데이터 삽입
INSERT INTO 학생 (학번, 이름, 전공)
VALUES (301, '최지우', '경제학');

-- 4. 삽입한 데이터 저장(확정)
COMMIT;

-- 5. 실수로 잘못된 데이터 삽입
INSERT INTO 학생 (학번, 이름, 전공)
VALUES (999, '오류', '오류학');

-- 6. 잘못된 데이터 되돌리기 (변경 취소)
ROLLBACK;

Integrity(무결성)

정보에 결점이 없도록 유지하는 성질

데이터베이스 내에 저장되는 데이터 값들이 항상 일관성을 갖고 데이터의 유효성, 정확성, 안정성을 유지할 수 있도록 하는 제약조건을 두는 데이터베이스의 특성

원자값

더 이상 분해되지 않는 최소 구성의 단위

Anomaly(이상 현상)

테이블 내에서 데이터 중복성에 의해 발생되는 데이터 불일치 현상

  • 갱신 이상(Modification Anomaly)
    중복 데이터 중 일부만 수정되어 데이터 불일치가 일어나는 현상

  • 삽입 이상(Insertion Anomaly)
    중복된 데이터 중 일부만 수정되어 데이터의 모순이 일어난 현상

  • 삭제 이상(Deletion Anomaly)
    특정 정보 삭제 시 다른 정보까지 삭제되어버리는 현상

Normalization(정규화)

논리적 설계단계에서 발생할 수 있는 종속으로 인한 이상 현상의 문제점을 해결하기 위해,
속성들 간의 종속 관계를 분석하여 여러 개의 릴레이션으로 분해하는 과정

1NF (제1정규형)

  • 모든 속성이 원자값(Atomic Value)을 가져야 함. 즉, 각 칸(cell)에 하나의 값만 있어야 함.
  • 중복된 행이 없어야 함.

ex)

학생 전화번호가 010-1111-2222, 010-3333-4444 같이 여러개를 한 칸에 넣으면 안 됨.

  • 각 전화번호를 별도 행이나 별도 컬럼으로 분리해야 함.

2NF (제2정규형)

  • 1NF를 만족하고, 부분 함수 종속성 제거
    (즉, 기본키가 복합키일 때, 기본키의 일부에만 의존하는 속성을 제거함)

ex)

기본키가 (학번, 과목코드)일 때, 학생 이름이 학번에만 의존하면 안 되고, 별도 테이블로 분리해야 함.

  • 즉, 복합키 중 일부에만 의존하는 컬럼을 분리하여 중복 제거

3NF (제3정규형)

  • 2NF를 만족하고, 이행 함수 종속성 제거
    (기본키가 아닌 속성끼리 서로 의존하면 안 됨)

ex)

학생 테이블에 학번, 학과코드, 학과명이 있을 때,
학과명은 학과코드에 의존하므로 별도 테이블로 분리해야 함.

profile
기술 노트 블로그 (2025.09.01~)

2개의 댓글

comment-user-thumbnail
2025년 10월 15일

용어 설명은 잘 되어 있는데, 실제 SQL 예시가 거의 없음.
특히 DDL, DML 언급했으면 간단한 쿼리라도 보여줘야 함.

CREATE TABLE users (
  id INT PRIMARY KEY,           -- 기본 키
  name VARCHAR(50),
  email VARCHAR(100) UNIQUE     -- 유니크 키
);

INSERT INTO users VALUES (1, '홍길동', 'hong@test.com');  -- DML
SELECT * FROM users WHERE id = 1;

이런 식으로 직접 써봐야함.

트랜잭션 언급했으면 ACID 속성(원자성, 일관성, 고립성, 지속성) 설명 필수임.
"한꺼번에 수행되어야 할 연산"이라는 정의만으론 왜 트랜잭션 쓰는지 와닿지 않음.
계좌 이체 예시(A 계좌 출금 + B 계좌 입금 둘 다 성공 or 둘 다 실패) 추가하면
트랜잭션 필요성 명확해짐.

정규화도 언급만 하고 1NF, 2NF, 3NF 같은 단계별 설명이 없음.

1개의 답글