使用java web做的外卖系统的数据库设计

一登录表:用于用户登录

     字段有:

1.login_id:是主键

2.login_acc

3.login_pwd

4.user_type;用户类别

 

二账户表:普通用户的个人信息

     一个普通用户对应一个账号,一个账号也对应一个普通用户

     用户的字段有

  1. user_id:和login_id共享主键
  2. user_name:记录用户名
  3. user_money:记录用户余额
  4. user_content:用户简介
  5. user_head:用户头像

三店家表:记录店家信息

一个店家对应一个账号,一个账号也对应一个店家

一个店家有一个主营菜,一个推荐菜,一个热门菜

字段有

  1. shop_id:和Login_id共享主键
  2. shop_name:店铺名
  3. shop_pos:店铺地址
  4. lng:店铺经度
  5. lat:店铺纬度
  6. shop_conntent:店铺简介
  7. 店铺一星期那些天营业
  8. 店铺开始营业时间
  9. 店铺结束营业时间
  10. 是否关联合法店家
  11. 主营菜id
  12. 推荐菜id
  13. 热门菜id (这个不能记录,动态查询出来的)

 

其它备注:

店铺需要关联一个合法的注册店家

暂时不实现注册店家的相关部分的功能

 

 

四用户送餐地址表

         一个用户对应多个送餐地址,一个用户只有一个默认送餐地址

         字段有

  1. user_address_id
  2. user_id,关联送餐人id,添加索引,快速查询
  3. user_address_name,送餐人姓名
  4. user_address_phone,送餐人电话
  5. user_address_pos, 送餐地址
  6. user_address_lng, 送餐人经度 类型是decimal(8,5) 经纬度是一个浮点型,也可以设为字符串(长度浪费)
  7. user_address_lat, 送餐人纬度
  8. user_address_isdef,是否是默认地址,默认地址约束,一个用户只有一个,默认地址不能直接删除防止误操作。

 

五用户关注店铺表

         一个用户有多个关注店铺,一个店铺可以被多个用户关注.这是一个记录多对多关系的表,多对多关系至少有两种,单向的,只考虑关注,不考虑被关注。双向的,依赖关系,被依赖关系,那个订单依赖表就是。并且订单依赖表特殊之处还在于双方都是一个表

         字段有

  1. user_interest_id:主键
  2. user_id:关联用户的id,添加索引,快速查询
  3. shop_id:记录店铺信息,添加外键,在店铺删除的时候这个也删除,并且还能防止随意设置无意义值

 

六店铺菜品表

         一个店铺有多个菜品

         字段有

  1. shop_food_id:主键
  2. shop_food_name:菜品名
  3. shop_food_price:菜品价格
  4. shop_food_num:菜品库存
  5. shop_id:关联店铺编号,添加索引
  6. shop_food_content菜品简介

 

 

七店铺操作表(合并到餐厅表)

         一个店铺对应一个操作信息

         限制一个店铺一天的添加,更新,删除的次数

         字段有:

         shop_id

shop_add

shop_update

shop_del

last_date

八店铺登录历史表

登录历史

         login_his_id

         login_his_uid

         login_his_isNew

         login_his_pos

         login_his_key

         login_his_time

九用户购物车表(直接关联用户,菜品)(合并到用户表里面)

一个用户一个购物车,一个购物车可以添加多个店铺的菜品

         user_id(一个用户一个购物车,共享主键)

         user_car_price(总价格)

         user_car_num(商品数量)

         user_car_discount(优惠价格),优惠价格目前就是直接优惠的金额,不考虑其它情况

 

十用户购物车详情表

         购物车就是看看菜品信息,以及方便分类

这里直接把店铺的信息也弄上来, 方便分类

         user_car_detatil_id:购物车详情id

         user_id:用户id

         shop_food_id:店铺菜品id,设置外键,区别历史记录,动态变化。并不是菜品放到购物车,价格等信息就一定了,

         num:菜品数量

         shop_id:店铺id,方便分类

shop_car_detail_info:一个购物详情有一个购物附件

       

十一用户订单表(历史记录)

         一个用户订单对应一个用户,一个外卖员

         order_id:主键

         order_statue:订单状态:只查询不操作

                  前面已经说了,订单状态不可能通过电脑改变,用户不可能一边拿外卖一边用电脑修改订单状态,此系统也不允许用户取消订单,更改送餐地址等操作。

         user_name:点餐人姓名

         user_address_name:送餐人姓名

         user_address_phone:送餐人电话

         user_address_pos:送餐地址

         userorder_name:外卖员姓名

         userorder_phone:外卖员电话

order_time:订单时间

没有外键,用户看不到(如果有用户,)

user_id:方便用户查看,关联用户,添加索引

userorder_id:方便外卖员查看,关联外卖员,添加索引

 

 

十二餐厅订单记录表(历史记录)

         一个订单有多条餐厅订单

         order_shop_id:主键

         order_id:订单id

         order_shop_num:订单编号:

订单编号的作用是可以通过订单编号查询订单信息,还有一点就是这个编号生成都有一定规则,规则一般关联订单生成时间,生产批次,相关注册店铺,商品类别,还有可能关联国家。这里就只是记录,不考虑生成。

         order_shop_name:店铺名

         order_shop_discount:优惠价格

         order_shop_price:总价

         shop_id:方便店家查看

        

 

十三餐厅订单记录详情表(历史记录)

         一个餐厅订单对应多条订单记录

         order_shop_id:记录id

         order_shop_detail_id:主键

         order_shop_detail_fidname:菜品名

         order_shop_detail_price:单价

         order_shop_detail_num:数量

         shop_car_detail_info:附件

 

 

十四菜品附件表(店家可以给菜品添加信息,方便用户点菜)

         一个菜品有多个菜品附件

         shop_food_enclosure_id:主键

         shop_food_id:关联菜品,同时添加外键

         food_code_id: 添加外键

         shop_food_enclosure_value: 值(这个就不需要了,因为一个food_code_id既有key又有value)

十五系统菜品附件表

         记录名和值的系统表类似java中的map。

         这个表也不考虑维护了,就是直接用

         food_code_id

         food_code_name:姓名 例如辣

         food_code_value:值 例如不添加 (理论上一个name可对应多个value,但是一个id只对应一个value)

十六菜品信息表(记录菜品的月销量,) 可以放到菜品表里面,这里只是显示一下

         shop_food_info_id:主键

         shop_food_id:外键

         shop_food_info_num:销量

十七菜品评论表(历史记录表)

         同样不维护了,只用

         shop_food_report_id:主键

         shop_food_username:评论人姓名

         shop_food_content:评论内容

         shop_food_id:关联菜品,可查询

 

十八外卖员表

         只读,不操作

         userorder_id:和login_id共享主键

         userorder_name:真实姓名

         userorder_iden:身份证

         userorder_phone:电话

         userorder_lng:当前经度

         userorder_lat:当前纬度

         userorder_statue:是否忙碌

 

 

总结:

1.当关联另一个表的字段时候,可以选择添加外键,这样可以方便我们操作。我们就不用手动删除,更新了。

2.先有关联关系,然后是外键关系,也有时候不需要添加外键,比如用户订单表,用户可查,外卖员也可查,添加外键不太合适

3.历史记录和动态记录,历史记录是冗余的信息,说明了不能改变,动态记录是动态变化的,不能添加历史记录。案例就是订单表和用户购物车详情表。

 

问题:

  1.有些功能没有做,例如评论,都比较复杂

  2.浏览器也并不能把所有操作都做了,比如订单状态改变,

 

posted @   liu/564  阅读(460)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示