【数据库设计】宠物商店管理系统
目录
🌊1 问题的提出
🌊2 需求分析
🌍2.1 系统目的
🌍2.2 用户需求
🌻2.2.1 我国宠物行业作为新兴市场,潜力巨大
🌻2.2.2 我国宠物产品消费规模逐年增大
🌻2.2.3 我国宠物主选择高端产品和服务的意愿日渐显著
🌍2.3 数据流图
🌻2.3.1 第一级数据流图:
🌻2.3.2 第二级数据流图:
🌻2.3.3 第三级数据流图:
🌍2.4 数据字典
🌻2.4.1 表格清单
🌻2.4.2 参考清单
🌻2.4.3 表格宠物信息的输出参考清单
🌻2.4.4 表格宠物信息的列清单
🌻2.4.5 表格宠物信息的索引清单
🌻2.4.6 表格宠物信息的键清单
🌊3 数据库三个设计步骤
🌍3.1 概念设计
🌍3.2 逻辑设计
🌍3.3 物理设计
🌊4 数据库和其他数据库对象的实现
🌍4.1 表
🌍4.2 视图
🌍4.3 数据库关系图
🌍4.4 索引
🌍4.5 存储过程
🌍4.6 函数
🌊5 测试与运行实例
🌊结论
🌊参考文献
🌊附录 TSQL语句
🌊1 问题的提出
随着中国经济的增长,宠物行业得到了迅猛的发展,人们饲养宠物已经由单纯的赏玩而转变成人们精神的一种寄托,宠物的角色也悄然发生着变化,已经日益成为人们生活的伴侣,在促进和谐社会发挥着不可替代的调节作用,越来越多的人开始养宠物,其中以猫狗为主。由于市场的无序竞争,法制观念淡,数量大但精品少,管理不规范加上缺少相关法律法规和行业标准的监管和约束,导致当前我国宠物用品竞争无序,尚未形成高水平的专业大市场,严重的影响了宠物用品行业的健康发展。同时,宠物用品网购企业受销售规模所限,渠道谈判力量较弱,货源大多被品牌渠道商控制。而渠道供应商方面可能存在掺杂假货等不规范操作,容易造成产品质量问题,这会对消费者权益造成一定损害,也对网购企业的品牌有所不利。而我国目前没有网络购物的法律规范,消费者维权时常遭遇无法可依的尴尬。而无良商家也经常利用法律法规的漏洞,制定霸王条款,侵犯消费者权益。
宠物商店管理系统是基于大多数宠物主囿于宠物商店市场不规范的现状进行的一次改造探索与创新。该系统集“宠物商店”与“其他促进宠物健康的增值服务”(如预约服务、宠物选择、宠物商品的售卖等)于一体。在保障上:针对顾客体验宠物商店过程中的不规范以及责任纠纷问题,为用户提供了可供参考的宠物商店服务(平台提供了不同的宠物类别,用户可根据自己需求选择性购买);在渠道上:扮演宠物商店的中介角色,提供线上新渠道,不仅能够帮助宠物主减少宠物商店忧虑、为自己找到合适的宠物以及相应的宠物服务,还通过增值服务抓住了与此相关前后的宠物服务市场,在此基础上宠物商店管理系统应运而生。
🌊2 需求分析
🌍2.1 系统目的
本宠物商店管理系统从致力从宠物商店的视角出发,提供规范化的宠物商店服务。宠物商店管理系统聚焦于一、二线城市的中青年群体的宠物商店诉求,为青年选择宠物、帮助宠物主降低忧虑、对规范宠物相亲市场具有极大的推动意义。宠物商店市场开发潜力巨大,如果对宠物商店市场进行有效开发和运营,可以有效推动经济增长和解决就业问题,为宠物行业不规范的问题提供可借鉴的解决办法。
🌍2.2 用户需求
🌻2.2.1 我国宠物行业作为新兴市场,潜力巨大
随着社会的发展,在物质生活极大丰富的同时,人们对于精神生活的追求也到了一定的高度。一方面,人们越来越注重培养生活情趣和追求个性化体验,另一方面,传统家庭结构的改变和工作压力的增大,使越来越多的人将感情投注于宠物身上,宠物行业由此逐渐发展起来。根据《2020年中国宠物行业白皮书》显示,我国宠物数量及养宠人数持续增长,2020年中国犬、猫数量已突破1亿只,养犬猫人数达到6294万人,增幅为2.80%。2020年我国宠物经济规模已经接近3000亿元,并在未来三年保持约14.20%的年复合增长率。
🌻2.2.2 我国宠物产品消费规模逐年增大
在生活节奏越来越快的当下,人与人之间交流变少带来的孤独感,导致越来越多人视宠物为自己最亲密的伙伴。有超九成的宠物主表示视宠物为家人、朋友甚至伴侣,宠物家庭属性进一步加强。
🌻2.2.3 我国宠物主选择高端产品和服务的意愿日渐显著
从消费结构来看,食品市场份额降低,服务市场份额增加。而且在2020年宠物诊疗支出达334.53亿元,同比增长65.30%,这项消费支出增长最快。由此可见,人们对宠物更高品质服务的需求在逐渐增加。
宠物的家庭地位日渐攀升,宠物主为爱宠花钱的意愿愈发强烈,宠物消费领域将迎来整体升级。宠物主人收入水平和消费能力的提升,宠物主人在宠物身上的投入也在持续增加。《2019年中国宠物行业白皮书》显示,2019年中国城镇宠物犬猫消费市场规模已达到2024亿元,比2018年增长18.5%。其中宠物犬消费市场规模为1244亿元,比2018年增长17.8%;宠物猫消费市场规模为780亿元,增幅达19.6%,超过犬消费市场规模增速。宠物行业仍是目前少有的市场规模庞大,且维持高速增长的潜力行业。
根据《2020年宠物行业白皮书》公布的数据显示,2020年我国宠物(猫狗)消费市场规模达2065亿元,同比增长2.00%,其中宠物狗消费市场规模为1180亿元,较2019年下降5.10%,宠物猫消费市场规模为884亿元,同比增长13.30%
从宠物客单价不同价格段的消费人数分布来看,高消费人群占比约20.00%,且高价格段的消费人数增速突出,这足以说明,随着宠物家庭地位的攀升,主人们相较过去更愿为宠物一掷千金,宠物行业高端化产品和服务的前景巨大。
宠物消费的“恩格尔系数”在降低。《2021年中国宠物行业白皮书》显示,从2019年到2021年,食品的市场份额从61.40%降低到51.50%,下降接近10个百分点。医疗的市场份额从19.00%到29.20%,增加了10个百分点。从消费结构来看,食品市场份额降低,服务市场份额增加。而且从更细分的市场来看,诊疗市场的份额达到14.60%,成为仅次于主粮的第二大细分市场。而且在2020年宠物诊疗支出达334.53亿元,同比增长65.30%,这项消费支出增长最快。由此可见,人们对宠物更高品质服务的需求在逐渐增加。
🌍2.3 数据流图
数据流图这块一共分为三级,第一级在全局层面表明顾客、宠物商店管理系统以及销售员三者之间的联系;第二级将宠物商店管理系统细分为预约、进店两块,将预约记录、商品信息、宠物信息、预期消费记录、选择结果、收费标准以及交易记录与预约和进店进行信息交互;第三级分别是预约和进店的细分,具体流程见以下数据流图。
🌻2.3.1 第一级数据流图:
🌻2.3.2 第二级数据流图:
🌻2.3.3 第三级数据流图:
第三级数据流图之预约块:
第三级数据流图之进店块:
🌍2.4 数据字典
由于Power Designer针对物理模型导出的数据字典较多,这里主要选其中的主要清单与卡片进行展示。
🌻2.4.1 表格清单
名称 | 代码 |
交易记录 | 交易记录 |
发票 | 发票 |
宠物信息 | 宠物信息 |
宠物用品 | 宠物用品 |
收费标准 | 收费标准 |
营销部 | 营销部 |
选择结果 | 选择结果 |
销售员 | 销售员 |
顾客 | 顾客 |
预约单 | 预约单 |
🌻2.4.2 参考清单
名称 | 代码 | 父表格 | 子表格 | 外键列 | 父角色 | 子角色 |
了解 | 了解 | 顾客 | 宠物信息 | 顾客号; 预约号 | ||
做出 | 做出 | 选择结果 | 顾客 | 商品号; 选择结_顾客号 | ||
包含 | 包含 | 发票 | 宠物信息 | 发票号 | ||
包括 | 包括 | 发票 | 宠物用品 | 发票号 | ||
参照 | 参照 | 收费标准 | 交易记录 | 商品号; 单价 | ||
参考 | 参考 | 收费标准 | 预约单 | 商品号; 单价 | ||
反馈 | 反馈 | 销售员 | 选择结果 | 销售员号 | ||
填写 | 填写 | 销售员 | 发票 | 销售员_销售员号 | ||
属于 | 属于 | 营销部 | 销售员 | 销售部号 | ||
持有 | 持有 | 顾客 | 预约单 | 顾客_顾客号; 顾客_预约号 | ||
接受 | 接受 | 销售员 | 预约单 | 销售员_销售员号 | ||
提供 | 提供 | 销售员 | 宠物信息 | 销售员号 | ||
查看 | 查看 | 顾客 | 宠物用品 | 顾客号; 预约号 | ||
申请 | 申请2 | 发票 | 顾客 | 发票号 | ||
申请 | 申请 | 顾客 | 发票 | 顾客_顾客号; 预约号 | ||
给出 | 给出 | 销售员 | 宠物用品 | 销售员号 | ||
缴费 | 缴费2 | 交易记录 | 发票 | 交易号 | ||
缴费 | 缴费 | 发票 | 交易记录 | 发票号 |
🌻2.4.3 表格宠物信息的输出参考清单
名称 | 代码 | 父表格 | 外键列 | 父角色 | 子角色 |
了解 | 了解 | 顾客 | 顾客号; 预约号 | ||
包含 | 包含 | 发票 | 发票号 | ||
提供 | 提供 | 销售员 | 销售员号 |
🌻2.4.4 表格宠物信息的列清单
名称 | 代码 | 数据类型 | 长度 | 主要的 |
宠物号 | 宠物号 | varchar(20) | 20 | TRUE |
销售员号 | 销售员号 | varchar(10) | 10 | FALSE |
顾客号 | 顾客号 | varchar(10) | 10 | FALSE |
预约号 | 预约号 | varchar(20) | 20 | FALSE |
发票号 | 发票号 | varchar(10) | 10 | FALSE |
宠物姓名 | 宠物姓名 | varchar(20) | 20 | FALSE |
宠物品种 | 宠物品种 | varchar(20) | 20 | FALSE |
宠物出生日期 | 宠物出生日期 | datetime | FALSE | |
宠物价格 | 宠物价格 | real | FALSE | |
宠物健康状态 | 宠物健康状态 | varchar(10) | 10 | FALSE |
🌻2.4.5 表格宠物信息的索引清单
名称 | 代码 | 唯一的 | 群集器 | 主要的 | 外键 | 候选键 | 表格 |
宠物信息_PK | 宠物信息_PK | TRUE | FALSE | TRUE | FALSE | FALSE | 宠物信息 |
了解_FK | 了解_FK | FALSE | FALSE | FALSE | TRUE | FALSE | 宠物信息 |
提供_FK | 提供_FK | FALSE | FALSE | FALSE | TRUE | FALSE | 宠物信息 |
包含_FK | 包含_FK | FALSE | FALSE | FALSE | TRUE | FALSE | 宠物信息 |
🌻2.4.6 表格宠物信息的键清单
名称 | 代码 | 主要的 |
Identifier_1 | Identifier_1 | TRUE |
🌊3 数据库三个设计步骤
🌍3.1 概念设计
将需求分析阶段所得到的应用需求抽象为信息世界的结构,真实、充分地反映现实世界,这里主要采用Power Designer建立概念模型CDM文件生成的概念模型图进行现实世界概念模型的描述,包括实体、属性、实体之间的联系等,以下给定的是总概念模型,并且运用表格法对以下关系数据库中的关系进行模式分解,使其关系模式达到三范式。
🌍3.2 逻辑设计
将概念结构设计阶段的概念模型图转变为PDM文件生成的物理模型图,具体信息如下。
🌍3.3 物理设计
本次设计采用SQL SERVER的默认物理设计。
🌊4 数据库和其他数据库对象的实现
🌍4.1 表
采用SQL SERVER建立“宠物商店管理系统”数据库,其中表有宠物信息、宠物用品、发票、顾客、销售员、营销部、交易记录、收费标准、选择结果、预约单十张表。
🌍4.2 视图
🌍4.3 数据库关系图
🌍4.4 索引
🌍4.5 存储过程
🌍4.6 函数
🌊5 测试与运行实例
在宠物商店管理系统的基础上,以微信小程序的方式建立起“宠伴驿站”的线上宠物购物平台,其中页面主要有以下,主要分为相亲角、分类、社区、购物车以及个人页面:
宠物主可以在“相亲角”板块为自己宠物寻找相亲对象,“相亲角”将会显示发布了“征婚信息”的宠物相关介绍,宠物主可以自主选择;也可以在页面上方的搜索栏直接输入心仪的相亲品种或宠物星级。
“相亲角”页面:
“宠物商品分类”页面:
“商品详情”页面:
“社区”页面:
“购物车”页面:
我的”页面:
“意见反馈”页面:
🌊结论
本次宠物商店管理系统的概念设计、逻辑设计以及物理设计主要建立在Power Designer数据库设计工具和SQL Server数据库管理系统,使用数据库设计工具绘制数据流图,建立概念模型和物理模型,最终生成数据库和表及其他数据库对象,建立起合理高性能的数据库系统,并且运用微信开发者工具与vscode相结合的开发方式对宠物商店管理系统进行外观设计和功能设计,实现基本功能的同时满足用户的良好体验。尽管设计过程中不断会冒出大大小小的问题,但我始终坚信虚壹而静,静心而行,每解决一个问题,我都会像个孩子般高兴的手舞足蹈,正是在这段埋头苦干时常熬夜的日子里,我也在不断的成长着。
🌊参考文献
1 王珊.数据仓库技术与联机分析处理.数据库技术丛书之一.[A]北京:科学出版社,1998.
2 萨师煊.数据库系统概论(第五版).[A]北京:高等教育出版社,2014(5):215-218.
3 中国畜牧业协会宠物产业分会.2019年中国宠物行业白皮书(2019年)[R].(2019-01).
4 中国畜牧业协会宠物产业分会.2020年中国宠物行业白皮书(2020年)[R].(2020-01).
5 中国畜牧业协会宠物产业分会.2021年中国宠物行业白皮书(2021年)[R].(2021-01).
🌊附录 TSQL语句
Tsql语句如下:
/*==============================================================*//* DBMS name: Microsoft SQL Server 2008 *//* Created on: 2022/5/23 14:09:27 *//*==============================================================*/if exists (select 1from 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_交易记录_参照_收费标准')alter table 交易记录drop constraint FK_交易记录_参照_收费标准goif exists (select 1from 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_交易记录_缴费_发票')alter table 交易记录drop constraint FK_交易记录_缴费_发票goif exists (select 1from 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_发票_填写_销售员')alter table 发票drop constraint FK_发票_填写_销售员goif exists (select 1from 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_发票_申请_顾客')alter table 发票drop constraint FK_发票_申请_顾客goif exists (select 1from 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_发票_缴费2_交易记录')alter table 发票drop constraint FK_发票_缴费2_交易记录goif exists (select 1from 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_宠物信息_了解_顾客')alter table 宠物信息drop constraint FK_宠物信息_了解_顾客goif exists (select 1from 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_宠物信息_包含_发票')alter table 宠物信息drop constraint FK_宠物信息_包含_发票goif exists (select 1from 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_宠物信息_提供_销售员')alter table 宠物信息drop constraint FK_宠物信息_提供_销售员goif exists (select 1from 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_宠物用品_包括_发票')alter table 宠物用品drop constraint FK_宠物用品_包括_发票goif exists (select 1from 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_宠物用品_查看_顾客')alter table 宠物用品drop constraint FK_宠物用品_查看_顾客goif exists (select 1from 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_宠物用品_给出_销售员')alter table 宠物用品drop constraint FK_宠物用品_给出_销售员goif exists (select 1from 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_选择结果_反馈_销售员')alter table 选择结果drop constraint FK_选择结果_反馈_销售员goif exists (select 1from 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_销售员_属于_营销部')alter table 销售员drop constraint FK_销售员_属于_营销部goif exists (select 1from 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_顾客_做出_选择结果')alter table 顾客drop constraint FK_顾客_做出_选择结果goif exists (select 1from 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_顾客_申请2_发票')alter table 顾客drop constraint FK_顾客_申请2_发票goif exists (select 1from 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_预约单_参考_收费标准')alter table 预约单drop constraint FK_预约单_参考_收费标准goif exists (select 1from 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_预约单_持有_顾客')alter table 预约单drop constraint FK_预约单_持有_顾客goif exists (select 1from 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_预约单_接受_销售员')alter table 预约单drop constraint FK_预约单_接受_销售员goif exists (select 1from sysindexeswhere id = object_id('交易记录')and name = '缴费_FK'and indid > 0and indid < 255)drop index 交易记录.缴费_FKgoif exists (select 1from sysindexeswhere id = object_id('交易记录')and name = '参照_FK'and indid > 0and indid < 255)drop index 交易记录.参照_FKgoif exists (select 1from sysobjectswhere id = object_id('交易记录')and type = 'U')drop table 交易记录goif exists (select 1from sysindexeswhere id = object_id('发票')and name = '缴费2_FK'and indid > 0and indid < 255)drop index 发票.缴费2_FKgoif exists (select 1from sysindexeswhere id = object_id('发票')and name = '申请_FK'and indid > 0and indid < 255)drop index 发票.申请_FKgoif exists (select 1from sysindexeswhere id = object_id('发票')and name = '填写_FK'and indid > 0and indid < 255)drop index 发票.填写_FKgoif exists (select 1from sysobjectswhere id = object_id('发票')and type = 'U')drop table 发票goif exists (select 1from sysindexeswhere id = object_id('宠物信息')and name = '包含_FK'and indid > 0and indid < 255)drop index 宠物信息.包含_FKgoif exists (select 1from sysindexeswhere id = object_id('宠物信息')and name = '提供_FK'and indid > 0and indid < 255)drop index 宠物信息.提供_FKgoif exists (select 1from sysindexeswhere id = object_id('宠物信息')and name = '了解_FK'and indid > 0and indid < 255)drop index 宠物信息.了解_FKgoif exists (select 1from sysobjectswhere id = object_id('宠物信息')and type = 'U')drop table 宠物信息goif exists (select 1from sysindexeswhere id = object_id('宠物用品')and name = '包括_FK'and indid > 0and indid < 255)drop index 宠物用品.包括_FKgoif exists (select 1from sysindexeswhere id = object_id('宠物用品')and name = '查看_FK'and indid > 0and indid < 255)drop index 宠物用品.查看_FKgoif exists (select 1from sysindexeswhere id = object_id('宠物用品')and name = '给出_FK'and indid > 0and indid < 255)drop index 宠物用品.给出_FKgoif exists (select 1from sysobjectswhere id = object_id('宠物用品')and type = 'U')drop table 宠物用品goif exists (select 1from sysobjectswhere id = object_id('收费标准')and type = 'U')drop table 收费标准goif exists (select 1from sysobjectswhere id = object_id('营销部')and type = 'U')drop table 营销部goif exists (select 1from sysindexeswhere id = object_id('选择结果')and name = '反馈_FK'and indid > 0and indid < 255)drop index 选择结果.反馈_FKgoif exists (select 1from sysobjectswhere id = object_id('选择结果')and type = 'U')drop table 选择结果goif exists (select 1from sysindexeswhere id = object_id('销售员')and name = '属于_FK'and indid > 0and indid < 255)drop index 销售员.属于_FKgoif exists (select 1from sysobjectswhere id = object_id('销售员')and type = 'U')drop table 销售员goif exists (select 1from sysindexeswhere id = object_id('顾客')and name = '申请2_FK'and indid > 0and indid < 255)drop index 顾客.申请2_FKgoif exists (select 1from sysindexeswhere id = object_id('顾客')and name = '做出_FK'and indid > 0and indid < 255)drop index 顾客.做出_FKgoif exists (select 1from sysobjectswhere id = object_id('顾客')and type = 'U')drop table 顾客goif exists (select 1from sysindexeswhere id = object_id('预约单')and name = '持有_FK'and indid > 0and indid < 255)drop index 预约单.持有_FKgoif exists (select 1from sysindexeswhere id = object_id('预约单')and name = '接受_FK'and indid > 0and indid < 255)drop index 预约单.接受_FKgoif exists (select 1from sysindexeswhere id = object_id('预约单')and name = '参考_FK'and indid > 0and indid < 255)drop index 预约单.参考_FKgoif exists (select 1from sysobjectswhere id = object_id('预约单')and type = 'U')drop table 预约单go/*==============================================================*//* Table: 交易记录 *//*==============================================================*/create table 交易记录 (交易号 varchar(10) not null,商品号 varchar(10) null,单价 real null,发票号 varchar(10) null,交易金额 real null,顾客号 varchar(10) null,销售员号 varchar(10) null,交易日期 datetime null,constraint PK_交易记录 primary key nonclustered (交易号))go/*==============================================================*//* Index: 参照_FK *//*==============================================================*/create index 参照_FK on 交易记录 (商品号 ASC,单价 ASC)go/*==============================================================*//* Index: 缴费_FK *//*==============================================================*/create index 缴费_FK on 交易记录 (发票号 ASC)go/*==============================================================*//* Table: 发票 *//*==============================================================*/create table 发票 (发票号 varchar(10) not null,顾客_顾客号 varchar(10) null,预约号 varchar(20) null,交易号 varchar(10) null,销售员_销售员号 varchar(10) null,顾客号 varchar(10) null,数量 int null,单价 real null,日期 datetime null,商品名称 varchar(10) null,票头 varchar(10) null,销售员号 varchar(10) null,顾客名称 varchar(10) null,缴费金额 real null,constraint PK_发票 primary key nonclustered (发票号))go/*==============================================================*//* Index: 填写_FK *//*==============================================================*/create index 填写_FK on 发票 (销售员_销售员号 ASC)go/*==============================================================*//* Index: 申请_FK *//*==============================================================*/create index 申请_FK on 发票 (顾客_顾客号 ASC,预约号 ASC)go/*==============================================================*//* Index: 缴费2_FK *//*==============================================================*/create index 缴费2_FK on 发票 (交易号 ASC)go/*==============================================================*//* Table: 宠物信息 *//*==============================================================*/create table 宠物信息 (宠物号 varchar(20) not null,销售员号 varchar(10) null,顾客号 varchar(10) null,预约号 varchar(20) null,发票号 varchar(10) null,宠物姓名 varchar(20) null,宠物品种 varchar(20) null,宠物出生日期 datetime null,宠物价格 real null,宠物健康状态 varchar(10) null,constraint PK_宠物信息 primary key nonclustered (宠物号))go/*==============================================================*//* Index: 了解_FK *//*==============================================================*/create index 了解_FK on 宠物信息 (顾客号 ASC,预约号 ASC)go/*==============================================================*//* Index: 提供_FK *//*==============================================================*/create index 提供_FK on 宠物信息 (销售员号 ASC)go/*==============================================================*//* Index: 包含_FK *//*==============================================================*/create index 包含_FK on 宠物信息 (发票号 ASC)go/*==============================================================*//* Table: 宠物用品 *//*==============================================================*/create table 宠物用品 (商品号 varchar(10) not null,销售员号 varchar(10) null,发票号 varchar(10) null,顾客号 varchar(10) null,预约号 varchar(20) null,单价 real null,会员价 real null,是否限购 smallint null,constraint PK_宠物用品 primary key nonclustered (商品号))go/*==============================================================*//* Index: 给出_FK *//*==============================================================*/create index 给出_FK on 宠物用品 (销售员号 ASC)go/*==============================================================*//* Index: 查看_FK *//*==============================================================*/create index 查看_FK on 宠物用品 (顾客号 ASC,预约号 ASC)go/*==============================================================*//* Index: 包括_FK *//*==============================================================*/create index 包括_FK on 宠物用品 (发票号 ASC)go/*==============================================================*//* Table: 收费标准 *//*==============================================================*/create table 收费标准 (商品号 varchar(10) not null,单价 real not null,会员价 real null,是否限购 smallint null,折扣日期 datetime null,constraint PK_收费标准 primary key nonclustered (商品号, 单价))go/*==============================================================*//* Table: 营销部 *//*==============================================================*/create table 营销部 (销售部号 varchar(10) not null,销售主管号 varchar(10) null,销售主管名 varchar(10) null,销售主管性别 varchar(2) null,销售主管年龄 int null,销售部人数 int null,销售月季总金额 real null,销售季总金额 real null,销售年总金额 real null,constraint PK_营销部 primary key nonclustered (销售部号))go/*==============================================================*//* Table: 选择结果 *//*==============================================================*/create table 选择结果 (商品号 varchar(10) not null,顾客号 varchar(10) not null,销售员号 varchar(10) null,商品名称 varchar(10) null,选择日期 datetime null,总价 real null,constraint PK_选择结果 primary key nonclustered (商品号, 顾客号))go/*==============================================================*//* Index: 反馈_FK *//*==============================================================*/create index 反馈_FK on 选择结果 (销售员号 ASC)go/*==============================================================*//* Table: 销售员 *//*==============================================================*/create table 销售员 (销售员号 varchar(10) not null,销售部号 varchar(10) null,销售员姓名 varchar(10) null,销售员性别 varchar(2) null,销售员工龄 smallint null,constraint PK_销售员 primary key nonclustered (销售员号))go/*==============================================================*//* Index: 属于_FK *//*==============================================================*/create index 属于_FK on 销售员 (销售部号 ASC)go/*==============================================================*//* Table: 顾客 *//*==============================================================*/create table 顾客 (预约号 varchar(20) not null,顾客号 varchar(10) not null,发票号 varchar(10) null,商品号 varchar(10) null,选择结_顾客号 varchar(10) null,顾客姓名 varchar(20) null,性别 varchar(2) null,顾客选择 varchar(10) null,会员 smallint null,顾客预算 real null,constraint PK_顾客 primary key nonclustered (顾客号, 预约号))go/*==============================================================*//* Index: 做出_FK *//*==============================================================*/create index 做出_FK on 顾客 (商品号 ASC,选择结_顾客号 ASC)go/*==============================================================*//* Index: 申请2_FK *//*==============================================================*/create index 申请2_FK on 顾客 (发票号 ASC)go/*==============================================================*//* Table: 预约单 *//*==============================================================*/create table 预约单 (预约号 varchar(10) not null,商品号 varchar(10) null,单价 real null,顾客_顾客号 varchar(10) null,顾客_预约号 varchar(20) null,销售员_销售员号 varchar(10) null,顾客号 varchar(10) null,销售员号 varchar(10) null,预约日期 datetime null,顾客预算 real null,顾客选择 varchar(10) null,是否会员 smallint null,顾客姓名 varchar(10) null,销售员姓名 varchar(10) null,constraint PK_预约单 primary key nonclustered (预约号))go/*==============================================================*//* Index: 参考_FK *//*==============================================================*/create index 参考_FK on 预约单 (商品号 ASC,单价 ASC)go/*==============================================================*//* Index: 接受_FK *//*==============================================================*/create index 接受_FK on 预约单 (销售员_销售员号 ASC)go/*==============================================================*//* Index: 持有_FK *//*==============================================================*/create index 持有_FK on 预约单 (顾客_顾客号 ASC,顾客_预约号 ASC)Goalter table 交易记录add constraint FK_交易记录_参照_收费标准 foreign key (商品号, 单价)references 收费标准 (商品号, 单价)goalter table 交易记录add constraint FK_交易记录_缴费_发票 foreign key (发票号)references 发票 (发票号)goalter table 发票add constraint FK_发票_填写_销售员 foreign key (销售员_销售员号)references 销售员 (销售员号)goalter table 发票add constraint FK_发票_申请_顾客 foreign key (顾客_顾客号, 预约号)references 顾客 (顾客号, 预约号)goalter table 发票add constraint FK_发票_缴费2_交易记录 foreign key (交易号)references 交易记录 (交易号)goalter table 宠物信息add constraint FK_宠物信息_了解_顾客 foreign key (顾客号, 预约号)references 顾客 (顾客号, 预约号)goalter table 宠物信息add constraint FK_宠物信息_包含_发票 foreign key (发票号)references 发票 (发票号)goalter table 宠物信息add constraint FK_宠物信息_提供_销售员 foreign key (销售员号)references 销售员 (销售员号)goalter table 宠物用品add constraint FK_宠物用品_包括_发票 foreign key (发票号)references 发票 (发票号)goalter table 宠物用品add constraint FK_宠物用品_查看_顾客 foreign key (顾客号, 预约号)references 顾客 (顾客号, 预约号)goalter table 宠物用品add constraint FK_宠物用品_给出_销售员 foreign key (销售员号)references 销售员 (销售员号)goalter table 选择结果add constraint FK_选择结果_反馈_销售员 foreign key (销售员号)references 销售员 (销售员号)goalter table 销售员add constraint FK_销售员_属于_营销部 foreign key (销售部号)references 营销部 (销售部号)goalter table 顾客add constraint FK_顾客_做出_选择结果 foreign key (商品号, 选择结_顾客号)references 选择结果 (商品号, 顾客号)goalter table 顾客add constraint FK_顾客_申请2_发票 foreign key (发票号)references 发票 (发票号)goalter table 预约单add constraint FK_预约单_参考_收费标准 foreign key (商品号, 单价)references 收费标准 (商品号, 单价)goalter table 预约单add constraint FK_预约单_持有_顾客 foreign key (顾客_顾客号, 顾客_预约号)references 顾客 (顾客号, 预约号)goalter table 预约单add constraint FK_预约单_接受_销售员 foreign key (销售员_销售员号)references 销售员 (销售员号)go
相关文章:
【数据库设计】宠物商店管理系统
目录 🌊1 问题的提出 🌊2 需求分析 🌍2.1 系统目的 🌍2.2 用户需求 🌻2.2.1 我国宠物行业作为新兴市场,潜力巨大 🌻2.2.2 我国宠物产品消费规模逐年增大 🌻2.2.3 我国宠物主选…...
前端 JS 经典:node 的模块查找策略
前言:我们引入模块后,node 大概的查找步骤分为 文件查找、文件夹查找、内置模块查找、第三方模块查找,在 node 中使用 ESM 模块语法,需要创建 package.json 文件,并将 type 设置为 module。简单起见,我们用…...
C++中的23种设计模式
目录 摘要 创建型模式 1. 工厂方法模式(Factory Method Pattern) 2. 抽象工厂模式(Abstract Factory Pattern) 3. 单例模式(Singleton Pattern) 4. 生成器模式(Builder Pattern࿰…...
vue.js+node.js+mysql在线聊天室源码
vue.jsnode.jsmysql在线聊天室源码 技术栈:vue.jsElement UInode.jssocket.iomysql vue.jsnode.jsmysql在线聊天室源码...
浏览器无痕模式和非无痕模式的区别
无痕模式 1. 历史记录:在无痕模式下,浏览器不会保存浏览记录、下载记录、表单数据和Cookies。当你关闭无痕窗口后,这些信息都会被删除。 2. Cookies:无痕模式会在会话期间临时存储Cookies,但在关闭无痕窗口…...
WPF框架,修改ComboBox控件背景色 ,为何如此困难?
直接修改Background属性不可行 修改控件背景颜色,很多人第一反应便是修改Background属性,但是修改过后便会发现,控件的颜色没有发生任何变化。 于是在网上搜索答案,便会发现一个异常尴尬的情况,要么就行代码简单但是并…...
Diffusers代码学习: 文本引导深度图像生成
StableDiffusionDepth2ImgPipeline允许传递文本提示和初始图像,以调节新图像的生成。此外,还可以传递depth_map以保留图像结构。如果没有提供depth_map,则管道通过集成的深度估计模型自动预测深度。 # 以下代码为程序运行进行设置 import o…...
网络的下一次迭代:AVS 将为 Web2 带去 Web3 的信任机制
撰文:Sumanth Neppalli,Polygon Ventures 编译:Yangz,Techub News 本文来源香港Web3媒体:Techub News AVS (主动验证服务)将 Web2 的规模与 Web3 的信任机制相融合,开启了网络的下…...
OpenCV 的模板匹配
OpenCV中的模板匹配 模板匹配(Template Matching)是计算机视觉中的一种技术,用于在大图像中找到与小图像(模板)相匹配的部分。OpenCV提供了多种模板匹配的方法,主要包括基于相关性和基于平方差的匹配方法。…...
26.0 Http协议
1. http协议简介 HTTP(Hypertext Transfer Protocol, 超文本传输协议): 是万维网(WWW: World Wide Web)中用于在服务器与客户端(通常是本地浏览器)之间传输超文本的协议.作为一个应用层的协议, HTTP以其简洁, 高效的特点, 在分布式超媒体信息系统中扮演着核心角色. 自1990年提…...
IO流打印流
打印流 IO流打印流是Java中用来将数据打印到输出流的工具。打印流提供了方便的方法来格式化和输出数据,可以用于将数据输出到控制台、文件或网络连接。 分类:打印流一般是指:PrintStream,PrintWriter两个类 特点1:打印流只操作文件目的地,…...
Cohere reranker 一致的排序器
这本notebook展示了如何在检索器中使用 Cohere 的重排端点。这是在 ContextualCompressionRetriever 的想法基础上构建的。 %pip install --upgrade --quiet cohere %pip install --upgrade --quiet faiss# OR (depending on Python version)%pip install --upgrade --quiet…...
MySQL系列-语法说明以及基本操作(二)
1、MySQL数据表的约束 1.1、MySQL主键 “主键(PRIMARY KEY)”的完整称呼是“主键约束”。 MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 …...
【STM32】步进电机及其驱动
设计和实现基于STM32微控制器的步进电机驱动系统是一个涉及硬件设计、固件编程和电机控制算法的复杂任务。以下是一个概要设计,包括一些基本的代码示例。 1. 硬件设计 1.1 微控制器选择 选择STM32系列微控制器,因为它提供了丰富的GPIO端口和足够的处理…...
Excel自定义排序和求和
概览 excel作为办公的常备工具,好记性不如烂笔头,在此梳理记录下,此篇文章主要是记录excel的自定义排序和求和 一. 自定义排序 举个例子 1. 填充自定义排序选项 实现步骤: 选定目标排序值;文件->选项->自定…...
若依RuoYi-Vue分离版—免登录直接访问
若依RuoYi-Vue分离版—免登录直接访问 如何不登录直接访问前端:后端:方法1:在SecurityConfig.java中设置httpSecurity配置匿名访问方法2:在对应的方法或类上面使用Anonymous注解。 如何不登录直接访问 官网有说明:如何不登录直接…...
java基础知识漏洞记录一
下面是我在阅读JavaGuide面试资料时遇到的不熟悉的知识点总结 JDK9中JRE与JDK新关系 从 JDK 9 开始,就不需要区分 JDK 和 JRE 的关系了,取而代之的是模块系统(JDK 被重新组织成 94 个模块) jlink 工具 (随 Java 9 一起发布的新命…...
html的网页制作代码分享
<!-- prj_8_2.html --> <!DOCTYPE html> <html lang "EN"><head><meta charset"utf-8" /><title>页面布局设计</title><style type "text/css">*{padding: 0px;margin:0px;}#header{back…...
【PIXEL】2024年 Pixel 解除 4G限制
首先在谷歌商店下载 Shizuku 和 pixel IMS 两个app 然后打开shizuku ,按照它的方法启动 推荐用adb 启动( 电脑连手机 ,使用Qtscrcpy最简洁) 一条指令解决 shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.ap…...
C#、C++、Java、Python 选择哪个好?
选择哪种编程语言取决于你的需求和偏好,以及你打算做什么类型的项目。我这里有一套编程入门教程,不仅包含了详细的视频 讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我…...
爬虫补环境,ES6 Class在环境模拟中的应用与优势
相比于使用传统的Object实现补环境框架结构,使用 ES6 的 Class 具有以下优势: 代码维护更方便:Class的语法更简洁直观,方便开发者阅读和维护。组织结构更清晰:Class提供了明确的层次结构,有助于代码的模块…...
linuxcentos将本地库JAR/arr批量导入到Nexus3.x
背景 我们现在要搞一个私服maven来管理对应的依赖包,需要上传包。用nexus只能单个文件搞,批量导入不行,而且还要单独配置groupID什么的。不多BB,上教程 建脚本 vi mavenimport.sh内容是这个 #!/bin/bash # copy and run this script to t…...
js之操作元素属性和定时器以及相关案例倒计时
这里写目录标题 一级目录二级目录三级目录 Web APIs01四、操作元素属性1.操作元素常用属性2.操作元素样式属性通过style属性操作css1.修改样式通过style属性引出2.如果属性有-连接符,需要转换为小驼峰命名法3.赋值的时候,需要的时候不要忘记加css单位 通…...
高考计算机专业 热门专业方向
人工智能(AI):随着技术进步,人工智能成为计算机技术的新方向,涵盖自动驾驶、智能机器人、语音识别等应用。该领域对人才的需求持续增长,是计算机专业的一个热门方向。数据科学与大数据分析:随大…...
《web应用技术》第十一次作业
1、验证过滤器进行权限验证的原理。 代码展示: Slf4j WebFilter(urlPatterns "/*") public class LoginCheckFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) thro…...
Scala学习笔记11: 操作符
目录 第十一章 操作符1- 标识符2- 中置操作符3- 一元操作符4- 赋值操作符5- 操作符的优先级6- 结合性7- apply和update方法8- 提取器end 第十一章 操作符 在Scala中, 操作符是用来执行特定操作的符号或符号组合 ; Scala允许开发人员自定义操作符, 这些操作符可以是字母、数字…...
项目五串行通信系统 任务5-3温度信息上传
任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。 底层文件: /********************************************* ds18b20底层函数:能完成一次温度数据读取 ***************************…...
前端 JS 经典:统一 Vite 中图片转换逻辑
在 Vue Vite 项目中有这样一段代码如下,引入了两个图片,一大一小。然后 console 出来引入结果。 import bigImg from "./assets/big.png"; import smallImg from "./assets/small.png";console.log(bigImg); console.log(smallImg…...
DOM-获取元素
获取元素的方法: 方法一:根据id获取元素document.getElementById <div id"time">2024-6-4</div> 在script标签中:注意getElementById括号里面必须要有引号,获得的是对象类型 var timer document.getEle…...
【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】
安装笔记-系列文章目录 安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 文章目录 安装笔记-系列文章目录安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 前言一、软件介绍名称:cpolar极点云主页官方介绍 二、安装步骤测试版本:openwrt-…...
红河北京网站建设/十大营销手段
出处:http://www.cnblogs.com/SmartBizSoft/archive/2008/12/21/1359138.html 同比和环比计算是企业应用、电子商务应用中常用的计算方法,也是常用的数据分析手段。写这篇文章也是因为最近在学习MDX相关的一些计算方法的同时回想到原来我在项目中使用过的…...
wordpress主题 标签/广告主资源哪里找
多列-column-rule-style列之间规则的样式 微信小程序交流群:111733917 | 微信小程序从0基础到就业的课程:https://edu.csdn.net/topic/huangjuhua 通用语法 定义和用法 column-rule-style 属性规定列之间的样式规则。 默认值: none 继承性&a…...
三联网站建设价格/企业培训计划方案
今天总结一个关于事件处理程序的小细节。首先回顾一下事件处理的一些概念。 JS中的事件处理(事件绑定)就是让某种或某些事件触发某些活动。有两种常见的形式,分别是DOM Level 0 和DOM Level 2。这两种方式最大的区别就在于DOM 0级事件处理只能…...
可以免费做推广的网站/广告推广软文案例
Node.js下载地址Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/最新版本为Node.js v12.16.1 LTS,你根据不同的平台系统选择需要的Node.js 安装包。 如下图所示:在Windows系统上安装Node首先双击下载好的安装包node-v12.16.…...
wordpress wp super/查排名的网站
本文介绍在Linux操作系统中的Fsck命令,使用它来修复损坏的文件系统、修复Root(根)文件系统、在启动时检查文件系统,包括介绍fstab选项。fsck(文件系统检查)是一种命令行实用程序,可让你在一个或多个Linux文件系统上执行一致性检查和交互式修复…...
做网站云服务器2m宽带够用吗/网络营销推广公司名称
前言 源码版本是B站UP:霹雳啪啦的yolov3版本 https://github.com/WZMIAOMIAO/deep-learning-for-image-processing 主要讲解NMS,scale_coords,draw_box三个部分的源码解析 NMS源码我单独发了一篇博客:YoloV3-SPP NMS源码详解 预测模块 源码 import os import js…...