在开始设计饭店点餐系统的数据库之前,我们需要先进行系统需求分析,明确系统的功能和性能要求。本系统需要实现以下功能:
- 用户登录和注册功能,以便客人能够登录并查看自己的订单。
- 菜品浏览和搜索功能,以便客人能够查看餐厅提供的菜品并搜索特定菜品。
- 点餐功能,以便客人能够选择菜品并添加到购物车中。
- 结账功能,以便客人能够结算订单并支付费用。
- 订单查看功能,以便客人能够查看自己的历史订单。
根据以上需求,我们可以进行概念设计,定义实体和属性。在本系统中,主要实体包括用户、菜品、购物车和订单。以下是实体和属性的示例:
- 用户实体:用户ID、用户名、密码、姓名、电话号码、邮箱地址等。
- 菜品实体:菜品ID、菜品名称、价格、描述、图片等。
- 购物车实体:购物车ID、用户ID、菜品ID、数量、总价等。
- 订单实体:订单ID、用户ID、菜品ID、数量、总价、支付状态等。
接下来是逻辑设计,将概念设计转化为数据库表结构。根据上述实体和属性,我们可以创建以下表格:
- 用户表(user):存储用户信息,包括用户ID(主键)、用户名、密码、姓名、电话号码、邮箱地址等。
- 菜品表(dish):存储菜品信息,包括菜品ID(主键)、菜品名称、价格、描述、图片等。
- 购物车表(cart):存储购物车信息,包括购物车ID(主键)、用户ID(外键)、菜品ID(外键)、数量、总价等。
- 订单表(order):存储订单信息,包括订单ID(主键)、用户ID(外键)、菜品ID(外键)、数量、总价、支付状态等。
最后是物理设计,根据逻辑设计创建数据库表,并设置索引、约束和视图等。以下是创建表的SQL语句示例:
- 创建用户表:
CREATE TABLE user (
user_id INT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50),
name VARCHAR(50),
phone VARCHAR(20),
email VARCHAR(50)
); - 创建菜品表:
CREATE TABLE dish (
dish_id INT PRIMARY KEY,
dish_name VARCHAR(100),
price DECIMAL(10, 2),
description TEXT,
image VARCHAR(200)
); - 创建购物车表:
CREATE TABLE cart (
cart_id INT PRIMARY KEY,
user_id INT,
dish_id INT,
quantity INT,
total_price DECIMAL(10, 2),
FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (dish_id) REFERENCES dish(dish_id)
); - 创建订单表:
CREATE TABLE order (
order_id INT PRIMARY KEY,
user_id INT,
dish_id INT,
quantity INT,
total_price DECIMAL(10, 2),
payment_status VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (dish_id) REFERENCES dish(dish_id)
);