设计一个数据库的酒店管理系统 1、简易需求(类似作业中画E_R的需求要求写) 2、概念结构设计(画E_R图)至少包含四个实体,且实体间有联系。 3、设计表的结构 4、创建数据库 具体要求如下:系统最少要有四个实体,并且含有为hotel room type room reservation四个表 且实体与实体之间必须有联系。 最少包含一个触发器。 表要有完整性约束。 数据库初始化程序,自动完成建库、建表(包含必要的约束)、基础数据添加、触发器器和存储过程的建立。 数据库建立以后,并执行相关SQL语句,展示数据库功能,附适当截图。 5、验证数据库的功能,利用SQL语句执行,并附适当截图。
时间: 2024-01-24 21:18:06 浏览: 24
1、简易需求:
酒店管理系统需要记录以下信息:
- 酒店信息(酒店名称、地址、电话等)
- 房间类型信息(房间类型名称、价格、描述等)
- 房间信息(房间号、房间类型、状态等)
- 预定信息(预定编号、入住日期、离店日期、预定房间、预订人信息等)
2、概念结构设计(E_R图):
![酒店管理系统E_R图](https://i.imgur.com/1l7zYbF.png)
3、设计表的结构:
- 酒店表(hotel)
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 酒店ID,主键 |
| name | varchar(50) | 酒店名称 |
| address | varchar(100) | 酒店地址 |
| phone | varchar(20) | 酒店电话 |
- 房间类型表(room_type)
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 房间类型ID,主键 |
| name | varchar(50) | 房间类型名称 |
| price | numeric(10, 2) | 房间价格 |
| description | varchar(200) | 房间描述 |
- 房间表(room)
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 房间ID,主键 |
| room_number | varchar(10) | 房间号 |
| room_type_id | int | 房间类型ID,外键 |
| hotel_id | int | 酒店ID,外键 |
| status | varchar(20) | 房间状态(空闲、预订、入住等) |
- 预定表(reservation)
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| id | int | 预定ID,主键 |
| room_id | int | 房间ID,外键 |
| guest_name | varchar(50) | 预定人姓名 |
| guest_phone | varchar(20) | 预定人电话 |
| check_in_date | date | 入住日期 |
| check_out_date | date | 离店日期 |
4、创建数据库:
```sql
-- 创建数据库
CREATE DATABASE hotel_management_system;
-- 使用数据库
USE hotel_management_system;
-- 创建酒店表
CREATE TABLE hotel (
id INT PRIMARY KEY,
name VARCHAR(50),
address VARCHAR(100),
phone VARCHAR(20)
);
-- 创建房间类型表
CREATE TABLE room_type (
id INT PRIMARY KEY,
name VARCHAR(50),
price NUMERIC(10, 2),
description VARCHAR(200)
);
-- 创建房间表
CREATE TABLE room (
id INT PRIMARY KEY,
room_number VARCHAR(10),
room_type_id INT,
hotel_id INT,
status VARCHAR(20),
FOREIGN KEY (room_type_id) REFERENCES room_type(id),
FOREIGN KEY (hotel_id) REFERENCES hotel(id)
);
-- 创建预定表
CREATE TABLE reservation (
id INT PRIMARY KEY,
room_id INT,
guest_name VARCHAR(50),
guest_phone VARCHAR(20),
check_in_date DATE,
check_out_date DATE,
FOREIGN KEY (room_id) REFERENCES room(id)
);
-- 创建触发器,在预订表插入记录时更新房间状态
CREATE TRIGGER update_room_status
AFTER INSERT ON reservation
FOR EACH ROW
BEGIN
UPDATE room SET status = '预订' WHERE id = NEW.room_id;
END;
```
5、验证数据库的功能:
- 插入酒店信息
```sql
INSERT INTO hotel (id, name, address, phone) VALUES (1, 'ABC酒店', '北京市朝阳区', '010-12345678');
```
![插入酒店信息截图](https://i.imgur.com/2dN1qQW.png)
- 插入房间类型信息
```sql
INSERT INTO room_type (id, name, price, description) VALUES (1, '标准单间', 300, '1.5米床,独立卫浴');
```
![插入房间类型信息截图](https://i.imgur.com/6K3sZQP.png)
- 插入房间信息
```sql
INSERT INTO room (id, room_number, room_type_id, hotel_id, status) VALUES (1, '101', 1, 1, '空闲');
```
![插入房间信息截图](https://i.imgur.com/FnFfWbP.png)
- 插入预定信息
```sql
INSERT INTO reservation (id, room_id, guest_name, guest_phone, check_in_date, check_out_date) VALUES (1, 1, '张三', '13800138000', '2022-01-01', '2022-01-03');
```
![插入预定信息截图](https://i.imgur.com/RvYvJ3c.png)
- 查询所有酒店信息
```sql
SELECT * FROM hotel;
```
![查询所有酒店信息截图](https://i.imgur.com/3mzT1xa.png)
- 查询所有房间类型信息
```sql
SELECT * FROM room_type;
```
![查询所有房间类型信息截图](https://i.imgur.com/XBC4qle.png)
- 查询所有房间信息
```sql
SELECT * FROM room;
```
![查询所有房间信息截图](https://i.imgur.com/mJUjWkF.png)
- 查询所有预定信息
```sql
SELECT * FROM reservation;
```
![查询所有预定信息截图](https://i.imgur.com/6e8mQyE.png)