实验2.售后服务管理系统数据建模

2023-05-16

售后服务管理系统数据建模

逻辑模型、物理模型、SQL代码与实验报告的位置:
https://download.csdn.net/download/weixin_50836014/85970144

实验环境:
操作系统:Windows10
数据库设计软件:PowerDesigner

实验报告如下:

一.设计思路:

​ 1.该数据库设计主要设计三个主体:销售\服务部门,顾客,供应商。供应商提供产品,销售员工负责与顾客签订合同,销售员工负责向顾客提供售后服务。

​ 2.该模型中存在多个一对多的关系,如一个合同中可能包含多个合同产品,一个售后服务可能包含多个需要维修的产品,而一个产品也可能对应多个维修员。所以我在每一个父表下建立一个子表,并通过主键和外键进行约束。

​ 3.在售后服务中,每次售后服务都对应于一个合同(外键 contract_id)、一位申请服务的顾客(外键 customer_id)、一位负责对接的服务员工(外键 employee_id),当然每次售后服务都有自己的编号(主键 service_id)。每一次的售后服务都有若干需要维修的产品,每一个待维修产品的维修都有自己的维修编号(主键 service_detail_id),同时对应该产品的编号(product_id)、以及维修开始时间和结束时间、问题、解决方案。此外,每个维修产品可能需要多个维修员的参与。

二.逻辑模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-enh4eZEP-1657290970332)(file:///C:\Users\Hasee\AppData\Local\Temp\ksohtml1764\wps1.jpg)]

三.物理模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9VpU67n-1657290970334)(file:///C:\Users\Hasee\AppData\Local\Temp\ksohtml1764\wps2.jpg)]

四.实验问题

(1) 如何实现售后服务中的产品服务期限的?

每一个“产品”都有一个保修期(warranty_period)和生产日期(produce_date),只要对此产品申请售后服务的时间(service_start_time)在“产品”保修期内,即可向合同中的员工申请维修(phone)。

(2) 如何记录售后服务的产品信息?

每一个“合同”和“产品”都分别有一个主键contract_id和product_id,每个“合同”可能对应多个“合同产品”,所以每个“合同产品”都有contract_id和product_id两个外键。在“售后服务”中会通过contract_id的外键确定“合同”,进而确定“合同产品”,且在每个“售后服务”中可能对应维修多个“合同产品”,每个维修的合同产品记录为一个“维修产品”。

(3) 如何记录技术服务工程师(包括服务专员)的信息?

在每个“售后服务”中,都记录有接收这个服务的服务人员(一对一),每个“售后服务”可能对应多个“维修产品”,每个“维修产品”又可能对应多个“维修员”,所以我们在“维修产品”下建立了一个子表维修员,用于记录参与维修该产品的服务工程师(即维修员)。

(4) 一个完整的服务信息(如维修一个磁盘可能包括第一次打电话咨询、维修等由多个小服务组成一个大服务)是如何记录的?

​ 具体流程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8BtANMs7-1657290970335)(file:///C:\Users\Hasee\AppData\Local\Temp\ksohtml1764\wps3.jpg)]

生成的SQL代码如下:(代码由powerDesigner自动生成导出)

/*==============================================================*/
/* DBMS name:      Microsoft SQL Server 2012                    */
/* Created on:     2021/9/9 11:19:30                            */
/*==============================================================*/


if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('产品') and o.name = 'FK_产品_REFERENCE_供应商')
alter table 产品
   drop constraint FK_产品_REFERENCE_供应商
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('合同') and o.name = 'FK_合同_REFERENCE_销售、服务员工')
alter table 合同
   drop constraint FK_合同_REFERENCE_销售、服务员工
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('合同') and o.name = 'FK_合同_REFERENCE_顾客')
alter table 合同
   drop constraint FK_合同_REFERENCE_顾客
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('合同产品') and o.name = 'FK_合同产品_REFERENCE_合同')
alter table 合同产品
   drop constraint FK_合同产品_REFERENCE_合同
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('合同产品') and o.name = 'FK_合同产品_REFERENCE_产品')
alter table 合同产品
   drop constraint FK_合同产品_REFERENCE_产品
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('售后服务') and o.name = 'FK_售后服务_REFERENCE_顾客')
alter table 售后服务
   drop constraint FK_售后服务_REFERENCE_顾客
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('售后服务') and o.name = 'FK_售后服务_REFERENCE_销售、服务员工')
alter table 售后服务
   drop constraint FK_售后服务_REFERENCE_销售、服务员工
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('售后服务') and o.name = 'FK_售后服务_REFERENCE_合同')
alter table 售后服务
   drop constraint FK_售后服务_REFERENCE_合同
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('维修产品') and o.name = 'FK_维修产品_REFERENCE_售后服务')
alter table 维修产品
   drop constraint FK_维修产品_REFERENCE_售后服务
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('维修员') and o.name = 'FK_维修员_REFERENCE_维修产品')
alter table 维修员
   drop constraint FK_维修员_REFERENCE_维修产品
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('销售、服务员工') and o.name = 'FK_销售、服务员工_REFERENCE_销售、服务部门')
alter table 销售、服务员工
   drop constraint FK_销售、服务员工_REFERENCE_销售、服务部门
