반응형
데이터모델링 연습
데이터모델링 연습.pdf
0.81MB
호텔 데이터베이스 여러 개의 지점을 가진 호텔을 데이터베이스로 구축하려고 한다.
다음 내용을 모두 포함하는 데이터베이스를 설계하시오. 필요한 경우 몇 가지 가정을 넣을 수 있다.| 1. 각 호텔 지점은 이름, 주소, 도시, 각 타입 방의 가격, 각 타입 방의 수 등의 정보가 있다 2. 고객은 이름, 주소, 전화번호 정보가 있다. 고객은 하루 혹은 며칠 동안 호텔을 예약할 수 있다. 예약 시 투숙객의 수, 예약일, 출발일, 도착일을 저장한다. 3. 투숙 후 실제 투숙의 도착일, 출발일, 선급금, 지불방법을 저장한다. |
(1) 아래 양식에 엔티티와 속성을 작성하세요.
| 엔티티명 | 속성 |
| 호텔 | 호텔명, 주소, 도시 |
| 객실 | 객실번호, 객실 호수, 객실 가격, 방의 개수, 수용 인원 |
| 고객 | 고객id, 이름, 주소, 전화번호 |
| 예약 | 예약번호, 투숙인원, 예약일, 출발일, 도착일 |
| 투숙 | 투숙번호, 출발일, 도착일, 선급금, 지불방법 |
(2) 주식별자를 정의하세요.
PK: 호텔명, 객실번호, 고객id, 예약번호
(3) 관계/외래식별자를 정의하세요.
- 호텔과 객실 - 호텔명을 객실의 외래키로 사용
- 객실과 예약 - 객실번호를 예약의 외래키로 사용
- 고객과 예약 - 고객id를 예약의 외래키로 사용
- 예약과 투숙 - 예약번호를 투숙의 외래키로 사용
(4) ER 다이어그램을 그리는 것을 통해 개념적 모델링을 수행하시오.

