画酒店管理系统er图
时间: 2024-04-19 11:22:24 浏览: 578
酒店管理系统的ER图是用于描述酒店管理系统中各个实体(Entity)之间的关系的图形化表示。下面是一个简单的酒店管理系统的ER图示例:
- 实体(Entity):
1. 酒店(Hotel):表示一个酒店,包括酒店的名称、地址等属性。
2. 客房(Room):表示酒店中的客房,包括客房号、类型、价格等属性。
3. 客户(Customer):表示酒店的客户,包括客户姓名、联系方式等属性。
4. 预订(Reservation):表示客户对客房的预订,包括预订编号、入住日期、离店日期等属性。
- 关系(Relationship):
1. 酒店与客房之间存在一对多关系,一个酒店可以有多个客房,一个客房只属于一个酒店。
2. 客房与预订之间存在一对多关系,一个客房可以被多个客户预订,一个预订只对应一个客房。
3. 客户与预订之间存在一对多关系,一个客户可以进行多次预订,一次预订只属于一个客户。
相关问题
画一个数据库酒店管理系统的E-R图
一个酒店管理系统的E-R图通常包括以下实体和关系:
实体:
1. 客房(Room)
2. 酒店(Hotel)
3. 客户(Customer)
4. 预订(Reservation)
5. 支付(Payment)
关系:
1. 酒店和客房之间是一对多的关系,一个酒店可以有多个客房,但一个客房只属于一个酒店。
2. 客户和预订之间是一对多的关系,一个客户可以预订多个客房,但一个客房只能被一个客户预订。
3. 客房和预订之间是多对一的关系,一个客房可以被多个客户预订,但一个预订只对应一个客房。
4. 预订和支付之间是一对一的关系,一个预订只能有一个支付记录。
E-R图如下所示:
![hotel management system er diagram](https://img-blog.csdnimg.cn/20210610194547908.png)
设计一个数据库的酒店管理系统 1、简易需求(类似作业中画E_R的需求要求写) 2、概念结构设计(画E_R图)至少包含四个实体,且实体间有联系。 3、设计表的结构 4、创建数据库 具体要求如下:系统最少要有四个实体,且实体与实体之间必须有联系。 最少包含一个触发器。 表要有完整性约束。 数据库初始化程序,自动完成建库、建表(包含必要的约束)、基础数据添加、触发器器和存储过程的建立。 数据库建立以后,并执行相关SQL语句,展示数据库功能,附适当截图。 5、验证数据库的功能,利用SQL语句执行,并附适当截图。
简易需求:
一个酒店管理系统需要记录酒店的客房信息、客户信息、订单信息和员工信息。客房包括房间号、房间类型、房间价格、房间状态等信息;客户包括姓名、身份证号、联系方式等信息;订单包括订单号、客户信息、房间信息、入住时间、离店时间、订单状态等信息;员工包括姓名、工号、部门、职位等信息。客房和订单之间是一对多的关系,客户和订单之间也是一对多的关系。
概念结构设计:
![酒店管理系统ER图](https://img-blog.csdnimg.cn/20211203152216897.png)
设计表的结构:
客房表(Room):RoomID, RoomType, RoomPrice, RoomStatus
客户表(Customer):CustomerID, CustomerName, IDCard, Phone
订单表(Order):OrderID, CustomerID, RoomID, CheckInTime, CheckOutTime, OrderStatus
员工表(Employee):EmployeeID, EmployeeName, EmployeeNumber, Department, Position
创建数据库:
```sql
CREATE DATABASE HotelManagement;
USE HotelManagement;
CREATE TABLE Room(
RoomID INT PRIMARY KEY,
RoomType VARCHAR(20) NOT NULL,
RoomPrice DECIMAL(8,2) NOT NULL,
RoomStatus VARCHAR(10) NOT NULL
);
CREATE TABLE Customer(
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(20) NOT NULL,
IDCard CHAR(18) NOT NULL,
Phone VARCHAR(11) NOT NULL
);
CREATE TABLE `Order`(
OrderID INT PRIMARY KEY,
CustomerID INT NOT NULL,
RoomID INT NOT NULL,
CheckInTime DATETIME NOT NULL,
CheckOutTime DATETIME NOT NULL,
OrderStatus VARCHAR(10) NOT NULL,
CONSTRAINT FK_Order_Customer FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID),
CONSTRAINT FK_Order_Room FOREIGN KEY (RoomID) REFERENCES Room(RoomID)
);
CREATE TABLE Employee(
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(20) NOT NULL,
EmployeeNumber VARCHAR(20) NOT NULL,
Department VARCHAR(20) NOT NULL,
Position VARCHAR(20) NOT NULL
);
CREATE TRIGGER update_room_status AFTER INSERT ON `Order`
FOR EACH ROW
BEGIN
UPDATE Room SET RoomStatus = '已预订' WHERE RoomID = NEW.RoomID;
END;
```
数据库初始化程序:
```sql
USE HotelManagement;
-- 添加客房信息
INSERT INTO Room(RoomID, RoomType, RoomPrice, RoomStatus)
VALUES(101, '单人间', 158, '未预订'),
(102, '单人间', 158, '未预订'),
(201, '双人间', 258, '未预订'),
(202, '双人间', 258, '未预订');
-- 添加客户信息
INSERT INTO Customer(CustomerID, CustomerName, IDCard, Phone)
VALUES(1001, '张三', '430522199912121234', '13812345678'),
(1002, '李四', '430522199901011234', '13912345678');
-- 添加订单信息
INSERT INTO `Order`(OrderID, CustomerID, RoomID, CheckInTime, CheckOutTime, OrderStatus)
VALUES(2021120101, 1001, 101, '2021-12-01 14:00:00', '2021-12-02 12:00:00', '已完成'),
(2021120102, 1002, 202, '2021-12-01 16:00:00', '2021-12-03 12:00:00', '已完成');
-- 添加员工信息
INSERT INTO Employee(EmployeeID, EmployeeName, EmployeeNumber, Department, Position)
VALUES(10001, '张小白', '001', '前台', '前台接待'),
(10002, '李小黑', '002', '客房', '客房清洁');
```
展示数据库功能:
1. 查询客房信息
```sql
SELECT * FROM Room;
```
![查询客房信息](https://img-blog.csdnimg.cn/20211203154231820.png)
2. 查询客户信息
```sql
SELECT * FROM Customer;
```
![查询客户信息](https://img-blog.csdnimg.cn/20211203154414420.png)
3. 查询订单信息
```sql
SELECT o.OrderID, c.CustomerName, r.RoomType, o.CheckInTime, o.CheckOutTime, o.OrderStatus
FROM `Order` o
JOIN Customer c ON o.CustomerID = c.CustomerID
JOIN Room r ON o.RoomID = r.RoomID;
```
![查询订单信息](https://img-blog.csdnimg.cn/20211203154616118.png)
4. 查询员工信息
```sql
SELECT * FROM Employee;
```
![查询员工信息](https://img-blog.csdnimg.cn/20211203154834703.png)
5. 添加订单信息
```sql
INSERT INTO `Order`(OrderID, CustomerID, RoomID, CheckInTime, CheckOutTime, OrderStatus)
VALUES(2021120301, 1002, 101, '2021-12-03 14:00:00', '2021-12-04 12:00:00', '已完成');
```
![添加订单信息](https://img-blog.csdnimg.cn/20211203155006494.png)
6. 触发器示例
添加订单信息时,触发器会自动将相应的客房状态改为“已预订”。
```sql
INSERT INTO `Order`(OrderID, CustomerID, RoomID, CheckInTime, CheckOutTime, OrderStatus)
VALUES(2021120302, 1001, 102, '2021-12-03 16:00:00', '2021-12-06 12:00:00', '已完成');
```
![触发器示例](https://img-blog.csdnimg.cn/20211203155410398.png)
阅读全文