go

if exists (select 1
            from  sysobjects
           where  id = object_id('产品')
            and   type = 'U')
   drop table 产品
go

if exists (select 1
            from  sysobjects
           where  id = object_id('供应商')
            and   type = 'U')
   drop table 供应商
go

if exists (select 1
            from  sysobjects
           where  id = object_id('合同')
            and   type = 'U')
   drop table 合同
go

if exists (select 1
            from  sysobjects
           where  id = object_id('合同产品')
            and   type = 'U')
   drop table 合同产品
go

if exists (select 1
            from  sysobjects
           where  id = object_id('售后服务')
            and   type = 'U')
   drop table 售后服务
go

if exists (select 1
            from  sysobjects
           where  id = object_id('维修产品')
            and   type = 'U')
   drop table 维修产品
go

if exists (select 1
            from  sysobjects
           where  id = object_id('维修员')
            and   type = 'U')
   drop table 维修员
go

if exists (select 1
            from  sysobjects
           where  id = object_id('销售、服务员工')
            and   type = 'U')
   drop table 销售、服务员工
go

if exists (select 1
            from  sysobjects
           where  id = object_id('销售、服务部门')
            and   type = 'U')
   drop table 销售、服务部门
go

if exists (select 1
            from  sysobjects
           where  id = object_id('顾客')
            and   type = 'U')
   drop table 顾客
go

/*==============================================================*/
/* Table: 产品                                                    */
/*==============================================================*/
create table 产品 (
   product_id           varchar(15)          not null,
   vendor_id            varchar(15)          null,
   name                 varchar(50)          null,
   price                integer              null,
   warranty_period      integer              null,
   produce_date         datetime             null,
   constraint PK_产品 primary key (product_id)
)
go

/*==============================================================*/
/* Table: 供应商                                                   */
/*==============================================================*/
create table 供应商 (
   vendor_id            varchar(15)          not null,
   phone                char(11)             null,
   address              varchar(20)          null,
   name                 varchar(50)          null,
   constraint PK_供应商 primary key (vendor_id)
)
go

/*==============================================================*/
/* Table: 合同                                                    */
/*==============================================================*/
create table 合同 (
   contract_id          varchar(15)          not null,
   name                 varchar(50)          null,
   date_of_signing      datetime             null,
   business_id          varchar(15)          null,
   business_result      varchar(Max)         null,
   customer_id          varchar(15)          null,
   employee_id          varchar(15)          null,
   contract_amount      integer              null,
   constraint PK_合同 primary key (contract_id)
)
go

/*==============================================================*/
/* Table: 合同产品                                                  */
/*==============================================================*/
create table 合同产品 (
   product_id           varchar(15)          null,
   contract_id          varchar(15)          null,
   name                 varchar(50)          null,
   price                integer              null,
   amount               integer              null
)
go

/*==============================================================*/
/* Table: 售后服务                                                  */
/*==============================================================*/
create table 售后服务 (
   service_id           varchar(15)          not null,
   contract_id          varchar(15)          null,
   employee_id          varchar(15)          null,
   customer_id          varchar(15)          null,
   cuesomer_phone       char(11)             null,
   constraint PK_售后服务 primary key (service_id)
)
go

/*==============================================================*/
/* Table: 维修产品                                                  */
/*==============================================================*/
create table 维修产品 (
   service_detail_id    varchar(15)          not null,
   service_id           varchar(15)          null,
   product_id           varchar(15)          null,
   service_start_time   datetime             null,
   service_end_time     datetime             null,
   type                 varchar(50)          null,
   price                integer              null,
   problem              varchar(Max)         null,
   solution             varchar(Max)         null,
   constraint PK_维修产品 primary key (service_detail_id)
)
go

/*==============================================================*/
/* Table: 维修员                                                   */
/*==============================================================*/
create table 维修员 (
   service_detail_id    varchar(15)          null,
   employee_id          varchar(15)          null,
   employee_name        varchar(50)          null
)
go

/*==============================================================*/
/* Table: 销售、服务员工                                               */
/*==============================================================*/
create table 销售、服务员工 (
   employee_id          varchar(15)          not null,
   department_id        varchar(15)          null,
   name                 varchar(50)          null,
   phone                char(11)             null,
   constraint PK_销售、服务员工 primary key (employee_id)
)
go

