订餐系统数据库设计(MYSQL)

Dre*_*her 2 mysql database-design

我需要一些帮助来设计订餐系统的数据库。

客户
Customer_id (PK)
客户_姓名 客户
_电话号码
付款方式(现金/信用卡)
付款状态(已付款/未付款)
电子邮件地址
员工_id (外籍)
订单F_id (外籍)
订单D_id (外籍)

员工
Employee_id (PK)
员工姓名
员工职位
员工年龄
员工电话号码
密码

食物
Food_id (PK)
Food_name
Food_size
Food_price (描述每种食物的价格)

饮料
Drink_id (PK)
Drink_name
Drink_size
Drink_category(解释热/冷)
Drink_price(描述每种饮料的价格)

OrderFood
OrderF_id (PK)
Customer_id (FK)
Employee_id (FK)
Food_id (FK)
Quantity_item
Total_price

订单饮料
OrderD_id (PK)
Employee_id (FK)
Drink_id (FK)
Quantity_item
Total_Price

  1. 我应该如何使客户可以在 OrderFood 和 OrderDrinks 表中订购不同类型、不同数量的食物?

  2. 我应该分别重复 OrderFood 和 OrderDrinks 中的 Food_price 和 Drink_price 吗?

  3. 对于员工密码,如何将长度限制在6-15个字符之间?(我想过使用varchar,但它也允许1个字符作为员工的密码。)

The*_*oke 5

1) 首先,从客户表和购买字段中删除外键。然后创建一个与此类似的订单表

Orders
    id
    CustomerId (FK)
    EmployeeId (FK)
    PurchaseMethod
    PurchaseStatus
    TimeStamp
    TotalPrice
Run Code Online (Sandbox Code Playgroud)

然后,您将创建一个关联表,将您的订单链接到食品和饮料项目。使用此表,您可以根据需要将任意数量的食品链接到订单。

FoodOrders
    id
    OrderId (FK)
    FoodId (FK)
    Quantity
    TotalPrice
Run Code Online (Sandbox Code Playgroud)

为您的饮料订单创建一个类似的表。

下订单时必须计算总计列。

2) 仅在您的业务流程需要时才重复价格数据。最好的方法是如果可以避免的话不重复数据

3) 取决于所使用的数据库,SQL Server 有 CHECK 约束,您可以与 Len() 一起使用来限制最小大小