食品订购系统的数据库设计(MYSQL)

时间:2015-09-03 03:05:33

标签: mysql database-design

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

客户
Customer_id(PK)
CUSTOMER_NAME
Customer_phonenum
Payment_method(现金/信用卡)
Payment_status(付费/未付)
EMAIL_ADDRESS
Employee_id(FK)
OrderF_id(FK)
OrderD_id(FK)

员工
Employee_id(PK)
Employee_name
Employee_position
Employee_age
Employee_phonenum
密码

食品
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

OrderDrinks
OrderD_id(PK)
Employee_id(FK)
Drink_id(FK)
Quantity_item
Total_Price

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

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

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

2 个答案:

答案 0 :(得分:3)

1) Fisrt,从customer表和购买字段中删除外键。然后创建一个类似于此

的订单表
Orders
    id
    CustomerId (FK)
    EmployeeId (FK)
    PurchaseMethod
    PurchaseStatus
    TimeStamp
    TotalPrice

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

FoodOrders
    id
    OrderId (FK)
    FoodId (FK)
    Quantity
    TotalPrice

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

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

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

3) 取决于使用的数据库,SQL服务器具有CHECK约束,您可以使用Len()来限制最小大小

答案 1 :(得分:1)

  
      
  1. 我应该如何制作,以便顾客可以在订单食品和订单饮料表中订购不同数量的不同类型的食物?
  2.   

制作PK复合字段,使这些订单表中的每条记录都变得唯一。然后,您可以为同一客户/客户ID添加多个食品和饮料记录。但是您当前的架构不完整。例如,OrderDrinks中没有customer_ID。

  
      
  1. 我应该分别在orderfood和orderdrink中重复food_price和drink_price吗?
  2.   

没有

  
      
  1. 对于员工密码,我应该如何限制6-15个字符之间的长度?
  2.   

通过使用SQL Server系统的相应身份验证机制。您没有提到您正在使用的SQL。如果你想自己管理,你应该知道陷阱。任何好的SQL书都可以为你提供一个好的大纲。