본문 바로가기

Master 준비해보기

[DSS] Database Management System Implementation

일단 난 SQL 왕초보

혼자는 못 하니, 내 친구 클로드와 함께 해야지

PostgreSQL이 뭔가요?

PostgreSQL은 데이터베이스 관리 시스템(DBMS)이에요. 쉽게 말하면, 엑셀처럼 데이터를 표 형태로 저장하고 관리하는 프로그램인데, 훨씬 더 강력하고 많은 양의 데이터를 다룰 수 있어요.

예를 들어:

- 학생 정보 (이름, 학번, 전공)

- 쇼핑몰의 상품 정보

- 은행 거래 내역

이런 것들을 체계적으로 저장하고, 필요할 때 빠르게 찾아볼 수 있게 해주는 거예요.

PostgreSQL은 무료이고 오픈소스라서 많은 회사와 학교에서 사용해요.

pgAdmin은 뭔가요?

pgAdmin은 PostgreSQL을 쉽게 사용할 수 있게 도와주는 도구예요.

PostgreSQL 자체는 명령어로만 작동하는데, pgAdmin은 마우스 클릭으로 테이블을 만들고, 데이터를 보고, 관리할 수 있는 시각적인 프로그램이에요.

비유하자면:

- PostgreSQL = 자동차 엔진

- pgAdmin = 운전석과 핸들 (엔진을 편하게 조작하는 도구)

SQL은 뭔가요?

SQL은 데이터베이스와 대화하는 언어예요.

예를 들어:

- "학생 테이블에서 컴퓨터공학과 학생들만 보여줘"

- "새 학생 정보를 추가해줘"

- "이 학생의 전공을 변경해줘"

이런 명령을 SQL 문법으로 작성하는 거예요.


Part 1: Database Setup

- Install PostgresQL and pgAdmin

- Create a database called bookstore_assignment

Part 1: 데이터베이스 설치 및 생성

Step 1: PostgreSQL과 pgAdmin 설치하기

1) 다운로드

PostgreSQL 공식 웹사이트에 가세요: https://www.postgresql.org/download/

자신의 운영체제(Windows, Mac, Linux)를 선택하세요

Windows라면 "Download the installer"를 클릭하세요

2) 설치 과정

다운로드한 파일을 실행하세요

설치 중 중요한 부분들:

- Port: 기본값 5432 그대로 두세요

- Password: 관리자(postgres) 비밀번호를 설정하세요 (잊어버리면 안 돼요! 메모해두세요)

- pgAdmin 4: 체크박스가 선택되어 있는지 확인하세요 (함께 설치됩니다)

Step 2: pgAdmin 실행하기

1) pgAdmin 4를 실행하세요

시작 메뉴에서 "pgAdmin 4" 검색 후 실행

처음 실행하면 마스터 비밀번호를 설정하라고 나올 수 있어요 (설정하세요)

2) PostgreSQL 서버에 연결

왼쪽에 "Servers"가 보일 거예요

"PostgreSQL 15" (또는 설치한 버전) 클릭

설치할 때 만든 비밀번호를 입력하세요

Step 3: bookstore_assignment 데이터베이스 만들기

방법 1: 마우스로 만들기 (쉬운 방법)

왼쪽 트리에서 "Databases"에 오른쪽 클릭

"Create" → "Database..." 선택

"Database" 필드에 bookstore_assignment 입력

"Save" 클릭

방법 2: SQL로 만들기

상단 메뉴에서 도구 아이콘 찾기 (⚡ 번개 모양 또는 Tools → Query Tool)

다음 SQL 명령어 입력:

- CREATE DATABASE bookstore_assignment;

실행 버튼 클릭 (▶ 재생 버튼 모양)

확인하기

왼쪽 트리의 "Databases"를 펼쳐보면 bookstore_assignment가 생성된 게 보일 거예요!


Part 2: Database Implementation

- Appropriate data types (INTEGER, VARCHAR, DECIMAL, DATE)

- Primary keys and foreign keys

- Realistic sample data ( minimum 5-10 records per table)

Task 1: Create Tables

Design and create these tables with appropriate data

types (INTEGER, VARCHAR, DECIMAL, DATE) and primary

keys

1.books (book_id, title, author, isbn, price, stock_quantity)

2.customers (customer_id, first_name, last_name, email, phone)

3.orders (order_id, customer_id, order_date, total_amount)

4.order_items (order_id, book_id, quantity, price)

Task 2: Insert Sample Data

Insert realistic data:

1.At least 5 books (include textbooks and fiction)

2.At least 3 customers (include student profiles)

3.At least 2 orders with multiple items each

Task 3: Operational Queries

Write SQL queries that a bookstore clerk would use daily:

1.Show all books currently in stock

2.Find a customer by last name

3.Calculate total sales for the current month

