基于Oracle的mini外卖的数据库设计

在这里插入图片描述

1 项目数据库设计

1.1 引言

        随着高新科技计算机科学技术和移动互联网技术的飞速发展与应用,移动终端的普及,网络技术的完善,人们的生活方式发生了重要的变革,“互联网+饮食”也成为了当今社会的一种主流生活方式之一,由此外卖行业得到井喷式的发展,这与市场需求也是密不可分的,如今的餐饮行业大部分都使用线上,线下共同经营模式,为我们的生活带来了更多的不同的体验。

1.11 项目背景

        外卖等订餐服务是互联网技术应用的一种商业模式的创新,以技术与市场需求进行驱动,使得传统餐饮行业的经营模式发生了巨大的变化。

1.12 定义

Oracle数据库
备份方案
容灾方案

1.13 参考资料

[1]Oracle 12C 数据库基础教程/赵卫东,刘永红
[2]https://github.com/zwdcdu/oracle

1.2 项目概述

        本项目是基于Oracle的小型外卖系统的数据库设计,包括三大部门(后厨部,服务部,配送部)及其与客户之间的联系,后厨部主要是主厨与厨师助理等角色,服务部主要是店长与前台等角色,配送部主要是数名外卖配送员角色,以及菜单的信息都将在数据库设计中进行完成。

1.3 实施计划

1.3.1任务分解

  • 实体图的设计
  • 数据库表的设计
  • 用户管理
  • PL/SQL设计

1.3.2开发平台

Oracle数据库,Linux操作系统,VMware虚拟机,Visio设计工具

2 表设计

2.1 实体图

  • 配送部
    在这里插入图片描述
  • 菜品信息
    在这里插入图片描述

2.2 表的设计

  • 在weiwei用户下先测试即将要创建的表,若有就删除该表。
declare
      num   number;
begin
      select count(1) into num from user_tables where TABLE_NAME = 'ORDER_DETAILS';
      if   num=1   then
          execute immediate 'drop table ORDER_DETAILS cascade constraints PURGE';
      end   if;

      select count(1) into num from user_tables where TABLE_NAME = 'ORDERS';
      if   num=1   then
          execute immediate 'drop table ORDERS cascade constraints PURGE';
      end   if;
end;

        在用户weiwei权限下对即将创建的表进行查询验证,如果在user_tables里面找到了即将插入’ORDER_DETAILS’表和’ORDERS’表,那就对其彻底删除,PURGE是清空回收站的意思。
在这里插入图片描述

  • 在用户wewei下创建’ORDERS’表,并创建了7个以时间为条件的分区。
