🥐2. DB 생성 흐름

2026. 6. 1. 12:312🥐 제과점 프로그램

정보처리산업기사 실기에서는 화면을 만들기 전에 가장 먼저 데이터베이스를 설계해야 합니다.

왜냐하면 화면에서 출력하는 모든 정보는 결국 데이터베이스에서 가져오기 때문입니다.

예를 들어 이번 문제를 보면 다음과 같은 화면이 존재합니다.

  • 판매등록
  • 제과현황
  • 판매현황
  • 매출현황

즉,

제과점 정보
제과 정보
판매 정보
 

를 저장할 공간이 필요합니다.

그래서 이번 문제에서는 총 3개의 테이블을 생성하게 됩니다.


📌 1. 어떤 테이블이 필요한지 먼저 확인하기

문제를 보면 다음과 같은 테이블 명세서가 제공됩니다.

제과점 테이블

tbl_bakery
 

제과 테이블

tbl_bread
 

판매정보 테이블

tbl_sale
 

여기서 중요한 것은

제과점 → 빵 판매
 

구조라는 점입니다.

즉 판매정보는

어느 제과점이
어떤 빵을
몇 개 판매했는지
 

저장하는 역할을 하게 됩니다.


📌 2. 제과점 테이블은 왜 필요한가?

문제에는 제과현황 화면이 있습니다.

제과현황 화면을 보면

제과점 코드
제과점 이름
지역
비고
 

정보가 출력됩니다.

즉 이 데이터를 저장할 공간이 필요합니다.

그래서 생성하는 테이블이

 
tbl_bakery
 

입니다.


제과점 테이블 명세서 해석하기

 

컬럼 의미
pk_bakery 제과점 코드
name 제과점 이름
address 지역
etc 비고

예를 들어

A0001
정심당
대전
정성을 다한 마음으로 빵을 만드는 빵집
 

같은 정보를 저장하게 됩니다.


CREATE TABLE 문법

 
CREATE TABLE 테이블명(
    컬럼명1 데이터형 제약조건,
    컬럼명2 데이터형 제약조건,
    컬럼명3 데이터형 제약조건,
    ...
);
 
테이블명 생성할 테이블 이름
컬럼명 테이블에 저장할 데이터 항목
데이터형 NUMBER, VARCHAR2, DATE 등
제약조건 PRIMARY KEY, NOT NULL, FOREIGN KEY 등

CREATE TABLE 작성하기

 
CREATE TABLE tbl_bakery(
    pk_bakery VARCHAR2(5) PRIMARY KEY,
    name VARCHAR2(20) NOT NULL,
    address VARCHAR2(255),
    etc VARCHAR2(255)
);
 

 


왜 VARCHAR2를 사용할까?

제과점 코드를 보면

A0001
A0002
A0003
 

처럼 문자와 숫자가 섞여 있습니다.

따라서

 
NUMBER
 

가 아니라

 
VARCHAR2
 

를 사용해야 합니다.


PRIMARY KEY는 왜 사용하는가?

제과점 코드는

A0001
A0002
A0003
 

처럼 중복되면 안 됩니다.

그래서

 
PRIMARY KEY
 

로 지정합니다.


📌 3. 제과 테이블은 왜 필요한가?

판매현황 화면에는

대보름빵
자라빵
코끼리빵
 

같은 빵 이름이 출력됩니다.

즉 빵 정보를 저장하는 공간도 필요합니다.

그래서

 
tbl_bread
 

테이블을 생성합니다.


제과 테이블 명세서 해석하기

컬럼 의미
pk_bread 제과 코드
name 제과 이름
price 제과 가격

예시)

B0001 대보름빵 1000
B0002 자라빵 1500
B0003 코끼리빵 2000
 

CREATE TABLE 작성하기

 
CREATE TABLE tbl_bread(
    pk_bread VARCHAR2(5) PRIMARY KEY,
    name VARCHAR2(20) NOT NULL,
    price NUMBER(10) NOT NULL
);
 

가격은 왜 NUMBER를 사용할까?

가격은

1000
1500
2000
 

처럼 숫자입니다.

그래서

 
NUMBER
 

를 사용하는 것이 더 적절합니다.


📌 4. 판매정보 테이블은 왜 필요한가?

이번 문제의 핵심 테이블입니다.

판매정보 화면을 보면

판매코드
판매일
판매수량
제과명
 

이 출력됩니다.

언제
어떤 빵을
몇 개 판매했는지
 

기록해야 합니다.


판매정보 테이블 명세서 해석하기


컬럼 의미
pk_sale 판매코드
deal_date 판매일
deal_count 판매수량
fk_bakery 제과점 코드
fk_bread 제과 코드

FOREIGN KEY 포함 CREATE TABLE 문법

CREATE TABLE 테이블명(
    컬럼명1 데이터형 제약조건,
    컬럼명2 데이터형 제약조건,
    컬럼명3 데이터형 제약조건,

    CONSTRAINT 제약조건명
    FOREIGN KEY(컬럼명)
    REFERENCES 부모테이블(기본키)
);
 
CONSTRAINT 제약조건 이름 지정
FOREIGN KEY 외래키 설정
REFERENCES 참조할 부모 테이블 지정
부모테이블(기본키) 연결할 기본키(PK)

CREATE TABLE 작성하기

 
CREATE TABLE tbl_sale(
    pk_sale VARCHAR2(5) PRIMARY KEY,
    deal_date DATE NOT NULL,
    deal_count NUMBER(10) NOT NULL,
    fk_bakery VARCHAR2(5) NOT NULL,
    fk_bread VARCHAR2(5) NOT NULL,

    CONSTRAINT fk_sale_bakery
        FOREIGN KEY(fk_bakery)
        REFERENCES tbl_bakery(pk_bakery),

    CONSTRAINT fk_sale_bread
        FOREIGN KEY(fk_bread)
        REFERENCES tbl_bread(pk_bread)
);

 

 