(5) ER 다이어그램을 테이블로 변환하는 것을 통해 논리적 모델링을 수행하시오.
| 호텔(호텔명, 주소, 도시) 객실(객실번호, 객실호수, 수용인원, 방의 개수, 객실 가격, 호텔명(FK)) 고객(고객id, 이름, 전화번호, 주소) 예약(예약번호, 투숙인원, 예약일, 출발일, 도착일, 객실번호(FK), 고객id(FK)) 투숙(투숙번호, 선급금, 지불방법, 출발일, 도착일, 예약번호(FK)) |
| Hotel(h_name, h_address, h_city) Room(room_id, room_no, capacity, room_size, price, h_name(FK)) Customer(custid, cname, cphone, caddress) Reservation(rid, guests, rdate, departure, arrival, room_id(FK), custid(FK)) Stay(stayid, adpayment, method, departure, arrival, reservationid(FK)) |
(6) 테이블 기술서를 작성하는 것을 통해 물리적 모델링을 수행하세요.
| Name | Hotel | Table 기술서 |
작성일 | 23/11/14 | page 1/5 |
||||
| System | 호텔 관리 | 작성자 | 고영민 | ||||||
| Description | 호텔 정보를 가지고 있는 테이블 | ||||||||
| No | Column Name | Data Type | NN | KY | Default | Description | |||
| 1 | h_name | VARCHAR(30) | v | (PK) | 호텔 이름 | ||||
| 2 | h_address | VARCHAR(50) | v | 호텔 주소 | |||||
| 3 | h_city | VARCHAR(30) | v | 호텔 도시 | |||||
| 4 | |||||||||
| 5 | |||||||||
| 6 | |||||||||
| 비고 | |||||||||
| Name | Room | Table 기술서 |
작성일 | 23/11/14 | page 2/5 |
||||
| System | 호텔 관리 | 작성자 | 고영민 | ||||||
| Description | 객실 정보를 가지고 있는 테이블 | ||||||||
| No | Column Name | Data Type | NN | KY | Default | Description | |||
| 1 | room_id | INT | v | (PK) | 객실 번호 | ||||
| 2 | room_no | INT | v | 객실 호수 | |||||
| 3 | capacity | INT | v | 수용 인원 | |||||
| 4 | room_size | INT | v | 방의 개수 | |||||
| 5 | price | INT | v | 객실 가격 | |||||
| 6 | h_name | VARCHAR(30) | (FK) | 호텔명 | |||||
| 비고 | |||||||||
| Name | Customer | Table 기술서 |
작성일 | 23/11/14 | page 3/5 |
||||
| System | 호텔 관리 | 작성자 | 고영민 | ||||||
| Description | 고객 정보를 가지고 있는 테이블 | ||||||||
| No | Column Name | Data Type | NN | KY | Default | Description | |||
| 1 | custid | INT | v | (PK) | 고객 번호 | ||||
| 2 | cname | VARCHAR(30) | v | 고객 이름 | |||||
| 3 | cphone | VARCHAR(30) | v | 고객 전화번호 | |||||
| 4 | caddress | VARCHAR(50) | v | 고객 주소 | |||||
| 5 | |||||||||
| 6 | |||||||||
| 비고 | |||||||||
| Name | Reservation | Table 기술서 |
작성일 | 23/11/14 | page 4/5 |
||||
| System | 호텔 관리 | 작성자 | 고영민 | ||||||
| Description | 예약 정보를 가지고 있는 테이블 | ||||||||
| No | Column Name | Data Type | NN | KY | Default | Description | |||
| 1 | rid | INT | v | (PK) | 예약 번호 | ||||
| 2 | guests | INT | v | 투숙인원 | |||||
| 3 | rdate | DATE | v | 예약일 | |||||
| 4 | departure | DATE | v | 출발일 | |||||
| 5 | arrival | DATE | v | 도착일 | |||||
| 6 | room_id | INT | (FK) | 객실번호 | |||||
| 7 | custid | INT | (FK) | 고객번호 | |||||
| 비고 | |||||||||
| Name | Stay | Table 기술서 |
작성일 | 23/11/14 | page 5/5 |
||||
| System | 호텔 관리 | 작성자 | 고영민 | ||||||
| Description | 투숙 정보를 가지고 있는 테이블 | ||||||||
| No | Column Name | Data Type | NN | KY | Default | Description | |||
| 1 | stayid | INT | v | (PK) | 투숙 번호 | ||||
| 2 | adpayment | INT | v | 선급금 | |||||
| 3 | method | VARCHAR(30) | v | 지불방법 | |||||
| 4 | departure | DATE | v | 출발일 | |||||
| 5 | arrival | DATE | v | 도착일 | |||||
| 6 | rid | INT | (FK) | 예약 번호 | |||||
| 비고 | |||||||||
(7) 테이블을 생성하는 DDL 문을 작성하세요. (SQL문은 기본키, 외래키 등이 정의되도록 한다.)

(8) 생성된 테이블에 데이터를 세 개씩 삽입하는 DML 문을 작성하세요.


(9) SELECT 문을 작성해서 질의를 3개 이상 수행하세요.
- Q1. 방 가격이 15만원 이상인 방이 있는 호텔의 이름을 나타내자

- Q2. 이름이 Bao Poo인 고객의 예약 정보를 모두 나타내자

- Q3. 부산에 있는 호텔의 객실 정보를 모두 나타내자

'Database' 카테고리의 다른 글
| [SQLD, 2024년 개정 자격증 대비] 1_1. 데이터 모델링의 이해 (1) | 2024.03.06 |
|---|---|
| [DB] 도커를 이용하여 MySQL 설치하고 연결하기 (0) | 2023.11.15 |
| [Database] SELECT문 연습 (0) | 2023.10.07 |
| [SQL] SELECT - ORDER BY 정렬(+ 인기있는 아이스크림) (2) | 2023.10.05 |
| [Database] 관계대수 (0) | 2023.09.19 |