/*==============================================================*/
/* Table: 销售、服务部门                                               */
/*==============================================================*/
create table 销售、服务部门 (
   department_id        varchar(15)          not null,
   address              varchar(50)          null,
   constraint PK_销售、服务部门 primary key (department_id)
)
go

/*==============================================================*/
/* Table: 顾客                                                    */
/*==============================================================*/
create table 顾客 (
   customer_id          varchar(15)          not null,
   bank_account         varchar(15)          null,
   credit               varchar(15)          null,
   phone                char(11)             null,
   name                 varchar(50)          null,
   constraint PK_顾客 primary key (customer_id)
)
go

alter table 产品
   add constraint FK_产品_REFERENCE_供应商 foreign key (vendor_id)
      references 供应商 (vendor_id)
go

alter table 合同
   add constraint FK_合同_REFERENCE_销售、服务员工 foreign key (employee_id)
      references 销售、服务员工 (employee_id)
go

alter table 合同
   add constraint FK_合同_REFERENCE_顾客 foreign key (customer_id)
      references 顾客 (customer_id)
go

alter table 合同产品
   add constraint FK_合同产品_REFERENCE_合同 foreign key (contract_id)
      references 合同 (contract_id)
go

alter table 合同产品
   add constraint FK_合同产品_REFERENCE_产品 foreign key (product_id)
      references 产品 (product_id)
go

alter table 售后服务
   add constraint FK_售后服务_REFERENCE_顾客 foreign key (customer_id)
      references 顾客 (customer_id)
go

alter table 售后服务
   add constraint FK_售后服务_REFERENCE_销售、服务员工 foreign key (employee_id)
      references 销售、服务员工 (employee_id)
go

alter table 售后服务
   add constraint FK_售后服务_REFERENCE_合同 foreign key (contract_id)
      references 合同 (contract_id)
go

alter table 维修产品
   add constraint FK_维修产品_REFERENCE_售后服务 foreign key (service_id)
      references 售后服务 (service_id)
go

alter table 维修员
   add constraint FK_维修员_REFERENCE_维修产品 foreign key (service_detail_id)
      references 维修产品 (service_detail_id)
go

alter table 销售、服务员工
   add constraint FK_销售、服务员工_REFERENCE_销售、服务部门 foreign key (department_id)
      references 销售、服务部门 (department_id)
go



更多资源