📌 5. FOREIGN KEY는 왜 사용하는가?

판매정보에는

A0001
B0001
 

같은 코드가 저장됩니다.

그런데

A9999
 

같은 존재하지 않는 제과점 코드가 들어가면 문제가 발생합니다.

그래서

 
FOREIGN KEY
 

를 사용합니다.

판매정보는 반드시 존재하는 제과점과
존재하는 빵만 선택 가능
 

하도록 만드는 것입니다.


📌

📌 6. 제공 데이터 입력하기

테이블을 만들었다고 끝이 아닙니다.

정보처리산업기사 실기에서는 반드시 문제에서 제공하는 데이터를 입력해야 합니다.

데이터를 입력할 때 사용하는 SQL 문법은

 
INSERT INTO 테이블명
VALUES(값1, 값2, 값3, ...);
 

입니다.

INSERT 문법 해석

 
INSERT INTO tbl_bakery
VALUES ('A0001', '정심당', '대전', '정성을 다한 마음으로 빵을 만드는 빵집');
 
항목설명
INSERT INTO 데이터 입력
tbl_bakery 데이터를 넣을 테이블
VALUES 실제 저장할 값
'A0001' 제과점 코드
'정심당' 제과점 이름
'대전' 지역
'정성을 다한 마음으로 빵을 만드는 빵집' 비고

즉,

tbl_bakery 테이블에
제과점 1건을 추가한다.
 

는 의미입니다.


제과점 데이터 입력

 
INSERT INTO tbl_bakery VALUES ('A0001', '정심당', '대전', '정성을 다한 마음으로 빵을 만드는 빵집');
INSERT INTO tbl_bakery VALUES ('A0002', '셋쥬루', '천안', '전설의 레전드 원조 빵집');
INSERT INTO tbl_bakery VALUES ('A0003', '오송빵집', '대구', '고구마 맛을 극한으로 올린 빵집');
INSERT INTO tbl_bakery VALUES ('A0004', '코끼리제과', '안동', '코끼리 없는 코끼리 빵집');
 

제과 데이터 입력

 
INSERT INTO tbl_bread VALUES ('B0001', '대보름빵', '1000');
INSERT INTO tbl_bread VALUES ('B0002', '자라빵', '1500');
INSERT INTO tbl_bread VALUES ('B0003', '코끼리빵', '2000');
INSERT INTO tbl_bread VALUES ('B0004', '찹쌀도너츠', '2500');
INSERT INTO tbl_bread VALUES ('B0005', '고구마빵', '3000');
INSERT INTO tbl_bread VALUES ('B0006', '치즈빵', '3500');
INSERT INTO tbl_bread VALUES ('B0007', '햄빵', '4000');
 

판매정보 데이터 입력

 
INSERT INTO tbl_sale VALUES ('00001', '2025-04-01', 10, 'A0001', 'B0001');
INSERT INTO tbl_sale VALUES ('00002', '2025-04-02', 15, 'A0001', 'B0004');
INSERT INTO tbl_sale VALUES ('00003', '2025-04-03', 10, 'A0001', 'B0005');
INSERT INTO tbl_sale VALUES ('00004', '2025-04-04', 15, 'A0001', 'B0003');
INSERT INTO tbl_sale VALUES ('00005', '2025-04-05', 10, 'A0002', 'B0002');
INSERT INTO tbl_sale VALUES ('00006', '2025-04-06', 15, 'A0002', 'B0004');
INSERT INTO tbl_sale VALUES ('00007', '2025-04-07', 10, 'A0002', 'B0003');
INSERT INTO tbl_sale VALUES ('00008', '2025-04-08', 15, 'A0002', 'B0004');
INSERT INTO tbl_sale VALUES ('00009', '2025-04-09', 10, 'A0003', 'B0002');
INSERT INTO tbl_sale VALUES ('00010', '2025-04-10', 15, 'A0003', 'B0004');
INSERT INTO tbl_sale VALUES ('00011', '2025-04-11', 10, 'A0003', 'B0002');
INSERT INTO tbl_sale VALUES ('00012', '2025-04-12', 15, 'A0004', 'B0001');
INSERT INTO tbl_sale VALUES ('00013', '2025-04-13', 10, 'A0004', 'B0002');
INSERT INTO tbl_sale VALUES ('00014', '2025-04-14', 15, 'A0004', 'B0003');
INSERT INTO tbl_sale VALUES ('00015', '2025-04-15', 10, 'A0004', 'B0005');
 

📌 7. COMMIT 하기

Oracle에서는 데이터를 입력한 후 저장해야 합니다.

이때 사용하는 SQL 문법은

 
COMMIT;
 

입니다.

COMMIT을 실행해야 입력한 데이터가 실제 데이터베이스에 반영됩니다.


📌 8. 데이터가 잘 들어갔는지 확인하기

데이터 입력이 끝났다면 반드시 확인합니다.

확인할 때 사용하는 SQL 문법은

 
SELECT * FROM 테이블명;
 

입니다.

SELECT 문법 해석

 
SELECT * FROM tbl_bakery;
 
항목설명
SELECT 조회
* 모든 컬럼
FROM 조회할 테이블
tbl_bakery 제과점 테이블

즉,

tbl_bakery 테이블의
모든 데이터를 조회한다.
 

는 의미입니다.

데이터 확인

 
SELECT * FROM tbl_bakery;
SELECT * FROM tbl_bread;
SELECT * FROM tbl_sale;
 

확인 결과

제과점 4건
제과 7건
판매정보 15건
 

이 출력되면 성공입니다.