餐厅管理系统
...大约 6 分钟
餐厅管理系统
数据库设计:CDM&PDM设计
实体定义
<1>系统管理员信息表(sys_admin)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
管理员编号 | admin_num | varchar(10) | 是 | 否 | 管理员编号 |
管理员账号 | admin_account | varchar(10) | 否 | 否 | 管理员账号 |
姓名 | admin_name | varchar(10) | 否 | 否 | 姓名 |
密码 | admin_pwd | varchar(10) | 否 | 否 | 密码 |
登入时间 | login_time | datetime | 否 | 否 | 登入时间 |
登出时间 | loginout_time | datetime | 否 | 否 | 登出时间 |
<2>用户(客户)信息表(cust_user)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
用户编号 | user_num | varchar(10) | 是 | 否 | 用户编号 |
用户账号 | user_account | varchar(20) | 否 | 否 | 用户账号 |
姓名 | user_name | varchar(12) | 否 | 否 | 姓名 |
密码 | user_pwd | varchar(25) | 否 | 否 | 密码 |
<3>餐桌信息(table)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
餐桌号 | table_num | varchar(4) | 是 | 否 | 餐桌号 |
餐桌名 | table_name | varchar(15) | 否 | 否 | 餐桌名 |
餐桌当前状态 | table_status | varchar(8) | 否 | 否 | 餐桌当前状态 |
<4>菜谱信息(menu)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
编号 | menu_num | char(10) | 是 | 否 | 菜谱编号 |
名称 | menu_name | varchar(10) | 否 | 否 | 菜谱名 |
类别 | menu_type | varchar(10) | 否 | 否 | 菜谱类别 |
描述 | menu_descr | varchar(255) | 否 | 是 | 菜谱的描述 |
图片 | menu_pic | varchar(20) | 否 | 否 | 菜谱的样图 |
价格 | menu_price | decimal(8,2) | 否 | 否 | 菜谱价格 |
库存 | menu_stock | varchar(15) | 否 | 否 | 库存量 |
<5>职员信息表(staff)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
工号 | work_num | char(10) | 是 | 否 | 工号 |
员工专用账号 | menu_name | varchar(10) | 否 | 否 | 员工专用账号 |
姓名 | staff_name | varchar(10) | 否 | 否 | 姓名 |
性别 | staff_sex | char(2) | 否 | 是 | 性别 |
岗位 | staff_post | varchar(10) | 否 | 否 | 岗位 |
身份证号 | staff_id | char(18) | 否 | 否 | 身份证号 |
联系电话 | staff_phone | varchar(20) | 否 | 否 | 联系电话 |
文化程度 | staff_education | varchar(20) | 否 | 否 | 文化程度 |
<6>账单信息(bill)
账单信息关联的数据可以考虑通过外键进行关联,也可考虑直接作为静态数据存储
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
账单编号 | bill_num | char(10) | 是 | 否 | 账单流水号 |
餐桌信息 | relate_table | char(10) | 否 | 否 | 对应餐桌信息 |
点菜信息 | relate_menu_num | varchar(10) | 否 | 否 | 点菜信息 (此处需考虑是否要对菜谱信息进行拆分) |
客户信息 | relate_user | varchar(10) | 否 | 否 | 客户信息(对应客户编号) |
操作员 | operator | varchar(10) | 否 | 否 | 操作员(对应操作员工ID) |
账单生成时间 | create_time | datetime | 否 | 否 | 账单生成时间 |
关联表定义
(针对信息变更历史记录也可考虑将其归集到一个表通过状态加以区分,这边为了更加明确是哪种数据变更对历史数据表做了拆分,也便于作相应的数据调整和字段调整),此处介绍状态表概念进行归集
<1>数据表更历史记录(data_change_history)
字段名 | 字段值 | 数据类型 | 是否主键 | 可否为空 | 注释 |
---|---|---|---|---|---|
历史记录id | data_id | varchar(10) | 是 | 否 | 历史记录id |
数据变更类型 | change_type | varchar(10) | 否 | 否 | 设定状态标识对应的是哪种数据变更: 0-餐桌信息表更 1-菜谱信息变更 2-职员信息变更 3-用户(顾客)信息变更 4-....以此类推 |
对应变更数据记录ID | change_data | varchar(10) | 否 | 否 | 餐桌信息表更:对应餐桌号 菜谱信息变更:对应菜谱菜谱编号 职员信息变更:对应职员编号 用户(顾客)信息变更:对应用户编号 |
变更内容 | change_content | varchar(10) | 否 | 否 | 对应变更内容描述 |
变更者 | operator | varchar(10) | 否 | 否 | 操作者信息(对应操作者ID或账号) |
变更时间 | change_time | datetime | 否 | 否 | 数据变更时间 |
<2>扩展
餐桌信息表更历史记录(table_change_history)
菜谱信息变更历史记录(menu_change_history)
职员信息变更历史记录(staff_change_history)
用户(顾客)信息变更历史记录(cust_user_change_history)
以此类推进行扩展
系统逻辑结构设计
转换关系模型:暂不设定权限相关(权限可以考虑独立于基本系统功能之外的扩展向)
系统管理员:
用户:
餐桌:
菜谱:
职员:
数据变更记录:
PS:逻辑结构设计的内容,则可参考上述实体设计进行调整,实际上队管理员的分类就是对管理员账号权限的拆分,不需要拆表去存储,此处建议通过权限设定的方式去控制~
参考上述功能说明,勾勒CDM简图,参考如下:
PDM:
通过业务逻辑关联处理主外键的关系,此处没有通过pd直接生成数据库,而是手动在数据库创建相关的表,通过业务逻辑进行关联,参考sql语句如下
-- ----------------------------
-- Table structure for bill
-- ----------------------------
DROP TABLE "bill";
CREATE TABLE "bill" (
"bill_num" VARCHAR2(10 BYTE) NULL ,
"relate_table" VARCHAR2(10 BYTE) NULL ,
"relate_menu_num" NUMBER(10) NULL ,
"relate_user" VARCHAR2(10 BYTE) NULL ,
"operator" VARCHAR2(10 BYTE) NULL ,
"create_time" DATE NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "bill"."bill_num" IS '账单编号';
COMMENT ON COLUMN "bill"."relate_table" IS '餐桌信息';
COMMENT ON COLUMN "bill"."relate_menu_num" IS '点菜信息';
COMMENT ON COLUMN "bill"."relate_user" IS '客户信息';
COMMENT ON COLUMN "bill"."operator" IS '操作员';
COMMENT ON COLUMN "bill"."create_time" IS '账单生成时间';
-- ----------------------------
-- Records of bill
-- ----------------------------
-- ----------------------------
-- Table structure for cust_user
-- ----------------------------
DROP TABLE "cust_user";
CREATE TABLE "cust_user" (
"user_num" VARCHAR2(10 BYTE) NULL ,
"user_account" VARCHAR2(20 BYTE) NULL ,
"user_name" VARCHAR2(12 BYTE) NULL ,
"user_pwd" VARCHAR2(25 BYTE) NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "cust_user"."user_num" IS '用户编号';
COMMENT ON COLUMN "cust_user"."user_account" IS '用户账号';
COMMENT ON COLUMN "cust_user"."user_name" IS '姓名';
COMMENT ON COLUMN "cust_user"."user_pwd" IS '密码';
-- ----------------------------
-- Records of cust_user
-- ----------------------------
-- ----------------------------
-- Table structure for menu
-- ----------------------------
DROP TABLE "menu";
CREATE TABLE "menu" (
"menu_num" VARCHAR2(10 BYTE) NULL ,
"menu_name" VARCHAR2(10 BYTE) NULL ,
"menu_type" VARCHAR2(10 BYTE) NULL ,
"menu_descr" VARCHAR2(255 BYTE) NULL ,
"menu_pic" VARCHAR2(20 BYTE) NULL ,
"menu_price" NUMBER(8) NULL ,
"menu_stock" VARCHAR2(255 BYTE) NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "menu"."menu_num" IS '编号';
COMMENT ON COLUMN "menu"."menu_name" IS '名称';
COMMENT ON COLUMN "menu"."menu_type" IS '类别';
COMMENT ON COLUMN "menu"."menu_descr" IS '描述';
COMMENT ON COLUMN "menu"."menu_pic" IS '图片';
COMMENT ON COLUMN "menu"."menu_price" IS '价格';
COMMENT ON COLUMN "menu"."menu_stock" IS '库存';
-- ----------------------------
-- Records of menu
-- ----------------------------
-- ----------------------------
-- Table structure for staff
-- ----------------------------
DROP TABLE "staff";
CREATE TABLE "staff" (
"work_num" VARCHAR2(10 BYTE) NULL ,
"staff_account" VARCHAR2(10 BYTE) NULL ,
"staff_name" VARCHAR2(10 BYTE) NULL ,
"staff_sex" VARCHAR2(2 BYTE) NULL ,
"staff_post" VARCHAR2(10 BYTE) NULL ,
"staff_id" VARCHAR2(18 BYTE) NULL ,
"staff_phone" VARCHAR2(20 BYTE) NULL ,
"staff_education" VARCHAR2(20 BYTE) NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "staff"."work_num" IS '工号';
COMMENT ON COLUMN "staff"."staff_account" IS '员工专用账号';
COMMENT ON COLUMN "staff"."staff_name" IS '姓名';
COMMENT ON COLUMN "staff"."staff_sex" IS '性别';
COMMENT ON COLUMN "staff"."staff_post" IS '岗位';
COMMENT ON COLUMN "staff"."staff_id" IS '身份证号';
COMMENT ON COLUMN "staff"."staff_phone" IS '联系电话';
COMMENT ON COLUMN "staff"."staff_education" IS '文化程度';
-- ----------------------------
-- Records of staff
-- ----------------------------
-- ----------------------------
-- Table structure for sys_admin
-- ----------------------------
DROP TABLE "sys_admin";
CREATE TABLE "sys_admin" (
"admin_num" VARCHAR2(10 BYTE) NULL ,
"admin_account" VARCHAR2(10 BYTE) NULL ,
"admin_name" VARCHAR2(10 BYTE) NULL ,
"admin_pwd" VARCHAR2(10 BYTE) NULL ,
"login_time" DATE NULL ,
"loginout_time" DATE NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "sys_admin"."admin_num" IS '管理员编号';
COMMENT ON COLUMN "sys_admin"."admin_account" IS '管理员账号';
COMMENT ON COLUMN "sys_admin"."admin_name" IS '姓名';
COMMENT ON COLUMN "sys_admin"."admin_pwd" IS '密码';
COMMENT ON COLUMN "sys_admin"."login_time" IS '登入时间';
COMMENT ON COLUMN "sys_admin"."loginout_time" IS '登出时间';
-- ----------------------------
-- Records of sys_admin
-- ----------------------------
-- ----------------------------
-- Table structure for table
-- ----------------------------
DROP TABLE "table";
CREATE TABLE "table" (
"table_num" VARCHAR2(4 BYTE) NULL ,
"table_name" VARCHAR2(15 CHAR) NULL ,
"table_status" VARCHAR2(8 BYTE) NULL
)
LOGGING
NOCOMPRESS
NOCACHE
;
COMMENT ON COLUMN "table"."table_num" IS '餐桌号';
COMMENT ON COLUMN "table"."table_name" IS '餐桌名';
COMMENT ON COLUMN "table"."table_status" IS '餐桌当前状态';
-- ----------------------------
-- Records of table
-- ----------------------------
Powered by Waline v3.1.3