云南大学软件学院ups物流数据库期末大作业(含代码和测试结果)
- 格式:docx
- 大小:747.34 KB
- 文档页数:25
本科学生综合性实验报告课程名称:数据库系统原理项目成员孙钰雷付欢匡雄潘丽娟许毅刘国靖班级计算机131实验项目名称物流系统数据库设计指导教师万常选开课学期2015 至2016 学年第一学期完成时间2015 年11 月 1 日目录1 需求分析 (1)1.1 背景说明 (1)1.2 系统目标与系统边界 (1)1.3 功能需求分析 (1)1.3.1 系统的功能描述 (1)1.3.2 系统总体功能图 (2)1.3.3 主要业务流程描述 (2)1.4 数据需求及业务规则分析 (1)1.4.1 数据需求描述 (1)1.4.2 数据字典............................................................................. 错误!未定义书签。
1.4.3 业务规则描述 (1)1.4.4 完整性约束规则描述 (1)2 概念设计 (2)2.1 确定基本实体集 (2)2.1.1 发现基本实体集 (2)2.1.2 定义基本实体集(数据字典) (2)2.2 局部概念建模 (4)2.2.1 XXX业务的局部概念建模 (4)2.2.2 XXX业务的局部概念建模 (7)2.3 概念模型(E-R图) (7)2.3.1 概念模型(总E-R图) (9)2.3.2 检查是否满足需求 (9)2.3.3 改进的E-R图 (10)3 逻辑设计 (10)3.1 关系数据库模式设计 (10)3.2 关系数据库模式优化 (11)3.3 完整性约束的说明 (13)4 物理设计 (14)4.1 确定数据库的存储结构 (14)4.2 确定数据库的存取方法 (14)5 数据库应用与安全设计 (14)5.1 数据库脚本 (14)5.2 数据库完整性设计 (14)5.3 数据库安全性设计 (14)5.4 存储过程设计 (15)6 数据库应用开发 (15)I1 需求分析1.1 背景说明现代快递企业无论大小都是使用信息系统作为平台为客户提供服务。
(2021年)云南省昆明市全国计算机等级考试数据库技术测试卷(含答案) 学校:________ 班级:________ 姓名:________ 考号:________一、1.选择题(10题)1. 关系数据库中,实现实体之间的联系是通过表与表之间的A.公共索引B.公共存储C.公共元组D.公共属性2. 线性表采用链式存储时,其地址______。
A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续与否均可以3. 关系中的“主码”不允许取空值是指______约束规则。
A.实体完整性B.引用完整性C.用户定义的完整性D.数据完整性4. 在Oracle工具中,用于支持数据仓库应用的是A.Oracle Discoverer/2000B.Oracle Designer/2000C.Oracle Developer/2000D.Oracle Financials5.支持程序浮动的地址转换机制是()A.页式地址转换B.段式地址转换C.静态重定位D.动态重定位6. 在数据库逻辑结构设计中,将E—R模型转换为关系模型应遵循相应原则。
对于三个不同实体集和它们之间的一个多对多联系,最少应转换为多少个关系模式?A.2B.3C.4D.57. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句ALTER TABLE实现哪类功能?A.数据查询B.数据操纵C.数据定义D.数据控制8. 数据库的数据独立性是指( )。
A.不会因为数据的数值变化而影响应用程序B.不会因为系统数据存储结构和逻辑结构变化而影响应用程序C.不会因为存储策略的变化而影响存储结构D.不会因为某些存储结构的变化而影响其他存储结构9. 文件系统中采用二级文件目录可以( )。
A.减少文件占用的磁盘空间B.实现文件共享C.解决不同用户间文件名冲突D.实现文件保护10. 下列对于SQL的说法,错误的是( )。
A.SQL在1987年被ISO组织采纳,作为国际标准B.SQL既是嵌入式语言,又是文本标记语言C.SQL采取一次一集合的方式操作数据,而主语言大多是一次一纪录方式D.SQL集数据定义语言、数据操纵语言和数据控制语言于一体二、填空题(10题)11.局域网所使用的传输介质主要有双绞线、___________、光纤、无线通信信道。
章1:1、自然演化体系存在3个问题●数据可信性。
●生产率。
●数据转化为信息的不可行性2、数据可靠性问题的5个原因●数据无时基。
●数据算法上的差异。
●抽取的多层次。
●外部数据问题。
●无起始公共数据源3、体系化结构中的俩种数据及其区别●原始数据是维持企业日常运作所需的细节性数据;导出数据是要经过汇总或计算来满足公司管理者需要的数据。
●原始数据可以更新;导出数据可以重新计算得出,但不能直接进行更新。
●原始数据主要是当前值数据;导出数据通常为历史数据。
●原始数据由以重复方式运行的过程操作;导出数据有启发式而非重复的运行的程序与过程操作。
●操作型数据是原始的;DSS数据是导出的。
●原始数据支持日常工作;导出数据则支持管理工作。
4、体系化结构四个层次要点:名字、特点、时间跨度、data用途、应用领域(服务对象)●操作层:细节的日常的当前值的访问频繁的面向应用的●原子/数据仓库层:大部分是粒度化数据随时间变化的集成的面向主题一些汇总●部门层:领域狭隘一些导出数据;一些原始数据典型的部门:财务、市场、工程、保险、制造●个体层:暂时的为特定目的的启发式的非重复的基于PC和工作站的5、传统软件开发生命周期与数据仓库开发生命周期传统的S D L C• 收集需求• 分析• 设计• 编程• 调试• 集成• 实现requirement-driven需求驱动的、瀑布式模型数据仓库S D L C• 实现数据仓库• 集成数据• 检验偏差• 针对数据编程• 设计D S S系统• 分析结果• 理解需求数据驱动的、螺旋式模型章2:1、数据仓库定义数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持管理人员的决策。
2、元数据定义数据的所有者、数据的提供方式等有关的信息(是关于数据的数据)3、粒度带来的优势及定义定义:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。
细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。
云南大学软件学院实验报告课程:数据库概论任课教师:包崇明姓名:学号:专业:成绩:实验5 数据查询-基于CAP数据库完成教科书第三章如下习题(SQL语句及结果截屏):[3.2]b: select aid from AGENTS where [percent] >=all(select MAX([percent]) from AGENTS)截图:[3.5]:select aid,cid from AGENTS A,CUSTOMERS C where aid not in (select aid from ORDERS X where X.cid=C.cid and X.aid=a.aid) order by aid,cid截图:[3.8]a:注意:中文版教材翻译有误,应该是求每个顾客在他购买的所有产品中的最大花费值,参考英文原版select cid,pid,MAX(dollars)as MAXSPENTfrom ORDERSgroup by cid,pid,dollars截图:[3.8]b:select AVG (MAXSPENT) as AVERAGEfrom (select cid,pid,MAX(dollars) as MAXSPENTfrom ORDERSgroup by cid,pid,dollars)as x group by cid截图:[3.11]b:需要先求出按cid,pid分组的qty均值,并完整数据截图;其次,本题中最小qty均值修改为900select cid,pid,AVG(qty) as AVGQTYfrom ORDERSgroup by cid,pid,qty截图:select cid from(select cid,pid,AVG(qty) as AVGQTYfrom ORDERS group by cid,pid,qty)as x where AVGQTY > 900截图:[3.11]d: select aid from ORDERSwhere cid IN(select cidfrom CUSTOMERSwhere city = 'Duluth' or city = 'Kyoto')截图:[3.11]f: select pid from ORDERSwhere cid IN(select cidfrom CUSTOMERSwhere city = 'Dallas')截图:[3.11]h: delete from AGENTS where aname = 'Gray' 截图:INSERT INTO AGENTS(aid,aname,city,[percent]) values('a04','Gray','New york',6)截图:[3.11]j: update PRODUCTSset price = 1.1*pricewhere city = 'Duluth' or city = 'Dallas'截图:[3.11]k:select cid,sum(dollars) as totalDollars from ORDERS where aid = 'a04'group by cid截图:[3.11]l: select aid,[percent] from AGENTS a where not exists(select cid from CUSTOMERS cwhere city = 'Duluth' and not exists(select o.cid from ORDERS owhere o.cid = c.cid and a.aid = o.aid))order by [percent]截图:。
云南大学软件学院实验报告课程:数据库原理与实用技术实验学期: 2012-2013学年第二学期任课教师:专业:学号:姓名:成绩:实验4 数据查询一、实验目的理解T-SQL语言的使用;熟练掌握数据查询语句;掌握合计函数的使用。
二、实验内容1、CAP数据库的查询(记录每个查询的SQL语句和查询结果)(1)建立CAP数据库,输入C、A、P、O四张表;图表 1 创建cap数据库图表 2创建四个表图表 3向表中插入数据图表 4表的内容(2)完成课后习题[3.2]b、[3.5]、[3.8]a,b、[3.11]b,f,j,l[3.2] (b)Retrieve aid values of agents who receive the maximum percent commission.图表 5最高佣金百分率[3.5] Consider the problem to find all (cid, aid) pairs where the customer does not place an order through the agent. This can be accomplished with the Select statementselect cid, aidfrom customers c. agents awhere not exists(select * from orders x where x.cid = c.cid and x.aid =a.aid) ;Is it possible to achieve this result using the NOT IN predicate in place of the NOT EXISTS predicate with a single Subquery? With more than one Subquery? Explain your answer and demonstrate any equivalent form by execution.图表 6 3.5 not in[3.8](a) Write a Select statement with no WHERE clause to retrieve all customer cids and the maximum money each spends on any product. Label the columns of the resulting table: eid, MAXSPENT.图表 7 3.8(b) Write a query to retrieve the AVERAGE value (over all customers) of the MAXSPENT of query (a)图表 8 3.8(b)[3.11] (b) We say that a customer x orders a product y in an average quantity A if A is avg(qty) for all orders rows with cid = x and pid = y. Is it possible in a single SQL statement to retrieve cid values of customers who order all the products that they receive in average quantities (by product) of at least 300?图表 9 3.11 (b)(f) Get pid values of products that are ordered by all customers in Dallas.图表 10 3.11 (f)(j) Use a single Update statement to raise the prices of all products warehoused in Duluth or Dallas by 10%. Then restore the original values byrerunning the procedure that you originally used to create and load the products table.图表 11 3.11 (j)(l) Write an SQL query to get aid and percent values of agents who take orders from all customers who live in Duluth. The aid values should be reported in order by decreasing percent. (Note that if percent is not retrieved in the select list, we cannot order by these values.)图表 12 3.11 (i)2、Employee数据库的查询(记录每个查询的SQL语句和查询结果)(1)向表中插入数据。
云南大学软件学院数据结构实验报告2010秋季学期(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)学号:姓名:专业:指导老师:实验难度A□B□ C □承担任务(难度为C时填写)指导教师评分(签名)【实验题目】实验2. 线性表及其应用【问题描述】用C或C++语言设计并实现一个一元稀疏多项式的简单计算器。
【基本要求】一元稀疏多项式简单计算器的基本功能是:1、输入并建立多项式2、输出多项式,序列按指数降序排列3、多项式A(x)和B(x)相加,并建立多项式A(x)+B(x)4、多项式A(x)和B(x)相减,并建立多项式A(x)-B(x)5、给定 x 的值,计算多项式6、多项式A(x)和B(x)相乘,建立多项式A(x)*B(x) (* 选做,作为难度B的操作)【CDIO项目要求】1、有完整的CDIO四个阶段描述2、有友好美观的操作界面3、有软件使用说明或帮助文档4、项目成员分工明确,团结协作【实现提示】一、【实验构思(Conceive)】(10%)本实验通过C语言实现了多项式加法、减法、乘法、多项式求导、多项式积分的功能。
利用了冒泡排序的算法作为排序的核心算法。
运用了高等数学中多项式的求导积分的知识。
二、【实验设计(Design)】(15%)本程序定义了抽象数据结构listnode,用于存储多项式的系数和指数并存储指向下一个listnode的指针来构成链表。
本程序包含如下*个函数:Main函数:调用input函数—>调用bubble_sort函数—>调用operplus函数—>调用oper_minus函数—>调用oper_mul函数—>调用oper_dy函数—>调用oper_jifen 函数。
Oper_plus函数:将两个链表的相应项系数相加,指数不同项不操作,存入新链表,再调用排序算法,使之为降序排列。
Oper_minus函数:将两个链表的相应项系数相减,指数不同项不操作,存入新链表,再调用排序算法,使之为降序排列。
【2023年】云南省昆明市全国计算机等级考试数据库技术测试卷(含答案) 学校:________ 班级:________ 姓名:________ 考号:________一、1.选择题(10题)1. 数据库管理系统有3个主要成分,分别是A.存储管理器、缓冲区管理器和事务管理器B.存储管理器、查询处理器和恢复管理器C.存储管理器、查询处理器和事务管理器D.缓冲区管理器、查询处理器和并发控制管理器2. 设线性表的顺序存储结构中,每个元素占用1个存储单元,表的第一个元素的存储地址为d,则第i个元素(1≤i≤n,n为表长)的存储地址为( )。
A.d+(i-1)1B.d+ilC.d+(i+1)1D.d+il-13.典型的局域网可以看成由以下三部分组成:网络服务器、工作站与()。
A.IP地址B.通信设备C.TCP/IP协议D.网卡4. 数据库管理技术的发展是与计算机技术及其应用的发展联系在一起的,经历了由低级到高级的发展过程。
分布式数据库、面向对象数据库等新型数据库是属于________发展阶段的。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.高级数据库技术阶段5. 20世纪90年代,随着网络技术的发展,哪一种结构的数据库系统成为主流?A.客户机/服务器B.并行C.分布式D.网络6. 在学生选课表(SC) 中,查询选修了3号课程(课程号CH)的学生的学号(XH)及其成绩(GD) 。
查询结果按分数的降序排列。
实现该功能的正确SQL语句( )。
A.SELECR XH,GD FROM SC WHERE CH='3' ORDER BY GD DESC:B.SELECT XH,GD FROM SC WHERE CH='3' ORDER BY GD ASC;C.SELECT XH,GD FROM SC WHERE CH='3'GROUP BY GD DESC;D.SELECT XH,GD FROM SC WHERE CH='3' GROUP BY GD ASC;7.下列有关操作系统的叙述中,不正确的是()。
2022年云南大学滇池学院数据科学与大数据技术专业《数据库系统原理》科目期末试卷A(有答案)一、填空题1、关系规范化的目的是______。
2、DBMS的完整性控制机制应具备三个功能:定义功能,即______;检查功能,即______;最后若发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
3、SQL Server中数据完整性包括______、______和______。
4、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和______。
5、____________和____________一起组成了安全性子系统。
6、从外部视图到子模式的数据结构的转换是由______________实现;模式与子模式之间的映象是由______________实现;存储模式与数据物理组织之间的映象是由______________实现。
7、若事务T对数据对象A加了S锁,则其他事务只能对数据A再加______,不能加______,直到事务T释放A上的锁。
8、使某个事务永远处于等待状态,得不到执行的现象称为______。
有两个或两个以上的事务处于等待状态,每个事务都在等待其中另一个事务解除封锁,它才能继续下去,结果任何一个事务都无法执行,这种现象称为______。
9、数据仓库是______、______、______、______的数据集合,支持管理的决策过程。
10、有两种基本类型的锁,它们是______和______。
二、判断题11、投影操作是对关系表进行水平方向的分割。
()12、在SQL中,ALTERTABLE语句中MODIFY用于修改字段的类型和长度等,ADD用于添加新的字段。
()13、在数据库恢复中,对已完成的事务进行撤销处理。
()14、等值连接与自然连接是同一个概念。
()15、在综合分E-R图时,会出现属性冲突,结构冲突,命名冲突。
()16、在关系模式中,主码和候选码可以有多个。
云南大学软件学院数据结构实验报告(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □学期:2012秋季学期任课教师:实验题目: 树及其应用小组长:联系电话:完成提交时间:2012年12月10日云南大学软件学院2012学年秋季学期《数据结构实验》成绩考核表学号: 20111120 姓名:本人承担角色:小组长综合得分:(满分100分)指导教师:年月日(注:此表在难度为C时使用,每个成员一份。
)云南大学软件学院2012学年秋季学期《数据结构实验》成绩考核表学号: 20111120 姓名:人承担角色:组员综合得分:(满分100分)指导教师:年月日(注:此表在难度为C时使用,每个成员一份。
)一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)本实验要求设计一个哈夫曼编码译码器,要求通过统计一段电文中的各字符频率编写哈夫曼码并进行翻译。
首先要解决如何进行哈夫曼编码,然后设计对电文进行编码,最后还有有译码过程。
本程序使用二叉树进行哈夫曼编码,使用文本文档保存电文处理。
利用程序设计的相关知识:贯彻设计程序所必需的五大步骤,目标分析->设计算法->程序编写->后期调试->售后服务的流程完成这个项目。
利用算法设计相关知识:该算法具有有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出、正确性、可读性、健壮性的特性。
离散数学相关知识:正确合理使用与或非之间的关系,进行程序分支判断,保证程序正常进行,以及二叉树的使用。
二、【实验设计(Design)】(20%)本次实验使用C进行编写,自定义函数7个:void SortHufmtree(hufmtree *tree){//将哈夫曼树n个叶子结点由大到小排序Codetype* HuffmanCode(hufmtree *tree){//哈弗曼编码的生成hufmtree* BuildHuffmanTree(hufmtree *tree){//构建叶子结点已初始化的哈夫曼树hufmtree* CreateHuffmanTreeFromSourceFile(){//通过解析源文件建立哈夫曼树hufmtree* Encoding(hufmtree *tree){//对源文件进行编码并保存hufmtree* Decoding(hufmtree *tree)//对存有编码的源文件进行译码并保存主函数为功能选择界面三、【实现描述(Implement)】(30%)主函数显示开始界面,选择相应的功能进行哈夫曼编码译码。
2022年云南大学计算机科学与技术专业《数据库原理》科目期末试卷A(有答案)一、填空题1、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。
2、在SQL Server 2000中,某数据库用户User在此数据库中具有对T 表数据的查询和更改权限。
现要收回User对T表的数据更改权,下述是实现该功能的语句,请补全语句。
_____UPDATE ON T FROM User;3、主题在数据仓库中由一系列实现。
一个主题之下表的划分可按______、______数据所属时间段进行划分,主题在数据仓库中可用______方式进行存储,如果主题存储量大,为了提高处理效率可采用______方式进行存储。
4、数据模型是由______________、______________和______________三部分组成。
5、从外部视图到子模式的数据结构的转换是由______________实现;模式与子模式之间的映象是由______________实现;存储模式与数据物理组织之间的映象是由______________实现。
6、安全性控制的一般方法有____________、____________、____________、和____________视图的保护五级安全措施。
7、数据仓库主要是供决策分析用的______,所涉及的数据操作主要是______,一般情况下不进行。
8、在RDBMS中,通过某种代价模型计算各种查询的执行代价。
在集中式数据库中,查询的执行开销主要包括______和______代价。
在多用户数据库中,还应考虑查询的内存代价开销。
9、以子模式为框架的数据库是______________;以模式为框架的数据库是______________;以物理模式为框架的数据库是______________。
10、已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是______________,系关系的外码是______________,学生关系的主码是______________,外码是______________。
云南大学软件学院实验报告学期:2014年春季学期指导教师: 张璇、刘宇实验题目: UPS数据库小组长:联系电话:电子邮件:日期:2014年6月18日一、角色分析:1. 客户:客户是形成邮件信息以及智慧标签内容的信息来源:包括发人的名字(昵称),电话,地址,包括收件人的名字、电话、地址,客户提供完整的邮件信息之后,系统将自动为它生成一个运货单号和智慧标签,作为邮件查询以及配送的向导。
同时,发件人有跟踪物流信息的权限,发件人只要在优比速使用过一次物流服务,他就理应成为优比速的客户,另外客户可能在不同时间处于发件人或收件人的身份,发件人发出的物品一旦开始派送就不允许再修改运单号、发件人、和收件人信息。
用户若想取消发件也必须在一定的时间限制之内。
收件人一旦签收则表示邮递服务基本结束,客户可以对物流服务进行评价,反馈和投诉等,但与该次邮递服务无关。
2.管理人员:拥有对整个数据库的最高权限,负责对不能录入或者扫描错误的邮件信息进行及时的补充。
也能对ups数据库进行删除,修改,插入,查询等操作。
还有实时监督货运状态的权限。
3.处理员工:负责收集邮件的信息:包括邮件的收件人信息、发件人信息,邮件的类型定位,递送时限以及邮件的运输工具。
这些信息将用来作为自动化机器生成智慧标签的信息来源;员工还将负责对邮件的下一站目的地进行确定以及给邮件贴上智慧标签。
同时,在邮件的中转站,员工还负责将邮件的物流信息及时返还到数据库中。
员工在分发邮件的时候将唯一确定由系统为邮件分配的运单号。
员工的订单处理量和员工的薪酬有着直接的关系。
4.自动化机器:自动化机器负责将员工收集的邮件信息打包自动生成一张含有二维码、条形码的智慧标签。
在贴上智慧标签的邮件经过自动化机器的扫描仪扫描之后,系统将自动地将相应的数据写入到数据库中或者将数据库中与之对应的信息调出来。
二、设计来源:1.应用背景:当今世界经济发展呈现出全球化和市场化的两大趋势。
经济发展,科技进步和信息革命,将世界带入前所未有的全球化时代。
集物流,信息流和资金流于一身的物流配送中心,在这全球化和市场化的时代里,又进一步促进了世界经济与贸易的发展。
UPS物流配送管理系统专注于商品的到货,发货,保、搬运、运输等作业的计划、控制和反馈过程的信息搜集、汇总、查询和分析,达到提高物流配送效率、降低物流成本的目的。
可以说是全球最好的物流管理系统之一。
深刻了解ups系统有助于我们更好的学习数据库知识以及将知识与实践结合起来。
参考资料:UPS优比速快递流程纪录片,通过观看纪录片以及网上资料和生活实际来学习ups物流管理系统。
2.功能需求:登陆功能:数据库是需要有一定权限的人才能对其进行操作,所以必须对员工和管理员设置密码,以方便再验证密码和身份之后登陆数据库。
统计功能:数据库中的数据和ups的运营状态和员工的工作量有着密切的关系,和用户也密切相关,只有能够将这些数据统计出来,管理员才能更好的确定下一步的策略一级每位员工的工资等等,统计功能还包括对邮件所经过的中转站的统计以及路线的统计,邮件信息的统计等等。
查询功能:即通过运单号或者邮件id查询运单的运送状态,经过的站点和经手的员工,对货物的运送监控是很重要的,因为管理员和发件人都理应时刻监控邮件的运送状态。
跟踪:各物流中心应该能够反馈物流到达的中转站信息并能将数据填填充到数据库中去。
签收功能:当用户发的邮件发出后订单信息就不能随便修改,也不能随便撤销。
邮件被签收标志着寄送服务的结束,用户可以对ups的工作人员进行评价,反馈及投诉等。
同步更新数据:发件人和收件人在消费一次快递业务之后,就理应成为ups的一个客户,他们的信息会被保存在数据库中。
三、模型生成:1.E-R图:E-R图是根据实体之间的关系图设计做出来的反应试题之间关系的一种概念模型,根据E-R图可以用powerdesign自动转换成物理关系模型并导出数据库,下面是我们设计并经过规范化的E-R图对E-R图设计的一些思路:1.以订单为中心,将邮件的信息放在智慧标签中,并通过邮件和运货单联系起来,在运货单中包含着运货单号,发送时间,签收时间。
运货单还分别于员工,客户,发件人,收件人以及运输路线相关联。
2.在运输路线中,我们通过统计邮件到达的站和下一个站的方式来确定路线,这样的做法是结合了现实生活中通过单号查询邮件的经验和以及考虑到用户期望得到的信息设计的,每一次的转运我们都把到站的具体时间、地点以及下一站,运输工具,还有处理的员工展示给客户。
在这里,客户可以通过对这个实体的信息的检索查询到邮件的信息。
3.在中转站这个实体中记录了中转站的基本信息,其中包括运送的状态,有异常的情况用户可以在这个实体中检索到,通国运单号追踪邮件经过的中转站可以确实的反应运送中的每个细节,也可以真实的反应出运输的路线。
4.在客户之外还分别设置了发件人和收件人两个实体,主要是为了方便客户信息的存储与更新。
实际应用中如果是老客户,则只需要将客户中的信息提取出来放入智慧标签中即可。
2.物理关系模型:转换来的物理模型:四、使用PowerDesigner 生成的脚本语言生成数据库:创建数据库的代码如下:/*==============================================================*/ /* DBMS name: Microsoft SQL Server 2008 *//* Created on: 2014-6-20 2:12:51 *//*==============================================================*/if 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 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 sysindexeswhere id = object_id('收件人')and name = '邮件的收件人2_FK'and indid > 0and indid < 255)drop index 收件人.邮件的收件人2_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 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 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 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 运货单.处理运单的员工_FKif 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 sysobjectswhere id = object_id('运输路线')and type = 'U')drop table 运输路线goif exists (select 1from sysobjectswhere id = object_id('部门')and type = 'U')drop table 部门go/*==============================================================*/ /* Table: 中转站*//*==============================================================*/ create table 中转站(station_id char(20) not null,covery_id char(20) null,station_name char(20) not null,station_adress char(40) not null,station_phone char(11) not null,covery_status varchar(20) not null,constraint PK_中转站primary key nonclustered (station_id))/*==============================================================*/ /* Index: 邮件会经过多个中转战_FK *//*==============================================================*/ create index 邮件会经过多个中转战_FK on 中转站(covery_id ASC)go/*==============================================================*/ /* Table: 发件人*//*==============================================================*/ create table 发件人(sender_id char(20) not null,sender_name char(20) not null,sender_address varchar(30) not null,sender_phone char(11) not null,constraint PK_发件人primary key nonclustered (sender_id))go/*==============================================================*/ /* Table: 员工*//*==============================================================*/ create table 员工(stuff_id char(20) not null,dep_id char(20) null,manager_id char(20) null,stuff_name char(20) not null,stuff_address varchar(30) not null,stuff_phone char(11) not null,stuff_password char(20) not null,constraint PK_员工primary key nonclustered (stuff_id))go/*==============================================================*/ /* Index: 管理员管着员工_FK *//*==============================================================*/ create index 管理员管着员工_FK on 员工(manager_id ASC)go/*==============================================================*/ /* Index: 员工所属的部门_FK */ /*==============================================================*/ create index 员工所属的部门_FK on 员工(dep_id ASC)go/*==============================================================*/ /* Table: 客户*//*==============================================================*/ create table 客户(user_id char(20) not null,user_name char(20) not null,user_address varchar(30) not null,user_photo char(11) not null,constraint PK_客户primary key nonclustered (user_id))go/*==============================================================*/ /* Table: 收件人*//*==============================================================*/ create table 收件人(receiver_id char(20) not null,post_id char(20) null,receiver_name char(20) not null,receiver_addr varchar(30) not null,receiver_code char(10) not null,receiver_pho char(11) not null,constraint PK_收件人primary key nonclustered (receiver_id))go/*==============================================================*/ /* Index: 邮件的收件人2_FK */ /*==============================================================*/ create index 邮件的收件人2_FK on 收件人(post_id ASC)go/*==============================================================*/ /* Table: 智慧标签*//*==============================================================*/ create table 智慧标签(lab_id char(20) not null,post_id char(20) null,post_weight float not null,post_limtime char(10) not null,post_type char(10) not null,fcus_code char(10) not null,post_cost float not null,constraint PK_智慧标签primary key nonclustered (lab_id))go/*==============================================================*/ /* Index: 智慧标签里含有邮件的信息2_FK *//*==============================================================*/ create index 智慧标签里含有邮件的信息2_FK on 智慧标签(post_id ASC)go/*==============================================================*/ /* Table: 管理员*//*==============================================================*/ create table 管理员(manager_id char(20) not null,manager_name char(20) not null,manager_pho char(11) not null,manager_pwd char(20) not null,manager_adress char(30) null,constraint PK_管理员primary key nonclustered (manager_id))go/*==============================================================*/ /* Table: 运货单*//*==============================================================*/ create table 运货单(post_id char(20) not null,stuff_id char(20) null,receiver_id char(20) null,user_id char(20) null,sender_id char(20) null,lab_id char(20) null,covery_id char(20) null,post_sendtime char(20) not null,post_receivetime datetime not null,constraint PK_运货单primary key nonclustered (post_id))go/*==============================================================*/ /* Index: 处理运单的员工_FK *//*==============================================================*/ create index 处理运单的员工_FK on 运货单(stuff_id ASC)go/*==============================================================*/ /* Index: 智慧标签里含有邮件的信息_FK *//*==============================================================*/ create index 智慧标签里含有邮件的信息_FK on 运货单(lab_id ASC)go/*==============================================================*/ /* Index: 用户_FK *//*==============================================================*/ create index 用户_FK on 运货单(user_id ASC)go/*==============================================================*/ /* Index: 邮件的发件人_FK *//*==============================================================*/ create index 邮件的发件人_FK on 运货单(sender_id ASC)go/*==============================================================*//* Index: 运单的运输路线_FK */ /*==============================================================*/ create index 运单的运输路线_FK on 运货单(covery_id ASC)go/*==============================================================*/ /* Index: 邮件的收件人_FK *//*==============================================================*/ create index 邮件的收件人_FK on 运货单(receiver_id ASC)go/*==============================================================*/ /* Table: 运输路线*//*==============================================================*/ create table 运输路线(covery_id char(20) not null,post_id char(20) null,covery_nowstation varchar(30) not null,covery_cometime varchar(30) not null,covery_nextstation char(20) not null,covery_tool varchar(20) null,covery_stuff varchar(30) not null,constraint PK_运输路线primary key nonclustered (covery_id))go/*==============================================================*/ /* Index: 运单的运输路线2_FK */ /*==============================================================*/ create index 运单的运输路线2_FK on 运输路线(post_id ASC)go/*==============================================================*/ /* Table: 部门*//*==============================================================*/ create table 部门(dep_id char(20) not null,dep_name char(20) not null,dep_manager char(20) not null,dep_phone char(11) not null,constraint PK_部门primary key nonclustered (dep_id))go五、应用在sql sever2008中生成的数据库六、完整性约束:(1).用存储过程实现员工的登陆验证:代码如下:creat proc 员工登录@emp_id char(50),@emp_pswd char(50)asif exists(select * from 员工where stuff_name=@emp_id and stuff_password=@emp_pswd) print '登陆成功'if exists(select * from 员工where stuff_name!=@emp_id and stuff_password!=@emp_pswd)print '用户名不存在'if exists(select * from 员工where stuff_name=@emp_id and stuff_password!=@emp_pswd)print '您输入的密码错误'if exists(select * from 员工where stuff_name!=@emp_id and stuff_password!=@emp_pswd)print '用户名不存在'执行结果截图:验证:1.插入一条记录:其中迟学成是员工,123508是密码2.登陆成功的情况3.密码错误的情况:4.用户不存在的情况:(2)用存储过程统计员工的工作量,以运单处理量为唯一标准:代码如下:create proc 员工工作量asselect s.stuff_id,dep_id,stuff_name,COUNT(c.post_id) as stuff_work from 员工s,运货单cwhere s.stuff_id=c.stuff_idgroup by s.stuff_id,dep_id,stuff_name执行结果:验证:插入一个运货单:执行存储过程:显示出了全体员工的工作量以及每个员工的详细信息。