node.js

관계형 데이터 RDB 기초 정리

2025. 4. 11. 17:22
목차
  1. 1. 기본 개념
  2. 2. 기본 문법 (DDL - Data Definition Language)
  3. 📌 테이블 생성
  4. 📌 테이블 수정
  5. 📌 테이블 삭제
  6. 📌 스키마 생성 및 삭제
  7. 3. 테이블 간 관계 설정
  8. 🔹 1:N 관계 예시 (게시판 - 게시글)
  9. 🔹 사용자와 게시글의 관계 추가 (1:N)
  10. 🔹 게시글과 댓글 관계 (1:N)
  11. 🔹 N:M 관계 예시 (사용자 - 권한)
  12. 4. 추가 개념
  13.  

관계형 데이터베이스(RDB) 기초 정리 (PostgreSQL 기준)

관계형 데이터베이스(Relational Database, RDB)는 데이터를 테이블(Table) 구조로 정리하고, 테이블 간의 관계(Relationship)를 통해 효율적으로 데이터를 관리하고 검색할 수 있는 시스템입니다. 이 글에서는 대표적인 오픈소스 RDB인 PostgreSQL을 기준으로 기본 개념과 문법을 정리합니다.


1. 기본 개념

개념설명
테이블 (Table) 데이터를 행(Row)과 열(Column)로 저장하는 구조. 하나의 테이블은 하나의 주제나 엔티티를 나타냅니다.
열 (Column) 속성(Attribute)을 나타내며, 각 열은 고유한 이름과 데이터 타입을 가집니다.
행 (Row) 하나의 레코드(Record)로, 테이블의 실제 데이터를 구성합니다.
기본 키 (Primary Key) 각 행을 고유하게 식별하는 열. 중복 불가, NULL 불가. 테이블당 하나만 존재 가능.
외래 키 (Foreign Key) 다른 테이블의 기본 키를 참조하는 열. 테이블 간 관계를 표현하고 무결성 유지.
관계 (Relationship) 테이블 간 논리적 연결.
- 1:1: 각 레코드가 하나의 관련 레코드만 가짐
- 1:N: 한 레코드가 여러 레코드와 관계
- N:M: 여러 레코드가 다수와 관계 (중간 테이블 사용)
스키마 (Schema) 데이터베이스의 구조를 정의하는 청사진. 테이블, 열, 관계, 제약조건 등을 포함.

2. 기본 문법 (DDL - Data Definition Language)

📌 테이블 생성

sql
 
CREATE TABLE 테이블이름 ( 열이름 데이터타입 [제약조건], ... PRIMARY KEY (기본키열), FOREIGN KEY (외래키열) REFERENCES 참조테이블(참조열) [ON DELETE 옵션] [ON UPDATE 옵션] );

자주 사용하는 데이터 타입 예시:

CREATE TABLE 테이블이름 (
    열이름 데이터타입 [제약조건],
    ...
    PRIMARY KEY (기본키열),
    FOREIGN KEY (외래키열) REFERENCES 참조테이블(참조열)
        [ON DELETE 옵션] [ON UPDATE 옵션]
);
  • INTEGER, VARCHAR(n), TEXT
  • DATE, TIMESTAMP
  • BOOLEAN

제약 조건:

  • NOT NULL: NULL 불가
  • UNIQUE: 고유 값
  • PRIMARY KEY: 기본 키
  • FOREIGN KEY: 외래 키
  • CHECK (조건): 조건 만족 시 입력 가능
  • DEFAULT 값: 기본값 설정

예시:

sql
 
CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    registration_date TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

📌 테이블 수정

sql
 
ALTER TABLE 테이블이름
ADD COLUMN 열이름 데이터타입 [제약조건];

ALTER TABLE 테이블이름
DROP COLUMN 열이름;

ALTER TABLE 테이블이름
RENAME TO 새테이블이름;

예시 (컬럼 추가):

sql
 
ALTER TABLE users
ADD COLUMN nickname VARCHAR(50) UNIQUE;

📌 테이블 삭제

sql
 
