博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网上外卖及订餐系统的数据库设计
阅读量:6844 次
发布时间:2019-06-26

本文共 14383 字,大约阅读时间需要 47 分钟。

hot3.png

背景:互联网越来越发达,宅男越来越宅,网上订餐送叫外卖的越来越多.

注:本文仅做后台数据库设计,不做系统功能设计.

一、数据库需求分析

1、用户分为游客、注册用户和管理员用户,只有登录用户才能进行网上订餐,游客仅能浏览餐厅及菜肴信息,只有管理员身份才能进行后台管理

2、一个餐厅设计一张菜单;一张订单对应一个送餐员,可以包含多个菜肴;一个客服管理员可以管理多张订单

3、每个菜肴从属于一个菜系,一个菜单,一个餐厅

4、一个用户可以选择多个菜肴,产生多个订单

5、一张菜单每次对应一个优惠活动

二、数据表属性

地区:城市编码、城市名、区县编码、区县名、乡镇编码、乡镇名、街道编码、街道名

用户:用户标识、用户名、联系电话、性别、年龄、身份证、地址、登陆账号、登录密码、QQ、用户状态、注册时间、销户时间

订单:订单编号、订单状态、下单时间、退单时间、预计送达时间、送餐地址

菜单:菜肴编号、菜肴名称、菜肴原价、菜肴介绍、菜系分类、菜肴图片

优惠活动:优惠活动编号、优惠活动名称、优惠活动描述、开始时间、结束时间、活动状态、优惠类型、优惠折扣、优惠后价格

餐厅:餐厅编号、餐厅名称、订餐电话、送餐范围、送餐收费标准、餐厅地址、餐厅负责人、支持的支付方式、餐厅描述

送餐员:送餐员编号、送餐员姓名、联系电话、入职时间、离职时间、在职状态、工资、家庭住址

管理员:管理员编号、管理员名称、联系电话、管理员账号、管理员密码、管理权限

三、实体间联系

地区--用户

用户--订单

订单--菜单

订单--送餐员

菜单--优惠活动

菜单--餐厅

餐厅--送餐员

餐厅--管理员

四、概念数据模型设计(Conceptual Data Model)

173253_lers_144859.jpg

五、逻辑数据模型设计(Logical Data Model)

173253_EZgT_144859.jpg

六、物理数据模型设计(Physical Data Model)

173254_AN2E_144859.jpg

六、创建表SQL(数据库环境:PostgreSQL)

