데이터베이스 관리 시스템 (DBMS)

관계형 DB 관리 시스템 (RDBMS)

RDBMS는 테이블 이라는 정형화된 구조에 데이터를 저장한다.

테이블은 행 (Row, Record, Tuple)열 (Column, Field) 로 구성된다.

관계형 데이터베이스 핵심 개념

RDBMS는 데이터를 테이블, 즉 표 형태로 저장하고 관리한다고 했다.

customer_idnamephoneaddress
1이순신010-1111-1111서울시 강남구
2강감찬010-2222-2222서울시 서초구
3세종대왕010-3333-3333서울시 종로구

여기서 행은 (1, 이순신, 010-1111-1111, 서울시 강남구) 와 같은 테이블에서 가로 한 줄을 의미한다.

열은 customer_id, name, phone, address 같은 세로 항목들을 의미한다.

Primary Key (기본 키, PK)

쇼핑몰에서 같은 날에 이름, 주소, 상품이 같은 주문이 발생했다고 가정하자.

주문일자고객이름고객주소상품명
2025-06-12김한동서울시 마포구A청바지
2025-06-12김한동서울시 마포구A청바지

이때, 두 명의 김한동 고객 중 한명이 주문을 취소해달라고 요청했다면 이 정보로는 어떤 주문을 취소해야 할지 알 수 없다.

데이터의 고유성을 보장해주는 Primary Key (기본 키) 를 도입하면 이러한 문제를 해결할 수 있다.

order_id (PK)주문일자고객이름고객주소상품명
10012025-06-12김한동서울시 마포구A청바지
10022025-06-12김한동서울시 마포구A청바지

위 테이블에서 order_id 를 기본 키로 지정하여 정보가 같아도 다른 주문으로 구분할 수 있다.

모든 테이블에는 기본 키를 설정하는 것이 원칙이다. 보통 열을 table이름_id 로 하여 정수값을 레코드가 추가될 때마다 1씩 증가시키는 방식을 사용한다.

기본 키 규칙

Primary Key는 고유성을 가져야 하고, NULL이면 안된다.

  • Uniqueness (고유성): 기본 키로 지정된 열의 값은 같은 테이블 내에서 중복되면 안된다.
  • NOT NULL: 기본 키로 지정된 열에는 빈 값 (NULL) 이 들어갈 수 없다. 무조건 값이 존재해야한다.

Foreign Key (외래 키, FK)

테이블 별로 각자의 데이터를 구분할 수 있다. 테이블 간에는 외래 키를 통해 데이터 중복을 줄이고, 데이터 불일치 문제를 해결할 수 있다.

customersorders 라는 두 테이블로 나누어 데이터를 저장하기로 결정했다고 가정하면, 테이블은 아래와 같다.

customer_id (PK)namephoneaddress

1이순신010-1111-1111서울시 강남구
2강감찬010-2222-2222서울시 서초구
order_id (PK)order_dateitem_name
10012025-06-11A청바지
10022025-06-11B티셔츠
10032025-06-12C모자

여기서 두 테이블이 완전히 분리되어 있어 1002번 주문 고객이 누군지 알 수 없다.

외래 키를 도입하여 테이블의 한 열이 다른 테이블의 기본 키를 참조하도록 하면 위 문제를 간단히 해결할 수 있다.

order_id (PK)order_dateitem_namecustomer_id (FK)
10012025-06-11A청바지1
10022025-06-11B티셔츠2
10032025-06-12C모자1

부모-자식 관계

두 테이블이 FK를 통한 관계가 있을 때,

FK 열을 가진 쪽이 자식 테이블, 자식 테이블이 참조하는 실제 PK 열을 가진 쪽이 부모 테이블이다.

외래 키 규칙

  • Referential Integrity (참조 무결성): 외래 키 열의 값은 참조하는 부모 테이블의 기본 키 값 중 하나이거나, NULL이어야 한다. 부모 테이블에 존재하지 않는 값은 허용하지 않는다.