2026. 6. 1. 12:31ㆍ2🥐 제과점 프로그램


정보처리산업기사 실기에서는 화면을 만들기 전에 가장 먼저 데이터베이스를 설계해야 합니다.
왜냐하면 화면에서 출력하는 모든 정보는 결국 데이터베이스에서 가져오기 때문입니다.
예를 들어 이번 문제를 보면 다음과 같은 화면이 존재합니다.
- 판매등록
- 제과현황
- 판매현황
- 매출현황
즉,
제과점 정보
제과 정보
판매 정보
를 저장할 공간이 필요합니다.
그래서 이번 문제에서는 총 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건
이 출력되면 성공입니다.
'2🥐 제과점 프로그램' 카테고리의 다른 글
| 🥐6. reg.jsp 작성하기 (0) | 2026.06.01 |
|---|---|
| 🥐5. main.jsp 작성하기 (0) | 2026.06.01 |
| 🥐4. style.css 작성하기 (0) | 2026.06.01 |
| 🥐3. index.jsp 작성하기 (0) | 2026.06.01 |
| 🥐1. 제과점 프로그램 요구사항 분석 (0) | 2026.06.01 |