CREATE TABLE ORDERS
(
  ORDER_ID NUMBER(10, 0) NOT NULL
, CUSTOMER_NAME VARCHAR2(40 BYTE) NOT NULL
, CUSTOMER_TEL VARCHAR2(40 BYTE) NOT NULL
, ORDER_DATE DATE NOT NULL
, EMPLOYEE_ID NUMBER(6, 0) NOT NULL
, DISCOUNT NUMBER(8, 2) DEFAULT 0
, TRADE_RECEIVABLE NUMBER(8, 2) DEFAULT 0
, CONSTRAINT ORDERS_PK PRIMARY KEY
  (
    ORDER_ID
  )
  USING INDEX
  (
      CREATE UNIQUE INDEX ORDERS_PK ON ORDERS (ORDER_ID ASC)
      LOGGING
      TABLESPACE USERS
      PCTFREE 10
      INITRANS 2
      STORAGE
      (
        BUFFER_POOL DEFAULT
      )
      NOPARALLEL
  )
  ENABLE
)
TABLESPACE USERS
PCTFREE 10
INITRANS 1
STORAGE
(
  BUFFER_POOL DEFAULT
)
NOCOMPRESS
NOPARALLEL
PARTITION BY RANGE (ORDER_DATE)
(
  PARTITION PARTITION_2015 VALUES LESS THAN (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    INITIAL 8388608
    NEXT 1048576
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2016 VALUES LESS THAN (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2017 VALUES LESS THAN (TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2018 VALUES LESS THAN (TO_DATE(' 2019-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS02
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2019 VALUES LESS THAN (TO_DATE(' 2020-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS02
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2020 VALUES LESS THAN (TO_DATE(' 2021-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS02
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
, PARTITION PARTITION_2021 VALUES LESS THAN (TO_DATE(' 2022-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  NOLOGGING
  TABLESPACE USERS03
  PCTFREE 10
  INITRANS 1
  STORAGE
  (
    BUFFER_POOL DEFAULT
  )
  NOCOMPRESS NO INMEMORY
);

        在weiwei用户权限下创建了ORDERS表,将ORDER_ID作为主键,起名为ORDERS_PK,使用索引(USING INDEX),表空间为USERS,就是将表段放到USERS中,块保留10%的空间留给更新该块数据使用(PCTFREE 10),初始化事务槽的个数(INITRANS 1),还设置了存储参数(STORAGE)BUFFER_POOL默认缓冲池,作用是将buffer_pool设置表的数据块读到内存中,对应放在哪个池中,不压缩表数据(NOCOMPRESS ),不指定对表进行DML操作时的并行度(NOPARALLEL)。
        以订单时间限制2016-01-01 00:00:00、2017-01-01 00:00:00、2018-01-01 00:00:00、2019-01-01 00:00:00、2020-01-01 00:00:00、2021-01-01 00:00:00、2022-01-01 00:00:00分别设置了7个分区:PARTITION_2015、PARTITION_2016、PARTITION_2017、PARTITION_2018、PARTITION_2019、PARTITION_2020、PARTITION_2021,其中PARTITION_2015、PARTITION_2016、PARTITION_2017使用的表空间为USERS;PARTITION_2018、PARTITION_2019、PARTITION_2020使用的表空间为USERS02;PARTITION_2021使用的表空间为USERS03。
在这里插入图片描述

  • 创建order_details表,表段放在表空间USERS中,分区依赖外键order_id。
CREATE TABLE order_details
(
id NUMBER(10, 0) NOT NULL
, order_id NUMBER(10, 0) NOT NULL
, product_name VARCHAR2(40 BYTE) NOT NULL
, product_num NUMBER(8, 2) NOT NULL
, product_price NUMBER(8, 2) NOT NULL
, CONSTRAINT order_details_fk1 FOREIGN KEY  (order_id)
REFERENCES orders  (  order_id   )
ENABLE
)
TABLESPACE USERS
PCTFREE 10 INITRANS 1
STORAGE (BUFFER_POOL DEFAULT )
NOCOMPRESS NOPARALLEL
PARTITION BY REFERENCE (order_details_fk1);

        创建了order_details表,以order_id为外键(起名为order_details_fk1),依赖于orders表的order_id,分区依赖于外键
在这里插入图片描述

  • 在perfectism用户下创建DEPARTMENTS、EMPLOYEES表。
----创建DEPARTMENTS表
CREATE TABLE DEPARTMENTS
(
  DEPARTMENT_ID NUMBER(6, 0) NOT NULL
, DEPARTMENT_NAME VARCHAR2(40 BYTE) NOT NULL
, CONSTRAINT DEPARTMENTS_PK PRIMARY KEY
  (
    DEPARTMENT_ID
  )
  USING INDEX
  (
      CREATE UNIQUE INDEX DEPARTMENTS_PK ON DEPARTMENTS (DEPARTMENT_ID ASC)
      NOLOGGING
      TABLESPACE USERS
      PCTFREE 10
      INITRANS 2
      STORAGE
      (
        INITIAL 65536
        NEXT 1048576
        MINEXTENTS 1
        MAXEXTENTS UNLIMITED
        BUFFER_POOL DEFAULT
      )
      NOPARALLEL
  )
  ENABLE
)
NOLOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 1
STORAGE
(
  INITIAL 65536
  NEXT 1048576
  MINEXTENTS 1
  MAXEXTENTS UNLIMITED
  BUFFER_POOL DEFAULT
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当前,餐饮业还面临着越来越激烈的市场竞争、要想在竞争中取胜,必须采用先进的管理方法和手段。实现先进的计算机网络化管理,能更方便快捷的满足顾客的就餐需要,使管理更合理、更先进;减少人力、物力资源的浪费,降低成本;提高工作效率,提高管理效率;提高经济效益,从而提高餐厅的整体竞争力。 系统为顾客提供了各种美食的详细信息,可以方便顾客对美食进行选购,顾客还可对自己的个人信息进行修改,可以查看过往订过的美食的信息;为餐厅提供了一个虚拟的店面,方便餐厅管理人员了解顾客的需求,进而改变下一阶段的销售策略,还可以进行美食管理,订单管理,会员信息管理,其中,超级管理员还可以对管理员的信息进行管理。 本系统开发使用B/S结构,严格的按照软件工程的思想贯穿系统设计,利用Java语言,以Oracle作为系统数据库,实现网上订餐系统的开发。这些先进的开发思想和技术手段有力地保证了此系统可以安全地、高效地为餐厅的运营和顾客的就餐进行服务。 本文介绍了经过用户需求分析后,对订餐系统的基本设计、系统设计、详细设计的开发研制过程。本文所设计的功能满足餐厅的实际需求,使餐厅在订餐方面更加科学化,减少了人物力资源的不合理消耗,最后实现了提高工作效率的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值