4.Update stock when a book is sold

5.List all orders for a specific customer

Task 1: 테이블 만들기

테이블이 뭔가요?

- 엑셀의 시트처럼 데이터를 저장하는 표예요. 각 테이블은 특정 정보를 담아요.

pgAdmin에서 SQL 실행 준비

- 왼쪽에서 bookstore_assignment 데이터베이스 클릭

- 상단 메뉴에서 Query Tool 클릭 (⚡ 번개 모양)

- 아래 SQL 코드들을 복사해서 붙여넣고 실행하세요

1) books 테이블 만들기

CREATE TABLE books (

book_id INTEGER PRIMARY KEY,

title VARCHAR(200) NOT NULL,

author VARCHAR(100) NOT NULL,

isbn VARCHAR(20) UNIQUE,

price DECIMAL(10, 2) NOT NULL,

stock_quantity INTEGER NOT NULL

);

설명:

- book_id: 책 고유 번호 (PRIMARY KEY = 중복 불가, 이 테이블의 주인공)

- VARCHAR(200): 최대 200자까지 문자 저장

- DECIMAL(10, 2): 소수점 2자리까지 숫자 (예: 15000.99)

- NOT NULL: 빈값 안 됨

- UNIQUE: 중복 안 됨 (ISBN은 책마다 고유하니까)

2) customers 테이블 만들기

CREATE TABLE customers (

customer_id INTEGER PRIMARY KEY,

first_name VARCHAR(50) NOT NULL,

last_name VARCHAR(50) NOT NULL,

email VARCHAR(100) UNIQUE NOT NULL,

phone VARCHAR(20)

);

3) orders 테이블 만들기

CREATE TABLE orders (

order_id INTEGER PRIMARY KEY,

customer_id INTEGER NOT NULL,

order_date DATE NOT NULL,

total_amount DECIMAL(10, 2) NOT NULL,

FOREIGN KEY (customer_id) REFERENCES customers(customer_id)

);

설명:

- FOREIGN KEY: 다른 테이블과의 연결고리

- customer_id는 customers 테이블의 customer_id를 참조해요

- 즉, 주문은 반드시 실제 존재하는 고객만 할 수 있어요

4) order_items 테이블 만들기

CREATE TABLE order_items (

order_item_id INTEGER PRIMARY KEY,

order_id INTEGER NOT NULL,

book_id INTEGER NOT NULL,

quantity INTEGER NOT NULL,

price DECIMAL(10, 2) NOT NULL,

FOREIGN KEY (order_id) REFERENCES orders(order_id),

FOREIGN KEY (book_id) REFERENCES books(book_id)

);

팁: 4개 테이블을 한 번에 다 복사해서 실행해도 돼요!

Task 2: 샘플 데이터 넣기

1) 책 5권 추가하기

INSERT INTO books (book_id, title, author, isbn, price, stock_quantity) VALUES

(1, 'Database Systems', 'Ramez Elmasri', '978-0133970777', 45000.00, 15),

(2, 'Harry Potter and the Sorcerer Stone', 'J.K. Rowling', '978-0590353427', 18000.00, 25),

(3, 'Introduction to Algorithms', 'Thomas Cormen', '978-0262033848', 55000.00, 8),

(4, 'The Great Gatsby', 'F. Scott Fitzgerald', '978-0743273565', 12000.00, 30),

(5, 'Clean Code', 'Robert Martin', '978-0132350884', 38000.00, 12);

2) 고객 3명 추가하기

INSERT INTO customers (customer_id, first_name, last_name, email, phone) VALUES

(1, '민수', 'Kim', 'minsu.kim@email.com', '010-1234-5678'),

(2, '지은', 'Lee', 'jieun.lee@email.com', '010-2345-6789'),

(3, '현우', 'Park', 'hyunwoo.park@email.com', '010-3456-7890');

3) 주문 2개 추가하기

INSERT INTO orders (order_id, customer_id, order_date, total_amount) VALUES

(1, 1, '2025-10-15', 63000.00),

(2, 2, '2025-10-20', 106000.00);

4) 주문 상세 항목 추가하기

INSERT INTO order_items (order_item_id, order_id, book_id, quantity, price) VALUES

(1, 1, 1, 1, 45000.00), -- 민수가 Database Systems 1권

(2, 1, 2, 1, 18000.00), -- 민수가 Harry Potter 1권

(3, 2, 3, 1, 55000.00), -- 지은이 Algorithms 1권

(4, 2, 4, 2, 12000.00), -- 지은이 Great Gatsby 2권

(5, 2, 5, 1, 38000.00); -- 지은이 Clean Code 1권

*-- 이후는 주석(메모)이에요. 실행되지 않아요.

Task 3: 실무 쿼리 작성

1) 재고가 있는 모든 책 보기