/*==============================================================*//* Table: deliver                                               *//*==============================================================*/create table deliver (   deliver_id           NUMERIC(8)           not null,   restaurant_id        NUMERIC(8)           null,   deliver_name         VARCHAR(32)          null,   deliver_tel          VARCHAR(16)          null,   employ_date          DATE                 null,   fire_date            DATE                 null,   deliver_status       VARCHAR(8)           null,   salary               NUMERIC(8,2)         null,   home_addr            VARCHAR(256)         null,   constraint PK_DELIVER primary key (deliver_id));comment on table deliver is'送餐员信息表';/*==============================================================*//* Index: deliver_PK                                            *//*==============================================================*/create unique index deliver_PK on deliver (deliver_id);/*==============================================================*//* Index: "餐厅-送餐员_FK"                                           *//*==============================================================*/create  index "餐厅-送餐员_FK" on deliver (restaurant_id);/*==============================================================*//* Table: discount                                              *//*==============================================================*/create table discount (   discount_id          NUMERIC(8)           not null,   discount_name        VARCHAR(32)          null,   discount_desc        VARCHAR(256)         null,   start_time           DATE                 null,   end_time             DATE                 null,   discount_status      VARCHAR(8)           null,   discount_type        VARCHAR(32)          null,   discount_percent     NUMERIC(4)           null,   discount_price       NUMERIC(8,2)         null,   constraint PK_DISCOUNT primary key (discount_id));comment on table discount is'优惠信息表';/*==============================================================*//* Index: discount_PK                                           *//*==============================================================*/create unique index discount_PK on discount (discount_id);/*==============================================================*//* Table: manager                                               *//*==============================================================*/create table manager (   mgr_id               NUMERIC(8)           not null,   restaurant_id        NUMERIC(8)           null,   mgr_name             VARCHAR(16)          null,   mgr_tel              VARCHAR(16)          null,   mgr_loginname        VARCHAR(32)          null,   mgr_password         VARCHAR(32)          null,   privilege            VARCHAR(8)           null,   constraint PK_MANAGER primary key (mgr_id));comment on table manager is'管理员信息表';/*==============================================================*//* Index: manager_PK                                            *//*==============================================================*/create unique index manager_PK on manager (mgr_id);/*==============================================================*//* Index: "餐厅-管理员_FK"                                           *//*==============================================================*/create  index "餐厅-管理员_FK" on manager (restaurant_id);/*==============================================================*//* Table: medu                                                  *//*==============================================================*/create table medu (   dish_id              NUMERIC(8)           not null,   restaurant_id        NUMERIC(8)           null,   discount_id          NUMERIC(8)           null,   dish_name            VARCHAR(16)          null,   original_price       NUMERIC(8,2)         null,   dish_desc            VARCHAR(256)         null,   dish_class           VARCHAR(16)          null,   dish_picture         CHAR(16)             null,   constraint PK_MEDU primary key (dish_id));comment on table medu is'菜单信息表';/*==============================================================*//* Index: medu_PK                                               *//*==============================================================*/create unique index medu_PK on medu (dish_id);/*==============================================================*//* Index: 设计_FK                                                 *//*==============================================================*/create  index 设计_FK on medu (restaurant_id);/*==============================================================*//* Index: "优惠活动-菜单_FK"                                          *//*==============================================================*/create  index "优惠活动-菜单_FK" on medu (discount_id);/*==============================================================*//* Table: "order"                                               *//*==============================================================*/create table "order" (   order_id             NUMERIC(32)          not null,   dish_id              NUMERIC(8)           null,   deliver_id           NUMERIC(8)           null,   user_id              NUMERIC(16)          null,   order_status         VARCHAR(8)           null,   create_date          DATE                 null,   end_date             DATE                 null,   expect_date          DATE                 null,   send_addr            VARCHAR(256)         null,   constraint PK_ORDER primary key (order_id));comment on table "order" is'订单信息表';/*==============================================================*//* Index: order_PK                                              *//*==============================================================*/create unique index order_PK on "order" (order_id);/*==============================================================*//* Index: "用户-订单_FK"                                            *//*==============================================================*/create  index "用户-订单_FK" on "order" (user_id);/*==============================================================*//* Index: "订单-菜单_FK"                                            *//*==============================================================*/create  index "订单-菜单_FK" on "order" (dish_id);/*==============================================================*//* Index: "订单-送餐员_FK"                                           *//*==============================================================*/create  index "订单-送餐员_FK" on "order" (deliver_id);/*==============================================================*//* Table: region                                                *//*==============================================================*/create table region (   city_id              NUMERIC(8)           null,   city_name            VARCHAR(32)          null,   area_id              NUMERIC(8)           not null,   area_name            VARCHAR(32)          null,   town_id              NUMERIC(8)           null,   town_name            VARCHAR(32)          null,   street_id            NUMERIC(16)          null,   street_name          VARCHAR(256)         null,   constraint PK_REGION primary key (area_id));comment on table region is'地区信息表';/*==============================================================*//* Index: region_PK                                             *//*==============================================================*/create unique index region_PK on region (area_id);/*==============================================================*//* Table: restaurant                                            *//*==============================================================*/create table restaurant (   restaurant_id        NUMERIC(8)           not null,   dish_id              NUMERIC(8)           null,   restaurant_name      VARCHAR(32)          null,   contect_tel          VARCHAR(16)          null,   range                VARCHAR(256)         null,   fee_standard         VARCHAR(32)          null,   restaurant_addr      VARCHAR(256)         null,   owner_name           VARCHAR(16)          null,   support_paytype      VARCHAR(32)          null,   restaurant_desc      VARCHAR(256)         null,   constraint PK_RESTAURANT primary key (restaurant_id));comment on table restaurant is'餐厅信息表';/*==============================================================*//* Index: restaurant_PK                                         *//*==============================================================*/create unique index restaurant_PK on restaurant (restaurant_id);/*==============================================================*//* Index: 属于_FK                                                 *//*==============================================================*/create  index 属于_FK on restaurant (dish_id);/*==============================================================*//* Table: selection                                             *//*==============================================================*/create table selection (   user_id              NUMERIC(16)          not null,   dish_id              NUMERIC(8)           not null,   cnt_dish             NUMERIC(4)           null,   pay_type             VARCHAR(16)          null,   remark               VARCHAR(256)         null,   constraint PK_SELECTION primary key (user_id, dish_id));comment on table selection is'选菜';/*==============================================================*//* Index: selection_PK                                          *//*==============================================================*/create unique index selection_PK on selection (user_id,dish_id);/*==============================================================*//* Index: selection_FK                                          *//*==============================================================*/create  index selection_FK on selection (user_id);/*==============================================================*//* Index: selection2_FK                                         *//*==============================================================*/create  index selection2_FK on selection (dish_id);/*==============================================================*//* Table: "user"                                                *//*==============================================================*/create table "user" (   user_id              NUMERIC(16)          not null,   area_id              NUMERIC(8)           null,   user_name            VARCHAR(32)          null,   msisdn               NUMERIC(16)          null,   gender               VARCHAR(4)           null,   age                  VARCHAR(4)           null,   ic_no                VARCHAR(32)          null,   address              VARCHAR(256)         null,   login_name           VARCHAR(32)          null,   password             VARCHAR(32)          null,   qq                   VARCHAR(16)          null,   user_status          NUMERIC(4)           null,   reg_date             DATE                 null,   terminate_date       DATE                 null,   constraint PK_USER primary key (user_id));comment on table "user" is'用户信息表';/*==============================================================*//* Index: user_PK                                               *//*==============================================================*/create unique index user_PK on "user" (user_id);/*==============================================================*//* Index: "地区-用户_FK"                                            *//*==============================================================*/create  index "地区-用户_FK" on "user" (area_id);alter table deliver   add constraint "FK_DELIVER_餐厅-送餐员_RESTAURA" foreign key (restaurant_id)      references restaurant (restaurant_id)      on delete restrict on update restrict;alter table manager   add constraint "FK_MANAGER_餐厅-管理员_RESTAURA" foreign key (restaurant_id)      references restaurant (restaurant_id)      on delete restrict on update restrict;alter table medu   add constraint "FK_MEDU_优惠活动-菜单_DISCOUNT" foreign key (discount_id)      references discount (discount_id)      on delete restrict on update restrict;alter table medu   add constraint FK_MEDU_设计_RESTAURA foreign key (restaurant_id)      references restaurant (restaurant_id)      on delete restrict on update restrict;alter table "order"   add constraint "FK_ORDER_用户-订单_USER" foreign key (user_id)      references "user" (user_id)      on delete restrict on update restrict;alter table "order"   add constraint "FK_ORDER_订单-菜单_MEDU" foreign key (dish_id)      references medu (dish_id)      on delete restrict on update restrict;alter table "order"   add constraint "FK_ORDER_订单-送餐员_DELIVER" foreign key (deliver_id)      references deliver (deliver_id)      on delete restrict on update restrict;alter table restaurant   add constraint FK_RESTAURA_属于_MEDU foreign key (dish_id)      references medu (dish_id)      on delete restrict on update restrict;alter table selection   add constraint FK_SELECTIO_SELECTION_USER foreign key (user_id)      references "user" (user_id)      on delete restrict on update restrict;alter table selection   add constraint FK_SELECTIO_SELECTION_MEDU foreign key (dish_id)      references medu (dish_id)      on delete restrict on update restrict;alter table "user"   add constraint "FK_USER_地区-用户_REGION" foreign key (area_id)      references region (area_id)      on delete restrict on update restrict;