DROP TABLE 테이블이름 [CASCADE | RESTRICT];

 


📌 스키마 생성 및 삭제

sql
 
CREATE SCHEMA 스키마이름; DROP SCHEMA 스키마이름 [CASCADE | RESTRICT];

3. 테이블 간 관계 설정

🔹 1:N 관계 예시 (게시판 - 게시글)

sql
CREATE TABLE boards (
    board_id SERIAL PRIMARY KEY,
    board_name VARCHAR(100) UNIQUE NOT NULL
);

CREATE TABLE posts (
    post_id SERIAL PRIMARY KEY,
    board_id INTEGER NOT NULL,
    title VARCHAR(200) NOT NULL,
    content TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (board_id) REFERENCES boards(board_id) ON DELETE CASCADE
);
 

🔹 사용자와 게시글의 관계 추가 (1:N)

sql
 
ALTER TABLE posts
ADD COLUMN user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE;

🔹 게시글과 댓글 관계 (1:N)

sql
 
CREATE TABLE comments (
    comment_id SERIAL PRIMARY KEY,
    post_id INTEGER NOT NULL,
    user_id INTEGER NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (post_id) REFERENCES posts(post_id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);

🔹 N:M 관계 예시 (사용자 - 권한)

sql
 
CREATE TABLE roles (
    role_id SERIAL PRIMARY KEY,
    role_name VARCHAR(50) UNIQUE NOT NULL
);

CREATE TABLE user_roles (
    user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
    role_id INTEGER NOT NULL REFERENCES roles(role_id) ON DELETE CASCADE,
    PRIMARY KEY (user_id, role_id)
);

4. 추가 개념

개념설명
데이터 타입 열에 저장할 수 있는 데이터 종류 정의. 사용 예: INTEGER, TEXT, BOOLEAN, TIMESTAMP 등
인덱스 (Index) 빠른 검색을 위한 구조. 생성: CREATE INDEX, 삭제: DROP INDEX
트랜잭션 (Transaction) 데이터 일관성을 위한 단위 작업. BEGIN, COMMIT, ROLLBACK
뷰 (View) 복잡한 쿼리를 단순화하는 가상 테이블. CREATE VIEW, DROP VIEW
함수/프로시저 반복 작업을 위한 재사용 가능한 코드 블록. CREATE FUNCTION, CREATE PROCEDURE


 

'node.js' 카테고리의 다른 글

InfluxDB, Redis, MQTT 정리  (0) 2025.04.18
express 에러 코드 정리  (0) 2025.04.10
2025-04-09 익스프레스 실습(로그인, 회원가입)  (0) 2025.04.09
2025-04-09 TIL - 1  (0) 2025.04.09
multer  (0) 2025.04.09
  1. 1. 기본 개념
  2. 2. 기본 문법 (DDL - Data Definition Language)
  3. 📌 테이블 생성
  4. 📌 테이블 수정
  5. 📌 테이블 삭제
  6. 📌 스키마 생성 및 삭제
  7. 3. 테이블 간 관계 설정
  8. 🔹 1:N 관계 예시 (게시판 - 게시글)
  9. 🔹 사용자와 게시글의 관계 추가 (1:N)
  10. 🔹 게시글과 댓글 관계 (1:N)
  11. 🔹 N:M 관계 예시 (사용자 - 권한)
  12. 4. 추가 개념
  13.  
'node.js' 카테고리의 다른 글
  • InfluxDB, Redis, MQTT 정리
  • express 에러 코드 정리
  • 2025-04-09 익스프레스 실습(로그인, 회원가입)
  • 2025-04-09 TIL - 1
웹개발자지망생
웹개발자지망생
웹개발자지망생
GREENDAY_
웹개발자지망생
전체
오늘
어제
  • 분류 전체보기
    • Devops
    • HTML5 | CSS
    • TIL
    • 알고리즘
    • React
    • CS지식
    • node.js
    • POSTGRESQL
    • Javascript
    • 정보처리산업기사
    • vue

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
웹개발자지망생
관계형 데이터 RDB 기초 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.