1、 数据库系统和技术课程设计 设计说明书及课程设计心得体会 课题: 汽车销售管理系统 学院: 土木工程学院 所在院系:交通运输专业 班级: 交运C101 小组组员: 106873冀星月 106888刘玉飞 106897姚叶飞 097082甄兴 小组组长:冀星月 指导老师:王小芳6月18日 目录一、 需求分析1二、 概要设计2 三、数据库设计3 四、安全性设计5 五、小 结14 六、谢 辞14 七、参考文件14一、需求分析需求分析简单地说就是分析用户要求。需求分析是设计该轿车销售系统数据库起点,即该阶段任务是经过具体调查该销售企业,充足了解原系统工作概况,明确用户多种需求,然后在此基础上确定新系统
2、功效。调查关键是数据和处理,经过调查、搜集和分析,取得用户对数据库以下要求:信息要求(厂商、用户、用户、职员、出库、入库等信息),处理要求(对上述信息查询、修改、添加和删除),安全性和完整性要求(需要用户名和密码才能进入系统,而且对于不一样用户有不一样操作权限)需求分析结果以下:汽车销售管理系统进货管理销售管理收益统计车辆销售车辆入库车辆采购用户信息进销存统计基础信息管理厂商信息车型信息仓库管理库存车辆仓库明细二、概要设计本阶段关键任务是将需求分析得到用户需求抽象为信息结构结构(即概念模型)设计概念结构通常有四类方法:自顶向下、自底向上、逐步扩张和混合策略。我在这里采取自底向上方法。概念设计结
3、果以下:(某企业轿车销售管理系统基础ER图)三、数据库设计1E-R图向关系模型转换由概念设计E-R图可得通常关系模型以下发货单(货单号,细节号,产品号,用户号,数量,日期,金额,折扣)收款单(用户号,定单号,收据号,收款金额,收款日期)定单(定单号,细节号,产品号,厂商号,数量,日期,金额)付款(厂商号,定单号,发票号,支付金额,支付日期)职员(职员号,姓名,性别,部门,职务,电话)产品(产品号,产品名,厂商号,单价,库存量) 2数据模型优化数据库逻辑设计结果不是唯一.为深入提升数据库应用系统性能,我们还应该依据应用需要合适修改,调整数据模型结构,这就是数据模型优化。(1) 数据依靠举例R厂商
4、厂商号-厂商名,厂商号-地址,厂商号-电话R用户用户ID用户名,用户ID用户类型,用户ID权限,用户类型权限(2) 对数据依靠进行极小化处理,消除冗余联络举例 上述关系中,发货单中存在冗余联络(具体是细节号、折扣等),所以我们能够增加一个发货细节单和折扣规则单。(3) 根据数据依靠理论对关系模式逐一进行分析,考察是否存在部分函数依靠,传输函数依靠,多值依靠等,确定各关系分别属于第几范式举例上述关系中,用户表存在非主属性传输依靠,所以用户表属于2NF。我们能够增加一个用户权限表来消除该表中非主属性传输依靠。3.数据库设计最终止果以下:(car表) (car表) (car表)1在关系模式存取方法选
5、择之前,我们首先要对要运行事务进行具体分析,取得选择物理数据库设计所需要参数。同时,还要知道每个事务在各关系上运行频率和性能要求。(1) 对于数据库查询事务,我们需要得到以下信息:查询关系、查询条件/连接条件包含属性、查询投影属性A、查询发货厂商名、产品、发货数量(100)和日期事务、查询关系:厂商、发货单表、产品表、查询条件所包含属性:厂商、发货数量、产品号 III、连接条件所包含属性:厂商、产品号 IV、查询投影属性:厂商名、产品名、发货数量、发货日期(2) 对于数据更新事务,我们需要得到以下信息:被更新关系、每个关系上更新操作条件包含属性、修改操作要改变属性值B、对发货事务、被更新关系:
6、发货表、每个关系上更新操作条件所包含属性:无III、需要改属性值:货单号、产品号、发货数量2. 关系模式存取方法选择(即建立哪些存放路径)C、对car建立索引对厂商表上厂商、发货表产品号、产品表产品号等建立索引,因为她们常常在查询条件和连接条件中出现E、对 D、car确定数据存放位置 为提升系统性能,我们依据应用情况将数据易变部分和稳定部分、常常存取部分和存取频率较低部分分开存放。即我们把表和索引放在不一样磁盘上。E、对car确定系统配置使用数据库用户数(我们只要设置比较少用户数);同时打开数据库对象数(用户同时操作对象不超出3个);内存分配参数(运行exe文件需要5M内存);缓冲区分配参数(
7、略);数据库大小(预留500M数据存放空间)等。F、对car物理结构评价 数据库物理设计过程中需要对时间效率、空间效率、维护代价和多种用户要求进行权衡,其结果产生多个方案。经过我们细致评价,得出上述系统配置作为car数据库物理结构。四、安全性设计数据载入和应用程序调试(1)因为该系统还未投入使用,我们仅象征性地载入少许数据(生产商表导入试验数据)【应用程序调试】数据库应用程序设计应该和数据库设计同时进行,鉴于VB简单易用,我们选择VB作为应用程序设计语言。所以在组织数据入库同时还要调试应用程序。 (VB下界面) (VB下系统主界面) 进入此页面可进行相关汽车基础信息查询,如汽车型号,进价,厂商
8、等。需要加入控件:学生信息管理界面注:进入此页面能够进行汽车信息添加和删除等需要。注:进入此页面能够销售车辆注:进入此页面能够进行进货管理【数据库试运行】在原有系统数据有一小部分已输入数据库后,我们就能够开始对数据库系统进行联合调试,即数据库试运行。这一阶段要实际运行数据库应用程序,实施对数据库多种操作,测试应用程序功效是否满足设计要求。添加代码以下:Private Sub Command1_Click()On Error GoTo ErrorHandle If Text1 = Then MsgBox 请输入Car_id!, vbInformation Else Dim sql As Stri
9、ng sql = insert into car values( & Text1 & , & Text2 & , & Text3 & , & Text4 & , & Text5 & ) MsgBox (sql) cnn.Execute (sql) Adodc1.Refresh Text1 = End IfExit SubErrorHandle:MsgBox 车辆信息输入有误,请检验Car_id是否反复!End Sub删除代码以下:Private Sub Command2_Click() Adodc1.Recordset.DeleteEnd Sub退出代码以下:Private Sub Comma
10、nd3_Click() Unload MeEnd Sub(汽车信息查询) 代码:Private Sub Command4_Click() Dim temp1 temp1 = 0 Dim sql As String sql = 轿车信息管理:查看轿车信息、轿车入库、轿车出库这里列举轿车入库图示:型号:大众CC 品牌:大众价格:300000 测试结果:汽车信息查询完成经测试,查看轿车信息、轿车出库正确运行 If Text6.Text = Then MsgBox ( 请输入出货名) Exit Sub End If If Text6.Text Then If temp1 = 0 Then sql =
11、sql + where Else sql = sql + and End If sql = sql + Car_id= + Text6.Text + temp1 = temp1 + 1 End If sql = select Car_id,Car_name,Factory_name,Car_price,Car_num from car + sql MsgBox (sql) Adodc2.RecordSource = sql Adodc2.RefreshEnd Sub代码以下:Private Sub Command5_Click() Dim temp1 temp1 = 0轿车信息管理:查看汽车销
12、售情况这里列举轿车入库图示:型号:大众CC 品牌:大众销售:1 测试结果:查看销售情况经测试,查看汽车销售数量、轿车出库正确运行 Dim sql As String sql = If Text6.Text = Then MsgBox ( 请输入出货名) Exit Sub End If If Text7.Text = Then MsgBox (请输入出货量) Exit Sub End If sql = update car set Car_num=Car_num- & Text7.Text & where car_id= & Text6.Text & MsgBox (sql) cnn.Execu
13、te (sql) Adodc2.RefreshEnd Sub代码以下:Private Sub Command6_Click() Dim temp1 temp1 = 0轿车信息管理:查看汽车进货情况这里列举轿车入库图示:型号:大众CC 品牌:大众进货:20 测试结果:查看汽车进货数量经测试,查看汽车进货情况、得悉库存数量 Dim sql As String sql = If Text9.Text = Then MsgBox (请输入进货名) Exit Sub End If If Text11.Text = Then MsgBox (请输入进货量) Exit Sub End If sql = up
14、date car set Car_num=Car_num+ & Text11.Text & where car_id= & Text9.Text & MsgBox (sql) cnn.Execute (sql) Adodc3.RefreshEnd Sub【注】其它功效在数据库试运行阶段均运行正确【数据库运行和维护】经数据库试运行结束后,该汽车销售系统数据库开发工作就基础完成,即可投入正式运行。不过因为应用环境在不停改变,数据库运行过程中物理存放也会不停改变,对数据库设计进行评价、调整、修改等维护工作是一个长久任务,也是设计工作继续和提升。(1) 数据库转储和恢复: SQL Server数据库备
15、份有两种方法,一个是使用BACKUP DATABASE将数据库文件备份出去,另外一个就是直接拷贝数据库文件mdf和日志文件ldf方法。我们用后者方法,首先要先将该数据库从运行数据服务器中止开,然后复制文件至其它磁盘保留。数据库恢复时,除了要重载数据库外,还要重新运行日志文件。建立日志文件有两种基础方法,即用第几次备份来标识和完全用时间来标识。直接开始服务管理器打开企业管理器直接完成即可 (2)数据库安全性、完整性控制: 该轿车销售管理系统,用户必需使用一个登录账号,才能连接到sql server中,而且用户也分两类:管理员和一般用户,而且这两类登陆用户权限也有不一样。假如登录者不属于这两类中一
16、类,则进不了数据库。这一方法将有利于保护数据库以预防不正当使用所造成数据泄漏、更改或破坏。 这里我们建立用户试图,使得一些用户只能访问部分数据。举例:查看用户名和用户类型,但无密码显示 (建立用户表和权限表视图)数据库完整性是指数据正确性、有效性和相容性。关键是完整性约束条件:实体完整性、参考完整性和用户自定义完整性。本轿车销售管理系统就这三类完整性确保了数据库完整性。诸如该系统有: 实体完整性: 每个关系主码全部不许可空 参考完整性:(3)并发控制假如没有锁定且多个用户同时访问一个数据库,则当她们事务同时使用相同数据时可能会发生问题。并发问题包含:丢失修改、读脏数据、不可反复读。 默认处理方
17、案:SET TRANSACTION ISOLATION LEVEL语法: SET TRANSACTION ISOLATION LEVEL READ COMMITTED /指定在读取数据时控制共享锁以避免脏读| READ UNCOMMITTED /实施脏读或0级隔离锁定 | REPEATABLE READ /锁定查询中使用全部数据以预防其它用户更新数据| SERIALIZABLE /在数据集上放置一个范围锁,以预防其它用户在事务完成之 前更新数据集 五、小结在本课程设计之前,我只接触过vb,也见过vc,不过没有专门去学它,但我是一个好奇心很强人,因为VB做界面比较简单,况且就一周时间要做完数据库
18、设计和前台软件,却是极难。 和其临渊羡鱼,不如退而结网。这次数据库课程设计给我最大印象就是假如自己有了爱好,就动手去做,困难在你勇气和毅力下是抬不了头。从做这个数据库开始不管碰到什么困难,我全部没有一丝放弃念头。出于对知识渴望,出于对新技术好奇,出于对一切未知求知。我完成了这次数据库课程设计,不过这只是我学习路上驿站,我会继续学习它,语言原来就是相通,just do it!程序语言并不关键,毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道事情,关键是了解学习思想。古语说好:学无止境啊!六、谢辞很感激老师给了我们这次动手实践机会,让我有了一个学习,增加见识,开拓视野机会。感谢老师对我指导,也感谢同组者对我帮助。我会以这次课程设计作为对自己激励,继续学习。毕竟学习就是一个just do it过程!七、参考文件1柴欣 武优西Visual Basic 程序设计基础天津:中国铁道出版社,2柴欣 刘更谦Visual Basic 程序设计试验教程天津:中国铁道出版社,3吴斌 赵有珍SQL Server应用和提升北京:科学出版社,4王道荣Visual Basic 6数据库处理北京:中国铁道出版社,5付继彬SQL Server入门和提升 北京:清华大学出版社,6龚沛曾Visual Basic简明教程北京:高等教育出版社,7陈明数据库系统及应用SQL Server北京:清华大学出版社,