반응형
데이터모델링 연습
호텔 데이터베이스 여러 개의 지점을 가진 호텔을 데이터베이스로 구축하려고 한다.
다음 내용을 모두 포함하는 데이터베이스를 설계하시오. 필요한 경우 몇 가지 가정을 넣을 수 있다.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 |