转载于:https://my.oschina.net/mysweet/blog/336303

你可能感兴趣的文章
东莞市政府常务会议审议通过《东莞市大数据发展实施方案》
查看>>
AI 对冲基金创造新货币,要将华尔街“开源”
查看>>
中国不允许信息数据随意离境,或影响跨国公司
查看>>
如何消除视频监控出现的干扰?
查看>>
东芝发布OCZ TL100系列入门级SATA SSD新品:接棒TR150
查看>>
解决IT流程自动化的Brocade Workflow Composer长什么样?
查看>>
苹果还要与雅虎搜索合作?梅耶尔已经确认
查看>>
爱立信携Trukcell进行5G测试 实现24.7Gbps下载速度
查看>>
运营商拥抱OpenStack背后:距运营级仍有差距
查看>>
云翌通信联合方位、鼎信在杭州、北京的产品交流会圆满结束
查看>>
模块化数据中心的多种形式
查看>>
存储器:芯片国产化之路的第一站
查看>>
智能家居何以成CES必争之地?
查看>>
爱立信前CEO卫翰思加入Verizon 负责网络和技术部门
查看>>
计算机:政府大数据加速落地
查看>>
AT&T:ONAP将在短期内发布代码
查看>>
嘿,微软:Windows Store到底有多少应用了?
查看>>
系统宕机:设备和应用不再是大问题,人为错误是关键
查看>>
来看看Win32资源监视器在Fluent Design设计语言下的样子
查看>>
网络攻击事件频发 黑客成当前最热门的技术工作
查看>>