- SELECT * FROM books WHERE stock_quantity > 0;

2) 성(last name)으로 고객 찾기

- SELECT * FROM customers WHERE last_name = 'Kim';

3) 이번 달 총 매출 계산

SELECT SUM(total_amount) AS monthly_sales

FROM orders

WHERE EXTRACT(MONTH FROM order_date) = EXTRACT(MONTH FROM CURRENT_DATE)

AND EXTRACT(YEAR FROM order_date) = EXTRACT(YEAR FROM CURRENT_DATE);

4) 책 판매 시 재고 업데이트

-- 예: book_id 1번 책을 2권 팔았을 때

UPDATE books

SET stock_quantity = stock_quantity - 2

WHERE book_id = 1;

5) 특정 고객의 모든 주문 보기

SELECT o.order_id, o.order_date, o.total_amount

FROM orders o

WHERE o.customer_id = 1;

실행 방법 정리

1) Query Tool에 SQL 코드 붙여넣기

2) 실행 버튼(▶) 클릭

3) 성공하면 하단에 "Query returned successfully" 메시지 나와요

4) 데이터 확인하려면: SELECT * FROM books; 같은 쿼리 실행


제출할 내용 정리

Part 1: 데이터베이스 연결 스크린샷

무엇을 캡처하나요?

pgAdmin에서 bookstore_assignment 데이터베이스가 성공적으로 만들어진 화면이요.

캡처 방법:

pgAdmin 왼쪽 트리에서 Databases 펼치기

bookstore_assignment가 보이는 화면 캡처

또는: bookstore_assignment를 클릭했을 때 연결된 화면 캡처

예시로 보여줄 내용:

왼쪽에 서버 트리 구조

bookstore_assignment 데이터베이스 이름이 명확히 보임

Part 2 & 3: SQL 코드

무엇을 적나요?

앞서 제가 알려드린 모든 SQL 코드들을 텍스트로 적으면 돼요.

구성:

Part 2 - Task 1: 테이블 생성 코드

CREATE TABLE books (...);

CREATE TABLE customers (...);

CREATE TABLE orders (...);

CREATE TABLE order_items (...);

Part 2 - Task 2: 데이터 삽입 코드

INSERT INTO books VALUES (...);

INSERT INTO customers VALUES (...);

INSERT INTO orders VALUES (...);

INSERT INTO order_items VALUES (...);

Part 2 - Task 3: 쿼리 코드

-- 1. 재고가 있는 책

SELECT * FROM books WHERE stock_quantity > 0;

-- 2. 성으로 고객 찾기

SELECT * FROM customers WHERE last_name = 'Kim';

-- ... (나머지 쿼리들)

Part 3: 쿼리 실행 결과 스크린샷

무엇을 캡처하나요?

Task 3의 5개 쿼리를 각각 실행한 결과 테이블 화면이요.

캡처 방법:

Query Tool에서 쿼리 1개 실행

하단에 나오는 결과 테이블 캡처

5개 쿼리 모두 반복

예시:

쿼리 1 실행 → 책 목록 테이블 보임 → 캡처

쿼리 2 실행 → 고객 정보 보임 → 캡처

쿼리 3 실행 → 총 매출 금액 보임 → 캡처

쿼리 4 실행 → "UPDATE 1" 성공 메시지 → 캡처

쿼리 5 실행 → 주문 목록 보임 → 캡처

팁: 각 스크린샷 위에 "Query 1:", "Query 2:" 같은 제목 달아주면 좋아요!

PDF 만드는 방법

방법 1: 워드/한글 사용

워드나 한글 문서 열기

다음 순서로 작성:

Part 1 제목 → 스크린샷 붙이기

Part 2 제목 → SQL 코드 복사해서 붙이기

Part 3 제목 → 각 쿼리 코드 + 결과 스크린샷

PDF로 저장 (파일 → 다른 이름으로 저장 → PDF)

방법 2: 구글 문서

구글 문서 만들기

내용 작성 및 이미지 삽입

파일 → 다운로드 → PDF

체크리스트

제출 전에 확인하세요:

✅ Part 1: 데이터베이스 연결 스크린샷 1개

✅ Part 2: CREATE TABLE 코드 4개

✅ Part 2: INSERT 코드 (책, 고객, 주문, 주문상세)

✅ Part 3: 5개 쿼리 코드

✅ Part 3: 5개 쿼리 실행 결과 스크린샷

✅ 모든 내용이 하나의 PDF 파일

정리하면: SQL 코드를 텍스트로 쓰고, 실행 결과는 스크린샷으로 캡처하면 돼요!

'Master 준비해보기' 카테고리의 다른 글

Overleaf Intro  (0) 2025.10.23
Data Science 수업 영어 단어  (0) 2025.10.18
석사 준비 - 나에 대해 정리하기  (3) 2025.01.05