北京理工大学—计算机专业课程资源https://blog.csdn.net/weixin_50836014/article/details/125687455

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验2.售后服务管理系统数据建模 的相关文章

  • SUMO仿真教程(1) ——安装环境的设置(Windows 10系统)

    SUMO安装环境的设置 目录 一 SUMO下载的官方网址二 下载步骤 xff1a 三 环境设置 xff1a 1 打开设置环境变量的界面2 用户 xff08 Administrator xff09 变量设置3 系统变量设置 四 总述 一 SU
  • SUMO仿真教程(3)—— 仿真运行(net file、rou file、sumocfg file)

    文章目录 一 基本介绍 xff1a 1 简述 xff1a 二 文件说明 xff1a 1 路网文件 net xml 2 自定义编写路由文件 rou xml xff1a 3 生成运行仿真文件 sumocfg xff1a 4 进行运行仿真 xff
  • SUMO仿真教程(5) —— 使用“XML“语言自定义构建路网

    文章目录 一 简要介绍1 node file2 edge file3 lane definitions xff08 1 xff09 路段细分 xff08 2 xff09 邻近的对向车道 xff08 3 xff09 删除边或车道 4 type
  • SUMO仿真教程(7)—— 交通需求模型介绍

    文章目录 一 简要介绍 xff1a 二 方式一 xff1a 使用行程定义三 方式二 xff1a 使用交通流定义四 方式三 xff1a 使用随机流定义五 方式四 xff1a 使用OD矩阵定义六 方式五 xff1a 使用交叉口流量和转向比定义七
  • STM32 + UCOSII 操作系统(简单讲解)

    前言 这是我将UCOSII操作系统移植在STM32单片机上后进行UCOSII操作系统学习的一些笔记与理解 xff0c 此文最后会附上我自己在UCOSII操作系统下使用STM32写的ESP8266 43 onenet 43 http协议的程序
  • 地下水监测用设备 5G无线数传终端DTU

    地下水监测用设备5G无线数传终端DTU xff0c 实现地下水水位 温度 电导率 水质 孔隙压力等数据传输入库 远程采集 远程监测 曲线及报表可视化管理 地下水监测用5G无线数传终端DTU功能配置 地下水监测用5G无线数传终端负责连接前端采
  • 图解进程线程、互斥锁与信号量-看完不懂你来打我

    在上学的时候 xff0c 老师讲到进程与线程的时候可能是这样讲的 xff1a 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程 xff0c 是操作系统进行资源分配和调度的一个独立单元 xff0c 是应用程序运行的载体 线程
  • MySQL最左匹配原则,道儿上兄弟都得知道的原则

    自MySQL5 5版本起 xff0c 主流的索引结构转为B 43 树 B 43 树的节点存储索引顺序是从左向右存储 xff0c 在检索匹配的时候也要满足自左向右匹配 目录 一 最左匹配原则的原理二 违背最左原则导致索引失效的情况三 查询优化
  • 在STM32下完成基于FreeRTOS的多任务简单程序

    一 为什么要学习 RTOS 在裸机系统中 xff0c 所有的程序基本都是自己写的 xff0c 所有的操作都是在一个无限的大循环里面实现 现实生活中的很多中小型的电子产品用的都是裸机系统 xff0c 而且也能够满足需求 但是为什么还要学习 R
  • 虚拟机连不上网问题及解决

    虚拟机联网主要涉及四个方面的配合 xff1a 网络和共享中心 xff08 物理机 xff09 虚拟网络编辑器 网络适配器 有线连接的更多设置 xff08 相关配置文件 xff09 网络和共享中心 xff1a 提示 xff1a 需要注意的点是
  • linux命令查看系统硬件的版本(dmidecode)

    dmidecode命令 可以让你在Linux系统下获取有关硬件方面的信息 dmidecode的作用是将DMI数据库中的信息解码 xff0c 以可读的文本方式显示 由于DMI信息可以人为修改 xff0c 因此里面的信息不一定是系统准确的信息
  • git 设置代理和取消代理

    本地开启VPN后 xff0c GIt也需要设置代理 xff0c 才能正常略过GFW xff0c 访问goole code等网站 设置如下 xff08 可复制 xff09 xff1a git config global https proxy
  • 上下文切换理解

    1 上下文的理解 上下文是指 xff0c 每次执行前 xff0c 都会使用需要依赖两个环境 xff0c 分别是CPU寄存器 xff08 cpu中容量小但是速度很快的内存 xff09 和程序计数器 xff08 cpu正在执行的程序位置或者是准
  • debian-11版本虚拟机无法登入root账号

    debian11创建虚拟机时我们设置了root账户密码 xff0c 然而在登入时却在未列出中无法登入root账户 xff0c 如图 1 我们登入普通账号 xff0c 这里不提权是无法保存文件的 enter 输入 i 进入编辑模式 在这个位置
  • 整数加减运算的二进制表示

    两位整数的加减都可看做 一个数加上另一个数 xff0c 首先我们要把数据的二进制表示转化成补码 xff0c 因为在计算机内部 xff0c 数据的加减是按补码进行运算的 A补 43 B补 61 A 43 B 补 xff08 mod 2 n 4
  • TCP服务器端、客户端通讯(赋源码)

    实现通讯 xff0c 我们首先要知道是怎么样的一个流程 xff0c 下图是我画的一个通讯流程图 xff1a 一 Linux服务器端 我是在Ubuntu20 04下进行的 xff0c 使用的是C 43 43 xff0c 引入头文件socket
  • 超详细正点原子STM32F429开发板视频教程笔记01

    文章目录 前言一 GPIO入门知识二 寄存器描述和配置方法1 GPIO寄存器 总结 前言 买了一块正点原子阿波罗stm32f429开发板 xff0c 趁暑假有空看看教学视频 xff0c 之前看过一部分所以从GPIO的原理和配置开始写笔记 提
  • 软件测试之项目总结全攻略

    在我们测试工作过程中 xff0c 由于公司业务发展 xff0c 快速迭代等原因 xff0c 我们遇到的项目以小项目居多 更新界面元素 xff0c 上个活动页 xff0c 优化一下原有的功能等等 xff0c 加上事情繁琐 xff0c 任务多
  • 简历中的项目经历可以怎么写?

    概述 工作这10多年来 xff0c 也经常做招聘的工作 xff0c 面试过的人超过50人次了 xff0c 而看过的候选人的简历则有几百份了 xff0c 但是清晰且能突出重点的简历 xff0c 确实很少遇到 这里基本可以说明一个问题 xff0
  • 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)

    很多朋友都有网购抢购限量商品的经历 有时候蹲点抢怎么也抢不到 今天小编带你们学习怎么用Python写一个京东自动下单抢购脚本 以后再也不用拼手速拼网速啦 快来一起看看吧 1 问题背景 经过无数次抢购失败后 xff0c 发现商家会不定时的放出

随机推荐