哈理工数据库课程设计销售模块.docx
《哈理工数据库课程设计销售模块.docx》由会员分享,可在线阅读,更多相关《哈理工数据库课程设计销售模块.docx(34页珍藏版)》请在冰豆网上搜索。
![哈理工数据库课程设计销售模块.docx](https://file1.bdocx.com/fileroot1/2023-2/22/87e43ce7-faef-48e3-90f9-4c876f13063f/87e43ce7-faef-48e3-90f9-4c876f13063f1.gif)
哈理工数据库课程设计销售模块
哈尔滨理工大学
数据库课程设计报告
班级:
信息11-
学号:
1106040
姓名:
指导教师:
2013.10
1.功能模块简介
1.1、进入安装程序
插入SQLServer2008R2安装光盘,自动运行后出现“SQLServer安装中心”。
在这里我们在本机安装一个SQLServer默认实例,所以执行以下步骤:
1、在左侧的目录树中选择“安装”。
2、在右侧的选择项中,选择第1项目“全新安装或向现有安装添加功能”,然后就进入了安装程序。
方法/步骤
1.2安装的准备过程
1、安装程序支持规则
在这个准备过程里,首先安装程序要扫描本机的一些信息,用来确定在安装过程中不会出现异常。
如果在扫描中发现了一些问题,则必须在修复这些问题之后才可能重新运行安装程序进行安装。
安装过程中,如果出现不能重启计算机这一项不能通过,则需要删除一个注册表项。
删除注册表中
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SessionManager
下PendingFileRenameOperations子键。
文件挂起操作的错误搞定,可以继续
下一步,输入产口密钥,许可条款,安装程序支持文件
2
1.3功能选择与配置
接下来,才是正式安装SQLServer程序。
1、安装程序支持规则
这个步骤看起来跟刚才在准备过程中的一样,都是扫描本机,防止在安装过程中出现异常。
现在并不是在重复刚才的步骤,从下图明显看出这次扫描的精度更细,扫描的内容也更多。
在这个步骤中,一定不要忽略“Windows防火墙”这个警告,因为如果在Windows2008操作系统中安装SQLServer,操作系统不会在防火墙自动打开TCP1433这个端口。
将在后面的文章中提到这个问题。
3
2、设置角色
这里有3个选项可供选择。
我们选择“SQLServer功能安装”。
4
3、功能选择
在这里,我们点一下“全选”按钮,会发现左边的目录树多了几个项目:
在“安装规则”后面多了一个“实例配置”,在“磁盘空间要求”后面多了“服务器配置”、“数据库引擎配置”、“AnalysisServices配置”和“ReportingServices配置”。
如果只做为普通数据引擎使用,我常常是只勾选:
“数据库引擎服务”和“管理工具-基本”
5
4、安装规则
在这里又要扫描一次本机,扫描的内容跟上一次又不同。
5、实例配置
我们这里安装一个默认实例。
系统自动将这个实例命名为:
MSSQLSERVER。
6、磁盘空间要求
从这里可以看到,安装SQLServer的全部功能需要5485MB的磁盘空间。
6
7、服务器配置
在这里,首先要配置服务器的服务帐户,也就是让操作系统用哪个帐户启动相应的服务。
为了省事,我们选择“对所有SQLServer服务使用相同的帐户”。
也可以选择,NTAUTHORITY\SYSTEM,用最高权限来运行服务。
接着,还要设备排序规则,默认是不区分大小写的按你的要求自行调整。
7
8、数据库引擎配置
数据库引擎的设置主要有3项。
帐户设置中,一般MSSQLSERVER都做为网络服务器存在,为了方便,都使用混合身份验证,设置自己的用户密码。
然后添加一个本地帐户方便管理即可。
目录和FILESTREAM没有必要修改。
对是数据目录,我是这样理解的,我习惯将软件都装在系统盘。
在使用SQLSERVER时,数据库文件都放在其他盘,然后附加数据,这样不会混乱自己的数据库和系统的数据库。
毕竟数据安全是第一。
8
后面的过程比较简单,一路下一步然后是等待安装完成即可。
在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。
如要把产品信息从现有的进销存管理系统中导入到ERP系统中,却让企业用户手工的输入这些信息,不怎么现实。
其实,在SQLServer中本来就集成了很多成批导入数据的方法。
有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟。
现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。
第一种方法:
使用SelectInto语句
若企业数据库都采用的是SQLServer数据库的话,则可以利用SelectInto语句来实现数据的导入。
SelectInto语句,他的作用就是把数据从另外一个数据库中查询出来,然后加入到某个用户指定的表中。
在使用这条语句的时候,需要注意几个方面的内容。
一是需要在目的数据库中先建立相关的表。
如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。
则前期是在ERP系统的数据库中已经建立了这张产品信息表。
二是这种方法只复制表中的数据,而不复制表中的索引。
如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。
则利用SelectInto语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。
三是这条语句使用具有局限性。
一般情况下,这只能够在SQLServer数据库中采用。
不过,对于SQLServer不同版本的数据库,如2008或者2003,还都是兼容的。
若需要导入的对象数据库不是SQLServer的,则需要采用其他的方法。
四是采用这条语句的话,在目的表中必须不存在数据。
否则的话,目的表中的数据会被清除。
也就是说,这个语句不支持表与表数据的合并。
在SQLServer中,有一条类似的语句,可以实现这个功能。
这条语句就是:
InsertInto。
他的作用就是把另外一张表中的数据插入到当前表中。
若用户想要的时表与表数据的合并,则可以采用这条语句。
两者不能够混淆使用,否则的话,很容易导致数据的丢失。
五是以上两条语句都支持兼容的不同类型的数据类型。
如在原标中,某个字段的数据类型是整数型,但是在目的表中这个字段的数据类型则是浮点型,只要这个两个数据类型本来就兼容的,则在导入的时候,数据库是允许的。
第二种方法:
利用Excel等中间工具进行控制
虽然第一种方法操作起来比较简单,但是其也有一些缺点。
如他只支持同一种类型的数据库;不能够对数据进行过多的干预等等。
一般情况下,若用户原数据准确度比较高,不需要过多的修改就可以直接拿来用的话,则笔者就已采用第一种方式。
但是,若在原数据库中,数据的准确度不是很高,又或者,有很多数据是报废的。
总之,需要对原数据库的数据进行整理,才能够使用的情况,笔者不建议先导入进去,再进行更改。
笔者在遇到这种情况时,喜欢利用Excle作为中间工具。
也就是说,先把数据中原数据库中导到Excle中。
有些数据库,如Oracle数据库,他不支持Excle格式。
但是,我们可以把它导为CSV格式的文件。
这种文件Excle也可以打得开。
然后,再在Excle中,对记录进行修改。
由于Excle是一个很强的表格处理软件,所以,其数据修改,要比在数据库中直接修改来得方便,来得简单。
如可以利用按时间排序等功能,把一些长久不用的记录清楚掉。
也可以利用替换等功能,把一些不规范的字符更改掉。
这些原来在数据库中比较复杂的任务,在Excle等工具中都可以轻松的完成。
等到表中的内容修改无误后,数据库管理员就可以把Excle表格中的文件直接导入到SQLServer数据库中。
由于SQLServer与Excel是同一个父母生的,所以,他们之间的兼容性很好。
在SqlServer中提供了直接从Excel文件中导入数据的工具。
虽然这要借助中间工具导入数据,但是,因为其处理起来方便、直观,所以,笔者在大部分时候都是采用这种方式。
第三种方式:
使用数据转换服务导入数据
数据转换服务是SQLServer数据库中提供的一个非常强大的工具。
在SQLServer中,数据转换功能有一个图形用户接口,用户可以在图形界面中导入数据,并对数据进行相应的编辑。
另外,数据转换服务还支持COM组件的编程接口。
这也就是说,在前台应用程序开发的时候,可以直接调用数据转换服务。
让用户通过前台应用系统,而不用在后台数据库系统进行任何的操作,就可以把数据导入数据库系统中去。
在前台对数据库系统进行导入,有一个明显的好处,就可以预先对数据的合法性进行检查。
如可以利用VB等
2.数据库表分析
2.1表1
调用ERP数据库操作步骤参考
步骤一:
打开数据库
步骤二:
找到帐套对应的数据库,这里是U8_300_Zhangtao;(不同的帐套数据库名不一样。
)
步骤三:
这里是用友软件中各个模块对应的表在数据库存放时的名称。
步骤四:
利用上面给出的表名,查询需要的表。
3.业务问题及SQL语句
SQL查询语句的设计:
Sno
Sname
Ssex
Sage
Sdept
01
张三
男
21
IS
02
李四
男
22
CS
03
李红
女
19
MA
04
王瑞
女
20
IS
Sno
Cno
Grade
01
1
90
01
3
99
01
2
90
03
2
97
03
3
98
Cno
Cname
Cpno
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
Cno
Cname
Cpno
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
1.查询每一门课的间接先修课
SELECTFIRST.Cno,SECOND.Cpno
FROMCourseFIRST,CourseSECOND
WHEREFIRST.Cpno=SECOND.Cno;
2.自然连接Student表和SC表
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent,Sno=SC.Sno;
3.查询在IS学习的同学
SELECTSno,Sname,Sdept
FROMStudent
WHERESdept=’IS’;
4.确定李红所在的系
SELECTSdept
FROMStudent
WHERESdept=’IS’;
5.查询选修2号课在90分以上的同学
SELECTStudent,Sno,Sname
FROMStudent,SC
WHEREStudent.Sno=SC.SnoANDSC.Cno=
‘2’ANDSC.Grade>=90;
6.查询选修了3号课程的学生成绩,并按降序排列
SELECTSno,Grade
FROMSCWHERECno=’3’
ORDERBYGradeDESC;
7.查询CS系年龄在20岁以下的学生
SELECTSname
FROMStudent
WHERESdept=’CS’ANDSage<20;
8.查询01号学生的具体情况
SELECT*
FROMStudent
WHERESnoLIKE‘01‘;
9.查询所有姓李学生的姓名,学号,和性别
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameLIKE’李’;
10.查询比IS系所有学生年龄都小的学生名单
SELECTSname,Sage
FROMStudent
WHERESage(SELECTSage
FROMStudent
WHERESdept=’IS’)
ANDSdept<>’IS’
ORDERBYSageDESC;
11.查询在信息系的学生及年龄不大于21岁的学生
SELECT*
FROMStudent
WHERESdept=’IS’
UNION
SELECT*
FROMStudent
WHERESage<=
19;
12.查询选修1号课的学生与选修2号课的学生差集
SELECTSno
FROMSC
WHERECno=’1’AND
SnoNOTIN
(SELECTSno
FROMSC
WHERECno=’2’);
13.查询选修了所有课程的学生姓名
SELECTSname
FROMStudent
WHERENOTEXISTS
(SELECT*
FROMCourse
WHERENOTEXISTS
(SELECT*
FROMSC
WHERESno=Student.Sno
ANDCno=Course.Cno));
14.查询未选修1号1课程的学生姓名
SELECTSname
FROMStudent
WHERENOTEXISTS
(SELECT*
FROMSC
WHERESno=Student.SnoANDCno=’1’);
15.查询选修1号课程的学生最高分
SELECTMAX(Grade)
FROMSC
WHERECno=’1’;
16.计算选修1号课程的学生的平均分
SELECTAVG(Grade)
FROMSC
WHERECno=’1’;
17.查询各个课程号与相应的选修课人数
SELECTCno,COUNT(Sno)
FROMSC
GROUPBYCno;
18.查询学生总数
SELECTCOUNT(*)
FROMStudent;
19.查询缺少成绩的学生的学号和课程号
SELECTSno,Cno
FROMSC
WHEREGradeISNULL;
20.查询DB-Design课程号和学分
SELECTCno,Ccredit
FROMCourse
WHERECnameLIKE’DB\_Design’ESCAPE’\’;
主码与外码的关系:
我们在建立数据库的时候,需要为每张表指定一个主码,主码也叫主键。
所谓主码就是在实体集中区分不同实体的候选码。
一个实体集中只能有一个主码,但可以有多个候选码。
必须注意两点:
1.主码的选择必须慎重。
例如:
人的姓名是不可以做主码的,因为可能有多个人重名,而身份证可以做主码。
2.主码的选择应该是那些从不或极少变化的属性。
例如:
一个人的地址就不应该作为主码的一部分,因为它很可能变化。
下面是主码与外码的应用举例:
eg:
某医院病房计算机管理中需要如下信息:
科室:
科名,科地址,科电话,医生姓名
病房:
病房号,床位号,所属科室名
医生:
姓名,职称,所属科室名,年龄,工作证号
病人:
病历号,姓名,姓名,性别,诊断,主管医生,病房号
其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只能属于一个科室,但可以负责多个病人的诊治,一个病人的主管医生只能有一个。
4.关系模式分析
4.1关系模式1
完成如下设计:
(1)设计E-R图
(2)讲E-R图转换为关系模型结构
要创建的两个数据表
4.2关系模式2
1.研究生信息表
表名:
scott.student。
表结构如表7.6所示。
4.3关系模式3
3.两个数据表的关系
导师信息表(scott.director)的主码“DIRECTOR_ID”是研究生信息表(scott.student)的外码。
也就是说,当导师信息表的“DIRECTOR_ID”字段发生变化时,研究生信息表的字段“DIRECTOR_ID”也会随之自动发生变化。
创建的步骤
1.创建导师信息表的步骤
(1)如图7.2所示界面。
(2)出现如图7.3所示的创建表的【一般信息】选项卡。
(3)切换到图7.4所示的创建表的【约束条件】选项卡。
在【类型】单元格下拉列表框中有5个选项,如表7.8所示。
(4)切换到图7.5所示的创建表的【簇列】选项卡。
(5)切换到图7.6所示的创建表的【分区】选项卡。
(6)切换到图7.7所示的创建表的【存储】选项卡。
(7)切换到图7.8所示的创建表的【存储】选项卡。
(8)切换到图7.9所示的创建表的【约束条件存储】选项卡。
(9)出现如图7.10所示界面。
(10)在【企业管理器】中可以查看创建的数据表,如图7.11所示。
(11)上述步骤创建scott.director数据表的SQL代码如下。
在创建主关键字约束条件时将自动建立该字段的索引。
(12)读者也可以在【SQLPlusWorksheet】中直接执行createdirector.sql文件创建数据表scott.director,如图7.12所示。
2.创建研究生信息表的步骤
(1)与创建导师信息表一样进行操作。
(2)在图7.13所示的创建表的【一般信息】选项卡中按照如下步骤进行配置。
(3)图7.14所示为创建表的主码的【约束条件】选项卡。
(4)图7.15所示为创建表的外码的【约束条件】选项卡。
(5)【簇列】、【分区】、【存储】和【选项】选项卡按照默认设置即可。
(6)图7.16所示的【约束条件存储】选项卡按照如下配置。
(7)系统将成功创建数据表scott.student。
对应的SQL代码如下。
【参见光盘文件】:
\第7章\createstudent.sql。
(8)读者也可以在【SQLPlusWorksheet】中直接执行createstudent.sql文件创建数据表scott.student,如图7.17所示。
(9)在【企业管理器】中可以查看建立的两个范例数据表,如图7.18所示。
5.表在功能模块中的应用
5.1功能应用1
1.进入客户订单页面:
进入主页面使用鼠标点击进入【销售】-【客户订单】-【订购基本资料】页面
5.2功能应用2
2.填写订单基本信息
5.3功能应用
3.编辑订购详细资料
用鼠标点击【销售】-【客户订单】-【订购详细资料】填写订购详细信息,然后点击确定,保存
5.4功能应用4
4.编辑产品的详细信息
【销售】-【客户订单】-【产品详细数据】,进入如下页面,进行编辑,然后确定,保存
5.5功能应用5
5.订单的其他数据
【销售】-【客户订单】-【产品详细数据】,点击【订单其他数据】,客供品明细就会直接展开,然后就可以进行编辑,删除作业。
5.6功能应用6
6.订单其他功能还有:
【审核】,【暂下制令】,【变更备档】等等
6.总结
通过这次作业,我知道了ERP的用途之广,作用之大,以及学好ERP的重要性,同时了解到ERP中有好多我们不曾知道的,潜藏的诸多功能,诸多应用,我非常感谢这次作业。