
数据库设计原则2007-05-2601:08一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低
数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。一般按照规范化的设计方法,常将数据库设计分为若干阶段:
系统规划阶段
主要是确定系统的名称、范围;确定系统开发的目标功能和性能;确定系统所需的资源;估计系统开发的成本;确定系统实施计划及进度;分析估算系统可能达到的效益;确定系统设计的原则和技术路线等。对分布式数据库系统,还应分析用户环境及网络条件,以选择和建立系统的网络结构。
需求分析阶段
要在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。通过对组织、部门、企业等进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。
概念设计阶段
要产生反映企业各组织信息需求的数据库概念结构,即概念模型。概念模型必须具备丰富的语义表达能力、易于交流和理解、易于变动、易于向各种数据模型转换、易于从概念模型导出与DBMS有关的逻辑模型等特点。
逻辑设计阶段
除了要把E-R图的实体和联系类型,转换成选定的DBMS支持的数据类型,还要设计子模式并对模式进行评价,最后为了使模式适应信息的不同表示,需要优化模式。
物理设计阶段
主要任务是对数据库中数据在物理设备上的存放结构和存取方法进行设计。数据库物理结构依赖于给定的计算机系统,而且与具体选用的DBMS密切相关。物理设计常常包括某些 *** 作约束,如响应时间与存储要求等。
系统实施阶段
主要分为建立实际的数据库结构;装入试验数据对应用程序进行测试;装入实际数据建立实际数据库三个步骤。
另外,在数据库的设计过程中还包括一些其他设计,如数据库的安全性、完整性、一致性和可恢复性等方面的设计,不过,这些设计总是以牺牲效率为代价的,设计人员的任务就是要在效率和尽可能多的功能之间进行合理的权衡。
一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低
数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。一般按照规范化的设计方法,常将数据库设计分为若干阶段:
系统规划阶段
主要是确定系统的名称、范围;确定系统开发的目标功能和性能;确定系统所需的资源;估计系统开发的成本;确定系统实施计划及进度;分析估算系统可能达到的效益;确定系统设计的原则和技术路线等。对分布式数据库系统,还应分析用户环境及网络条件,以选择和建立系统的网络结构。
需求分析阶段
要在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。通过对组织、部门、企业等进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。
概念设计阶段
要产生反映企业各组织信息需求的数据库概念结构,即概念模型。概念模型必须具备丰富的语义表达能力、易于交流和理解、易于变动、易于向各种数据模型转换、易于从概念模型导出与DBMS有关的逻辑模型等特点。
逻辑设计阶段
除了要把E-R图的实体和联系类型,转换成选定的DBMS支持的数据类型,还要设计子模式并对模式进行评价,最后为了使模式适应信息的不同表示,需要优化模式。
物理设计阶段
主要任务是对数据库中数据在物理设备上的存放结构和存取方法进行设计。数据库物理结构依赖于给定的计算机系统,而且与具体选用的DBMS密切相关。物理设计常常包括某些 *** 作约束,如响应时间与存储要求等。
系统实施阶段
主要分为建立实际的数据库结构;装入试验数据对应用程序进行测试;装入实际数据建立实际数据库三个步骤。
另外,在数据库的设计过程中还包括一些其他设计,如数据库的安全性、完整性、一致性和可恢复性等方面的设计,不过,这些设计总是以牺牲效率为代价的,设计人员的任务就是要在效率和尽可能多的功能之间进行合理的权衡。
问题一:有什么好的数据库设计软件 foxbase是DOS版的已经没有了 多数是使用VFP在工作中作为一个数据管理工具还是很得心应手的,但是靠这个找工作是很少了(只能算一个特长吧)。C语言是个基础除非搞工控之类的专用硬件开发 实际很少使用。现在是用它的可视编程版本VC或BCB了 如果会这两门语言中的一种 加上一门数据库(SQL,ORACLE,DB2等
所以,看来您需要在所具备的基础上再学习一下才可以
最好的办法是直接上手作一系统,需要资料、有问题就到网上查、问,还要充分利用系统帮助,不需要太多的书。
问题二:数据库设计,这个是用什么工具画的 visio之类
问题三:数据库设计软件的作用是什么 假如你设计的数据库同时用于oracle,db2,你的SSMS能搞定吗?如果用pd设计,那么基本上他设计出的模型能用于很多数据库。
问题四:数据库设计工具有哪些 SI Object Browser ER 中文版。
1,功能上几乎涵盖了PD,ERWin等所有
2,全中文界面,别提多亲切了
3,支持Win7/Win8,Oracle12c,32位64位各种高大上新版本
4,价格不贵量又足,业界良心啊
问题五:数据库是用什么软件制作 数据库软件本身,是编程语言编写的。
数据库文件,是由数据库软件来管理的。
问题六:我想做一个数据库,需要什么软件啊?? 你自己是程序员?
数据库(access、mysql、oracle)+川态网站语言(jsp、php)+服务器(tomcat、iis) 即可。
你是业务人员?
excel。
你是管理人员?
建议你找人做一个软件,不仅可以管理资料,对于考勤,档案、工资、部门、人员都可以实现管理。 方便又高效。
问题七:数据库建模设计用什么软件比较好 创建数据库
选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。
在对象资源管理器窗口中展开服务器,然后选择数据库节点
右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。
执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。
在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。
切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到文件组页,在这里可以添加或删除文件组。
完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。
问题八:数据库管理软件制作用什么软件 管理软件有:DB2
ORACLE
MySQL
ACCESS
Visual Foxpro
MS SQL Server
采用楼上
如果是制作的话 安全稳定没毒的用C++当然要学习 如果是看得懂好学就用360天天报毒的易语言把
问题九:求适合做数据库设计的软件? pd,powerdesigner
power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具。使用它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。在这里,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
问题十:想一个做数据库,请问用什么软件呢? 看你是做什么使用的。如果是简单嵌入式开发,涉及的数据量不是很大,那你可以选择sql server,用它做服务用也可以,当然你要注意怎么使用。如果实在本地使用,如我们的自动取款机,你可以适当的使用sqlist,这种小型数据库也不错。具体使用的方法可以与我联系及协议等等。如果你只是简单的做一些小东东而用的数据库,如:公交车上的读卡器等等,你可以尝试使用像表格方式来埂储数据。具体的方法及用法估计你还是要问我。当然了你可以使用大型数据库DB2或者是Oreacle等等,不过这些都是用来做大型服务器用的。还有你选择的编程语言也很重要,像楼上说的mysql,最好是在PHP语言中使用等等。1、首先在
SQL
Server
2008中选择单击Microsoft
SQL
Server
2008
Management
Studio,会出现一个窗口。
2、在服务器名称中选择本机的服务器名字。然后单击连接按钮。就进入Microsoft
SQL
Server
2008
Management
Studio。
3、右键单击数据库,选择新建数据库,会出来一个窗口,在这个窗口里可以输入你要建的数据库的名称,同时也可以修改数据库的文件类型。
4、数据库的名称和类型都弄好后,点击下方的确定
按钮。数据库就建立了。
5、要是想删除自己不想要的数据库也很简单。鼠标右键点击自己不想要的数据库,然后选择删除
,那么该数据库就删除了。
数据库技术是信息资源开发、管理和服务的最有效的手段
随着计算机技术、通信技术和网络技术的发展,数据库的应用范围越来越广泛,已渗透到社会的各个领域
从小型的单项事务处理系统到大型复杂的信息系统大都采用先进的数据库技术来保持系统数据的整体性、完整性和共享性
目前,数据库的建设规模、数据库信息的大小和使用频度已成为衡量一个国家或地区信息化程度的重要标识之一
数据库设计时间里数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要去)
在数据库领域内,使用数据库的各类系统通常被称为数据库应用系统
数据库技术和产品是计算机领域中最为活跃的部分之一,数据库技术与产品的发展总是与计算机技术的发展密切相关,从主机到现在的Internet/Intranet及网络计算
数据库总是站在技术的最前沿
本系统采用了SQLSERVER2008数据库作为后台数据库,SQLSERVER2008是一个真正的多用户、多线程SQL数据库服务器
网站数据库,是选SQLServer还是Aess好,可能您会说:选MySQL好,不过现在只是讨论IISASP这种架构下的选择,不讨论ApachePHP的情况
如果您现在是在局域网中使用,而且软件的价格成本不是考虑的因素,那当然是用SQLServer好了,似乎这个问题没什么好讨论的
不过在互联网上就不太一样了,因为大部分做网站的人都是租用别人的虚拟主机,比较常见的组合是PHPMySQL或ASPACCESS或ASPSQLServer,下面就使用ACCESS及SQLServer做一个比较:成本使用SQLServer的虚拟主机报价一般是使用ACCESS的15至25倍
性能就数据库的处理能力和稳定性ACCESS和SQLServer当然是没得比的,但是有一点必须注意的是,在互联网上使用SQLServer和在局域中使用是大不一样的,如果你现在已经在用,请打开“SQL查询分析器”,连接上SQLServer服务器,执行“EXECsp_who”,你可能看到返回的行数有几百行,也就是说你所在SQLServer服务器正在处理几百个连接,然后再执行“selectcount()frommaster”,你可以看这个数字也是在几百以上,也就是说你所在SQLServer服务器上有好几百个数据库
相比之下,你使用的ACCESS文件只有你一个站点在使用,通过这些参数对比,就不能简单地认为使用SQLServer会比使用ACCESS获得更好的性能了
开发在开发能力方面ACCESS和SQLServer当然不在一个档次上,ACCESS没有表的外键和存储过程,可使用的SQL函数也远不如SQLServer,而且ACCESS的界面设计能力在做网站数据库时是用不上的,而且ACCESS没有提供象“SQL查询分析器”这样的自由SQL语句编写调试工具
维护在互联网上对数据库进行维护,SQLServer可以通过“企业管理器”(效果不好,经常连不上去)或“查询分析器”进行管理及维护,前提是SQLServer服务器开放了TCP/IP连接及你能直接连接到互联网或你的代理服务器开通了1433端口
而ACCESS一但把文件上传到网站之后,如果没有辅助工具或自已编写ASP脚本,是无法进行在线维护 *** 作的,唯一的方法是通过FTP把文件拿到本地进行离线 *** 作
从以上的比较可以看出,使69用ACCESS数据库在成本上是有优势,性能上也未必见差,但开发及上线后的维护能力不足,不过使用“网际数据库浏览器”可以弥补这方面的不足,这个软件可以在把ACCESS文件上传到网站后仍能在线地对ACCESS数据库进行查询、插入、更新及删除等 *** 作,这一点是其他基于ODBC连接的数据库开发辅助工具所没有的
据访问需要的完整解datamodule4adoquery2sqladd('SELECT借书证号,密码FROM[user]WHERE(借书证号=:tt)');datamodule4adoquery2parameters[0]value:=username;
datamodule4adoquery2open;
在为TQuery或TADOquery部件设置SQL属性时调用Close方法总是很安全的,如果TQuery或TADOquery部件已经被关闭了,调用Close方法时不会产生任何影响。在应用程序中为SQL属性设置新的SQL命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面,在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。
在这里要特别注意的,一般情况下TQuery或TADOquery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery或TADOquery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为SQL属性设置多条SQL语句。
在为TQuery或TADOquery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。
在设计过程中,设置完TQuery或TADOquery部件的SQL属性之后将其Active属性的值置为True,这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery或TADOquery部件相连的数据浏览部件(如TDDGridTDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。
在应用程序运行过程中,通过程序调用TQuery或TADOquery组件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。Open方法和ExecSQL方法是不一样的。Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:
Query1Open(这样会返回一个查询结果集)
如果调用Open方法,而没有查询结果时,会出错。此时应该调用ExecSQL方法来代替Open方法。如:
Query1ExecSQL(没有返回结果)
当然在设计应用程序时,程序设计人员是无法确定TQuery或TADOquery组件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用Try…Except模块来设计程序。在Try部分调用Open方法,而在Except部分调用ExceSQL方法,这样才能保证程序的正确运行。
例如:
Try
Query1Open
Except
Query1ExecSQL
End
通过Tquery或TADOquery组件可以获得两种类型的数据:
u“活动”的数据
这种数据就跟通过TTable部件获得的数据一样,用户可以通过数据浏览部件来编辑修改这些数据,并且当调用Post方法或当焦点离开当前的数据浏览部件时,用户对数据的修改自动地被写回到数据库中。
u非活动的数据(只读数据)
用户通过数据浏览部件是不能修改其中的数据。在缺省情况下,通过TQuery部件获得的查询结果数据是只读数据,要想获得“活动”的数据,在应用程序中必须要设置Tquery或TADOquery组件的RequestLive属性值为True,然而并不是在任何情况下(通过设置RequestLive的属值True)都可以获得“活动”的数据的,要想获得“活动”的数据,除了将TQuery部件的RequestLive属性设置为True外,相应的SQL命令还要满足以下条件。
本地SQL语句查询情况下,要得到可更新的数据集,SQL语句的限制为:
n查询只能涉及到一个单独的表
nSQL语句中不能包含ORDERBY命令
nSQL语句中不能含聚集运算符SUM或AVG
n在Select后的字段列表中不能有计算字段
n在Select语句WHERE部分只能包含字段值与常量的比较运算,这些比较运算符是:Like,>,<,>=,<=。各比较运算之间可以有并和交运算:AND和OR
当通过SQL语句查询数据库服务器中的数据库表:
n查询只能涉及到一个单独的表
nSQL语句中不能包含ORDERBY命令
nSQL语句中不能含聚集运算符SUM或AVG运算
另外,如果是查询Sybase数据库中的表,那么被查询的表中只能有一个索引。
如果在应用程序中要求TQuery或TADOquery组件返回一个“活动”的查询结果数据集,但是SQL命令语句不满足上述约束条件时,对于本地数据库的SQL查询,BDE只能返回只读的数据集。对于数据库服务器中的SQL查询,只能返回错误的代码。当Tquery或TADOquery组件返回一个“活动”的查询结果数据集时,它的CanModIfy属性的值会被设置成True。
§34MSSQLServer简述
SQLServer是一个后台数据库管理系统,它功能强大 *** 作简便,日益为广大数据库用户所喜爱。越来越多的开发工具提供了与SQLServer的接口。SQLServer是一个关系数据库管理系统,它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。于1988年推出了第一个OS/2版本,在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的最新版本,该版本继承了SQLServer70版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。MSSQLServer不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQLServer数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在SQLServer的数据库处理方式,则是使用面向对象的 *** 作方式与精神,也就是说,SQLServer的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构。
SQLServer企业管理器是SQLServer的主要管理工具,它提供了一个遵从MMC标准的用户界面,使用户得以:
·定义SQLServer实例组。
·将个别服务器注册到组中。
·为每个已注册的服务器配置所有SQLServer选项。
·在每个已注册的服务器中创建并管理所有SQLServer数据库、对象、登录、用户和权限。
·在每个已注册的服务器上定义并执行所有SQLServer管理任务。
·通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和脚本。
·唤醒调用为SQLServer定义的各种向导。
·
第三章图书管理系统设计分析
§41应用需求分析
图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行 *** 作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护并生成催还图书报表。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。并且还应具有生成催还图书报表,并打印输出的功能。
在本系统中由于没有打印机设备供试验,所以预先把报表打印改成报表预览。
设计不同用户的 *** 作权限和登陆方法
对所有用户开放的图书查询
借阅者维护借阅者个人部分信息
借阅者查看个人借阅情况信息
维护借阅者个人密码
根据借阅情况对数据库进行 *** 作并生成报表
根据还书情况对数据库进行 *** 作并生成报表
查询及统计各种信息
维护图书信息
维护工作人员和管理员信息
维护借阅者信息
处理信息的完整性
对借阅过期的图书生成报表
图4-2图书管理系统数据库应用需求的总结
根据以上所做的需求分析,并略掉一些细节(如不考虑用户的登录;对记录的维护),得出以下的三层数据流图。
§42系统功能模块划分
系统功能框图如图4-10所示。
§43系统数据库设计
431概念设计
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
(1)设计局部ER模式
实体和属性的定义:
图书(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,)
借阅者(借书证号,姓名,性别,身份z,联系电话,密码)
身份(身份编号,身份描述,最大借阅数)
图书类别(图书类别编号,类别描述)
ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。联系定义如图4-5所示。解释如下:
u一个借阅者(用户)只能具有一种身份,而一种身份可被多个借阅者所具有;
u一本图书只能属于一种图书类别(类别),而一种图书类别可以包含多本图书;
u一个用户可以借阅多本不同的书,而一本书也可以被多个不同的用户所借阅。
(2)设计全局ER模式
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1)确定公共实体类型
为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候眩
2)局部ER模式的合并
合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
3)消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。
3)全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
综上所述,“图书管理系统”的全局ER模式如图4-13所示。
432关系数据库的逻辑设计
由于概念设计的结果是ER图,DBMS一般采用关系型(本人所使用的MSSQLServer就是关系型的DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。
(1)导出初始关系模式
book(图书编号#,图书名称,图书类别#,作者,出版社,出版日期,备注,价格,数量)class(图书类别#,类别名)user(借书证号#,姓名,性别,身份编号#,身份z,联系电话,密码)ID(身份编号#,身份描述,最大借阅数)Owner(借书证号#,图书编号#,借书日期)
图4-14关系模式集
(2)产生子模式
子模式是用户所用到的那部分数据的描述。除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。
借书子模式(借书证号#,姓名,图书编号#,图书名称,借书日期)
图4-15部分子模式
(3)根据设计中出现的问题本人在写系统时还加入了两个关系模式:
1、ownertemp:用于工作人员在处理借书、还书工作时临时存储借书、还书信息,以便打印报表时使用。
2、keyer:用于存储工作人员和图书馆管理员的用户名和密码及权限,以便工作人员或图书馆管理员进入相应的功能模块时进行验证用户的身份。
433数据库的实现
我选用MicrosoftSQLServer2000(企业版)数据库来进行数据库的逻辑设计。首先创建七个基本数据库表如表4-1-4-7所示,然后根据全局ER图,建立各个表之间的联系,如图4-8所示。
表4-1借阅者基本信息表的结构(User)
表4-2图书信息表的结构(Book)
表4-3图书类别信息表的结构(Class)
表4-4借阅者身份信息表的结构(ID)
表4-5借阅情况信息表的结构(Owner)
表4-6借阅情况临时存储信息表的结构(Ownertemp)
注:在owner表和ownertemp表中加入了索引字段,用来唯一标识一条借书记录,并且设置为标识,标识种子为1。
表4-7工作人员和管理员信息表的结构(Keyer)
图4-8数据库表间联系图
第五章图书管理系统应用程序设计
§51系统窗体模块组成
§52数据模块窗体的设置
在编写数据库应用程序时,经常要遇到这样的情况,即好多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工件,而且要保证这些数据源的确是相同的也需花一番功夫。那么,能不能将这些数据源集中管理,最好是做成一个统一的模块,需要时就将该模块引入而不必直接 *** 作数据源本身呢?数据模块(DataModule)是解决这个问题最好的答案。简单说来,数据模块是用来集中管理数据源的一个窗体,该窗体可被需要的地方随时引入。
但本人在开发这个系统时,开始使用了一下数据模块,但在使用过程中却碰到了一些问题。并且考虑这个系统使用到的TADOQuery控件比较多,如果使用数据控件可能会带来管理上的麻烦,如弄混各个数据控件的作用。还考虑到使用动态生成ADOQuery可能会更节省资源。所以在本人的系统中,开始做的第一个模块“借阅者个人模块”中还稍微使用了一下数据模块。但在后面做的两个模块中大多都是用动态生成ADOQuery来实现的。并且由于SQL语句是动态加入的所以datamodule中的控件也不会多。
§53启动画面的实现
启动画面是为了给用户一个良好的印像,加深软件的亲和力,没有实际的功能,在Form1窗体中加入了Image和Time组件。启动画面的窗体略,主要的源代码如下:
§54用户登录窗体的的实现
本窗体是为三种不同的用户(一般用户,工作人员,管理员)提供选择以进入不同的模块,满足不同用户的需求。源代码比较简单,略。
§55用户密码认证窗体的的实现
本窗体是为了让工作人员或图书馆管理员按照用户名和密码进行登录,并且跟据用户名检查Keyer表中的“权限”字段,以分辩进入图书馆管理人员模块还是进入工作人员模块。窗体界面、源代码如下
§56借阅者服务模块的实现
借阅者服务窗体的功能主要是图书的查询,个人借阅情况查看及个人部分信息的修改。界面图如下:
561图书查询功能的实现
在本系统中,任何人都有权限使用查询功能,不做任何限制。界面如下,
由于实现的查询功能有多种,如按图书编号、图书名称等字段进行完全体配查找和部分体配的模糊查找,还有按多个条件进行逻辑与或是逻辑或的多条件查找。其中实现的方法者差不多,所以只给出多条件查找的代码,如下:
562借阅者登录功能的实现
这个功能的实现与工作人员和管理人员登录功能实现的方法大致一样,并且还要简单。是从User表中查到到借阅证号与密码,看与用户输入的是否一致。如果一致,那么用户就可查看自已的借阅情况并维护自己的部分信息。源代码与借阅者登录界面都略。
563借阅者借阅情况功能的实现
当借阅者正确登录到系统后,此功能将被激活,使用户能查看到自身的借阅情况。在此系统中,信息的显示一般用ListView来实现,只在较少的情况下用到了DBgrid,因为我觉得ListView更好实现,并能使信息数据对用户的完全分离。
在这里跟据借阅者的不同要求实现借阅情况的查询,有检查所有的借阅情部、某本书的借阅情况、和根据已借阅天数的来查询。其中根椐借阅天数来查询更有代表性,有方式一和方式二。以下给出此功能的源代码
按借阅天数查询方式一
按借阅天数查询方式二
564借阅者个人资料维护功能的实现
此功能实现当前借阅者部份资料的修改,但借书证号和身份类别这样的信息不允许修改,这是图书馆管理员模块的功能。在此界面中点击修改按钮将出现“修改”窗体(Form8),点击修改密码按钮将出现groupbox8,在这里进行密码修改。关键源代码如下。
这里给出个人部分信息修改的源代码:
这里给出密码修改的源代码:
57工作人员-图书借阅/归还模块的实现
571工作人员进行图书借阅功能实现
在这个功能中,工作人员输入借阅者的借阅证号和所要借阅的图书的图书编号,然后点击借阅按钮就可进行图书借阅。考虑到实际中可能会出现只知图书名而不知图书编号的情况,在此界面下方加入了一个转换功能,可以把图书名称转换成图书编号,再进行图书借阅。
在借阅完成后会生借阅报表以便借阅者检查和确认,借阅报表的打印效果如下图,实现比较简单,略去实现过程。
572工作人员进行图书归还功能实现
在此功能中,工作人员根据借阅者的借书证号和归还的图书编号进行图书的归还工作。并且根据现实中可能会出现的只知图书名不知图书编号的归还情况,所以加入了按书籍名称进行归还的功能。这个功能是图书借阅功能中把图书名称转换成图书编号的一种改进方法,这样就不用如借阅功能中一样要先转换再借阅了。归还完成后,同样会打印出归还报表以便用户检查和确认。
58图书馆管理员模块的实现
581图书馆管理员图书管理功能的实现
在这个功能中可以在(*图书编号)中输入图书编号,点查找按钮后就会在各个相应的组件中显示出信息,或按图书名称模糊查找到所要的记录,在各个相应的组件中显示第一条记录的信息,也可在下端的ListView组件中点击某一条记录,在各个相应的组件中也会显示所选记录的信息。在入库功能中只要不是相同的图书编号并且带*号提示的字段不为空就可插入新的图书记录。删除则删除那些Book表中的图书记录,如果借出还可依用户要求连带删除owner表中的记录。因为图书修改与图书入库的功能与工作人员记录修改和工作人员记录添加的实现过程一样,所以下面仅给出删除功能的源代码,如下
582图书馆管理员工作人员和管理员管理功能的实现
在此功能中可以加入工作人员或是管理员,或是修改他们的密码、权限。
在此功能中如果选中ListView中的记录,则在右边相应的组件中显示出信息,并且管理员还可对这些记录进行修改或加入新的记录。并且也可以点删除按钮删除选中的一条或多条记录。删除功能与图书记录的删除一般,所以下面只给出添加与修改的实现过程。
583图书馆管理员修改图书类别及统记功能的实现
在此窗体中能对图书的类别进行删除,添加和修改,这模块的功能的实现过程与图书记录的删除,添加和修改一样的,但是这个窗体还能跟据图书类别进行统计,还可根据Book表和owner表统计出图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目。在这里给出统计图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目的实现过程中的几个函数和过程
584图书馆管理员借阅者管理功能的实现
查询借阅者可根据借阅者的借书证号或姓名或身份编号查找到借阅者的信息,也可以实行模糊查找,这个功能的实现与前面图书查找的实现过程一般,就不再详细说明。
585图书馆维护借阅者管理功能的实现
此功能能对借阅者信息进行查看添加、删除、修改。在这里给出刷新按钮的实现过程
586图书馆身份维护功能的实现
这一部分是对借阅者身份进行管理,能对身份进行添加、删除、修改。并且同样的在listview中选中某条或多条记录时会在相应的右边的组件中显示出信息。此功能实现过程与前面所叙有雷同,略。
587图书馆借阅者统计功能的实现
此功能按借阅者身份进行统计,得出具有某种身份的借阅者总数,此种身份的并借阅图书的借阅者数和所借阅的图书数,在下面给出实现过程。
588图书馆统计借阅过期记录功能的实现
打印出的借阅过期催还报表如下图所示:
此报表能显示按借书证号升序排列的借阅信息超过限定时限的信息,其中主要的SQL语句如下:
59系统信息显示的实现
显过本系统的信息,并且右边的字向上滚动显示,主要实现如下:
另外,虚机团上产品团购,超级便宜
采用自增长主要是性能
早期的数据库系统,经常采用某种编号,比如身份z号码,公司编号等等作为数据库表的
然而,很快,大家就发现其中的不利之处
比如早期的医院管理系统,用身份z号码作为病人表的
然而,第一,不是每个人都有身份z;第二,对于国外来的病人,不同国家的病人的证件号码并不见得没有重复
因此,用身份z号码作为病人表的是一个非常糟糕的设计
考虑到没有医生或者护士会刻意去记这些号码,使用自增长是更好的设计
公司编号采用某种特定的编码方法,这也是早期的数据库系统常见的做法
它的缺点也显而易见:很容易出现像千年虫的软件问题,因为当初设计数据库表的时候设计的位数太短,导致系统使用几年后不能满足要求,只有修改程序才能继续使用
问题在于,任何人设计系统的时候,在预计某某编号多少位可以够用的时候,都存在预计不准的风险
而采用自增长则不存在这种问题
同样的道理,没有人可以去记这些号码
使用自增长另外一个原因是性能问题
略有编程常识的人都知道,数字大小比较比字符串大小比较要快得多
使用自增长可以大大地提高数据查找速度
2
避免用复合主键(compound)这主要还是因为性能问题
数据检索是要用到大量的值比较,只比较一个字段比比较多个字段快很多
使用单个从编程的角度也很有好处,sql语句中where条件可以写更少的代码,这意味着出错的机会大大减少
3
双主键双主键是指数据库表有两个字段,这两个字段独立成为主键,但又同时存在
数据库系统的双主键最早用在用户管理模块
最早的来源可能是参照 *** 作系统的用户管理模块
*** 作系统的用户管理有两个独立的主键: *** 作系统自己自动生成的随机ID(Linux,windows的SID),loginid
这两个ID都必须是唯一的,不同的是,删除用户test然后增加一个用户test,SID不同,loginid相同
采用双主键主要目的是为了防止删除后增加同样的loginid造成的混乱
比如销售经理hellen本机共享文件给总经理peter,一年后总经理离开公司,进来一个普通员工peter,两个peter用同样的loginid,如果只用loginid作 *** 作系统的用户管理主键,则存在漏洞:普通员工peter可以访问原来只有总经理才能看的文件
*** 作系统自己自动生成的随机ID一般情况下面用户是看不到的
双主键现在已经广泛用在各种数据库系统中,不限于用户管理系统
4
以固定的数据库、表应付变化的客户需求这主要基于以下几个因素的考虑:4
1大型EPR系统的正常使用、维护需要软件厂商及其众多的合作伙伴共同给客户提供技术服务,包括大量的二次开发
如果用户在软件正常使用过程中需要增加新的表或者数据库,将给软件厂商及其众多的合作伙伴带来难题
4
2软件升级的需要
没有一个软件能够让客户使用几十上百年不用升级的
软件升级往往涉及数据库表结构的改变
软件厂商会做额外的程序将早期版本软件的数据库数据升级到新的版本,但是对于用户使用过程中生成的表进行处理就比较为难
4
3软件开发的需要
使用固定的数据库库表从开发、二次开发来说,更加容易
对于用户使用过程中生成的表,每次查找数据时都要先查表名,再找数据,比较麻烦
举例来说,早期的用友财务软件用Aess作数据库,每年建立一个新的数据库
很快,用户和用友公司都发现,跨年度数据分析很难做
因此这是一个不好的设计
在ERP中,很少有不同的年度数据单独分开
一般来说,所有年份的数据都在同一个表中
对于跨国公司甚至整个集团公司都用同一个ERP系统的时候,所有公司的数据都在一起
这样的好处是数据分析比较容易做
现在大多数数据库系统都能做到在常数时间内返回一定量的数据
比如,Oracle数据库中,根据在100万条数据中取10条数据,与在1亿条数据中取10条数据,时间相差并不多
5
避免一次取数据库大量数据,取大量数据一定要用分页
这基本上是现在很多数据库系统设计的基本守则
ERP系统中超过100万条数据的表很多,对于很多表中的任何一个,一次取所有的会导致数据库服务器长时间处于停滞状态,并且影响其它在线用户的系统响应速度
一般来说,日常 *** 作,在分页显示的情况下面,每次取得数据在1-100之间,系统响应速度足够快,客户端基本没有特别长的停顿
这是比较理想的设计
这也是大型数据库系统往往用ODBC,ADO等等通用的数据库联接组件而不用特定的速度较快的专用数据库联接组件的原因
因为系统瓶颈在于数据库(Database)方面(数据量大),而不在于客户端(客户端每次只取少量数据)
在B/S数据库系统中,分页非常普遍
早期的数据库系统经常有客户端程序中一次性取大量数据做缓冲
现在已经不是特别需要了,主要原因有:5
1数据库本身的缓冲技术大大提高
大部分数据库都会自动将常用的数据自动放在内存中缓冲,以提高性能
5
2数据库联接组件的缓冲技术也在提高
包括ADO在内的一些数据库联接组件都会自动对数据结果集(resultset)进行缓冲,并且效果不错
比较新颖的数据库联接组件,比如Hibernate也加入了一些数据结果集缓冲功能
当然,也有一些数据库联接组件没有对数据结果集进行缓冲,比如JDBCDriver,不过几年之内情况应该有所改观
也有些不太成功的数据缓冲,比如EJB中的实体Bean,性能就不尽如人意,实体Bean数据也是放在内存中,可能是因为占用内存过多的缘故
相对来说,今天的程序员写客户端数据缓冲,能够超过以上两个缓冲效果的,已经比较难了
Access method(访问方法):此步骤包括从文件中存储和检索记录。Alias(别名):某属性的另一个名字。在SQL中,可以用别名替换表名。
Alternate keys(备用键,ER/关系模型):在实体/表中没有被选为主健的候选键。
Anomalies(异常)参见更新异常(update anomalies)
Application design(应用程序设计):数据库应用程序生命周期的一个阶段,包括设计用户界面以及使用和处理数据库的应用程序。
Attribute(属性)(关系模型):属性是关系中命名的列。
Attribute(属性)(ER模型):实体或关系中的一个性质。
Attribute inheritance(属性继承):子类成员可以拥有其特有的属性,并且继承那些与超类有关的属性的过程。
Base table(基本表):一个命名的表,其记录物理的存储在数据库中。
Binary relationship(二元关系):一个ER术语,用于描述两个实体间的关系。例如,panch Has Staff。
Bottom-up approach(自底向上方法):用于数据库设计,一种设计方法学,他从标识每个设计组建开始,然后将这些组件聚合成一个大的单元。在数据库设计中,可以从表示属性开始底层设计,然后将这些属性组合在一起构成代表实体和关系的表。
Business rules(业务规则):由用户或数据库的管理者指定的附加规则。
Candidate key(候选键,ER关系模型):仅包含标识实体所必须得最小数量的属性/列的超键。
Cardinality(基数):描述每个参与实体的可能的关系数目。
Centralized approach(集中化方法,用于数据库设计):将每个用户试图的需求合并成新数据库应用程序的一个需求集合
Chasm trap(深坑陷阱):假设实体间存在一根,但某些实体间不存在通路。
Client(客户端):向一个或多个服务器请求服务的软件应用程序。
Clustering field(群集字段):记录总的任何用于群集(集合)航记录的非键字段,这些行在这个字段上有相同的值。
Clustering index(群集索引):在文件的群集字段上定义的索引。一个文件最多有一个主索引或一个群集索引。
Column(列):参加属性(attribute)。
Complex relationship(复杂关系):度数大于2的关系。
Composite attribute(复合属性):由多个简单组件组成的属性。
Composite key(复合键):包含多个列的主健。
Concurrency control(并发控制):在多用户环境下同时执行多个十五并保证数据完整性的一个DBMS服务。
Constraint(约束):数据库不允许包含错误数据的一致性规则。
Data conversion and loading(数据转换和加载):数据库应用生命周期重的一个阶段,包括转换现有数据到新数据库中以及酱下耨应用程序转换到新的数据库上运行。
Data dictionary(数据字典):参见系统目录(system catalog)。
Data independence(数据独立性):使用数据的应用程序的数据描述部分。这意味着,如果将新的数据结构添加到数据库中,或者数据库中现有的结构被修改了,那么使用此数据库的就会受到影响,除非应用程序不直接依赖于被修改的部分。
Data model(数据模型):描述数据、数据间关系以及数据的约束的概念的一个集成的集合。
Data redundancy(数据冗余):参见冗余数据(redundant data)。
Data security(数据安全):包括对数据库对象(如表和视图)的访问和使用以及用户可以在这些对象上实施的 *** 作。
Database(数据库):是逻辑上相关的数据(以及这些数据的描述)的一个共享的集合,用于解决公司对信息的需求。
Database design(数据库设计):数据库应用生命周期中的一个阶段,包括创建一个支持公司的 *** 作和目标的数据库的设计。
Database integrity(数据库完整性):指存储数据的正确定和一致性。完整性通常用约束来表达。
Database Management System,DBMS(数据库管理系统):一个能够让用户定义、创建和维护数据库并控制对数据库的访问的软件系统。
Database planning(数据库规划):能尽可能有效的实现数据库应用的各阶段的管理活动。
Database server(数据库服务器):同服务器。
DBMS engine(DBMS引擎):同服务器。
DBMS selection(DBMS选择):数据库应用生命周期中的一个阶段,包括选择一个合适的DBMS来支持数据库应用。
Degree of a relationship(关系的度):一个关系中参与的实体的个数。
Denormalization(反规范化):形式上,这个术语指的是对基本表结构的修改,这样新的表比原始的表的规范化程度要低。但也可以用此属于更宽泛地形容将两个表和并成一个新表的情形,而这个新表与原来的表具有相同的范式,但比原表包含更多的空值。
Derived attribute(派生属性):表示其值可以从一个相关属性和属性集的值派生得到的属性,这个属性在实体中不是必须的。
Design methodology(设计方法学):一种结构化的方法,它使用过程、工具和文档来支持和简化设计过程。
Disjoint constraint(无连接约束):描述子类的成员间的关系,并指明超类某个成员是否有可能成为一个或多个子类的成员。
Domain(域):一个或多个属性的取值范围。
Entity(实体):具有相同性质的对象的集合,它是由用户或公司标识并可独立存在的。
Entity integrity(实体完整性):在一个基本表中,主健列的值不能为空。
Entity occurrence(实体出现):实体中的一个可标识的对象。
Entity-Relationship model(实体关系模型):公司的实体、属性和关系的详细逻辑表示。
Fact-finding(事实发现):使用诸如面谈和提问等技术收集关于系统的事实、需求和性能的形式化过程。
Fan trap(扇形陷阱):但从第三个实体扇出的两个实体有1:关系时出现扇形陷阱,但这两个实体在他们之间应该有直接关系以提供必要的信息。
Field(字段):同元组(Tuple)。
File(文件):存储在副主存储器中的相关记录的一个命名集合。
File-based system(基于文件的系统):一个文件集合,用来管理(创建、插入、删除、更新和检索)一个或多个文件中的数据,并产生基于这些文件中的数据的应用(通常是报表)。
File organization(文件组织):当文件存储在磁盘上时,对文件中的记录的安排方式。
First normal form(1NF,第一范式):表中的每个列的交叉处以及记录包含切进包含一个值的表。
Foreign key(外健):一个表中的一个列或者多个列的集合,这些列匹配某些其他(也可能是同一个)表中的候选键。
4GL, Fourth-Generation Language(第四代语言):一种非过程化语言,比如SQL,他只需要用户定义必须完成什么 *** 作,4GL负责将所进行的 *** 作翻译成如何实现这些 *** 作。
Full functional dependency(完全函数依赖):一个列在功能上依赖于复合主健,但不依赖于主健的任何一个子集的条件。
Functional dependency(函数依赖):描述表中列之间的关系。
Generalization(泛化):通过标识实体间的公共特征使实体间差别最小化的过程。
Generalization hierarchy(泛化层次结构):同类型层次(type hierarchy)。
Global data model(全局数据模型):代表整个公司(和被模型化的公司的一部分)的数据模型。
Implementation(实现):数据库应用生命周期中的一个阶段,包括数据库和应用程序设计的物理实现。
Index(索引):一种允许DBMS将特定的记录更快的放置到文件中,从而加快对用户查询的响应的数据结构。
Infomation system(信息系统):能够在整个公司范围内收集、管理、控制和分发数据/信息的资源。
Inheritance(继承):参见属性继承(attribute inheritance)。
Integrity constaints(完整性约束):防止出现数据库中的数据不一致的约束。
IS-A hierarchy(IS-A层次结构):同类型层次结构(type hierarchy)。
Local logical data model(局部逻辑数据模型):代表特定用户视图或用户视图的组合的数据模型。
Logical database design(逻辑数据库设计):基于特定的数据模型构建公司的数据的模型的过程,但不依赖于特定的DBMS以及其他的物理条件。
Meta-data(元数据):关于数据的数据,参见系统目录(system catalog)。
Mision objective(使命目标):标识数据库必须支持的特定任务。
Mission statement(使命语句):定义数据库应用程序的主要目标。
Multiplicity(多样性):定义与某个相关实体的一次出现有关的实体的出现数目。
Multi-valued attribute(多值属性):为一个实体的出现保存多个值的属性。
Nonkey attribute/column(非键属性/列):不是键的一部分的属性/列。
Normal forms(范式):规范化过程的一个阶段。前三个范式分别为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
Normalization(规范化):一种产生带有需要的特性的技术,这种特性能支持用户和公司的需求。
Null(空值):表示当前不知道或对于这条记录来说不可使用的一个列的值。
Operational maintenance( *** 作维护):数据库应用生命周期的一个阶段,包括监视和维护系统安装后的运行。
Participation constraint(参与约束,EER模型):确定超类中的每个出现是否必须作为子类的一个成员进行参与。
Participation constraint(参与约束,ER模型):确定是否所有或者仅仅是某些实体出现参与到关系中。
Physical database design(物理数据库设计):在二级存储上产生数据库实现的描述的过程,它描述基本表、文件的组织、用于获得有效访问的索引以及所有与完整性约束和安全性限制有关的说明。
Primary index(主索引):在文件的有序键字段上构建的索引。一个文件最多可以有一个主索引或一个群集索引。
Primary key(主健,ER模型):用来标识每个实体的出现的候选键。
Primary key(主健,关系模型):在一个表中用来标识记录性的候选键。
Privileges(权限):允许用户在给定基本表和视图上执行的 *** 作。
Prototyping(原型):数据库的应用程序生命周期的一个阶段,包括勾践数据库应用程序的工作模型。
Query-by-Example(QBE):一种用于关系型DBMS的非过程化的数据库语言。QBE是一个图形化的“点-按”查询数据库的方法。
RDBMS:关系型DBMS。
Record(记录):同元组(Tuple)。
Recovery control(恢复控制):当时百事,将数据库还原到正确状态的过程。
Rcursive relationship(递归关系):一种关系,挡同一个实体在不同的角色中参与多次时就会出现递归关系。例如Staff Supervises Staff。
redundant data(冗余数据):在多个表中存储的重复数据。
Referential integrity(参照完整性):如果一个表中存在外健,则外健值必须匹配主表中的某些记录的候选键的值。
Relation(关系):一个关系是一张表,它也有列和行。
Relational model(关系模型):以表(或关系)的形式表示数据的数据模型。
Relational database(关系数据库):规范化表的集合。
Relation (关系):实体间有意义的关系。
Relationship occurrence(关系出现):两个实体出现之间的可标识的联系。
Requirements collection and analysis(需求收集于分析):数据库应用程序生命周期的一个阶段,包括收集和分析数据库应用程序所要支持的关于公司的信息,并使用这些信息来标识新的数据库应用需求。
Row(行):同元组(Tuple)。
Second normal form(第二范式):一个已经是第一范式的表,同时满足所有的非主健列只能从构成主健的全部列中获得。
Secondary index(二级索引):在数据文件的非有序字段上定义的索引。
Security(安全):指防止数据库被非授权的用户访问,包括有意的和无意的。RDBMS通常提供两种类型的安全:数据安全和系统安全。
Server(服务器):为发出请求的客户提供服务的软件应用程序。参见两层/三层客户端-服务器体系结构。
Simple attribute(简单属性):只有一个组件的属性。
Single -valued attribute(单值属性):对于一个实体出现只有一个值的属性。
Specialization(特化):通过标识用来区分实体间成员的特征来花实体间成员的差别的过程。
Specialization hierarchy(特化层次结构):同类型层次结构(Type hierarchy)。
SQL(Structured Query Language,结构化查询语言):一种用于RDBMS的非过程化数据库语言。换言之,你只需要指定你需要那些信息,而不需要指定如何得到这些信息。SQL已经被国际标准化组织(ISO)标准化了,因此SQL是定义和 *** 纵RDBMS的正式和实际上的标准语言。
Strong entity(强实体):一个不依赖于其他实体的主健的存在而存在的实体。
Subclass(子类):为(超类)实体中的某些出现并保持特定属性和关系并有不同角色的实体
Superclass(超类):为实体中的所有出现保存公共属性和关系的实体。可参见特化和泛化。
Superkey(超键,ER模型):一个属性或属性集,诶译的标识了每个实体地出现。
Superkey(超键,关系模型):一个列或者列集,的标识了表中地一个记录。
System catalog(系统目录):保存关于数据库地结构、用户、应用程序等信息地数据。
System definition(系统定义):数据库应用声明周期重的一个阶段,包括定义数据库应用程序以及他的主要用户视图地范围和边界。
System security(系统安全):在系统级保护数据库地访问和使用,不如用户名和密码。
Table(表):同关系(relation)。
Ternary relationship(三元关系):三个实体间的关系。例如panch,staff和member之间的Registers关系。
Testing(测试):数据库应用生命周期的一个阶段,包括执行应用程序并有意地发现错误。
Third normal form,3NF(第三范式):一个已经是1NF和2NF的表,同时满足所有的非主健的列的值仅能从主健列得到,而不能从其他列得到。
3GL, Third-Generation Language(第三代语言):一种过程化的语言,比如COBOL、C、C++,它需要用户(通常是程序员)指定必须要干什么事情以及如何干这些事情。
Three-tier client-server architecture(三层客户端-服务器体系结构):由处理用户界面的客户和处理业务逻辑的应用程序服务器以及数据处理曾组成,而数据库服务器是用来来运行DBMS的。
Top-down approach(自顶向下方法,用于数据库设计):一种设计方法,此种方法从定义系统的主要结构开始,然后将这些结构逐步细分成更小的单元。在数据库设计中,通过标识实体和数据间的关系开始这个顶层的步骤,然后逐步添加细节,比如你希望保存的关于实体和关系的信息(成为属性)以及在实体、关系和属性上的所有约束。
Transaction(事务):由用户和应用程序执行的一个动作或一系列动作,这些动作访问或修改数据库的内容。
Transaction Processing Monitor,TPM(事务处理监视器):控制数据在客户端和服务器键转换的程序,以便为联机事务处理(OLTP)提供一个一致的环境。
Transitive dependency(传递依赖):假设A、B、C是表中的列,如果B依赖于A(A-->B),并且C依赖于B(B- ->C),则C通过B传递而依赖于A(假设A不依赖于B或C)。如果在主健上存在一个传递依赖,则此表就不是3NF的。必须从表中去掉传递依赖以达到3NF的要求。
Tuple(元组):关系中的一行记录。
Two-tier client-server architecture(两层客户端-服务器体系结构):由处理主要业务和数据处理逻辑以及与用户的接口的客户端应用程序和管理和控制数据库访问的服务器程序组成。
Type hierarchy(类型层次结构):一个是提以及它的子类和他们的超类,等等。
UML(Unified Modeling Language,统一建模语言):在20世纪80年代和90年代引入的诸多面向对象分析与设计方法重的一种较新的方法。
Update anomalies(更新异常):当用户视图更新一个包含冗余数据的标识可能引起的不一致。有三种类型的异常:插入、删除和更新。
User view(用户视图):从特定的作业(比如经理或管理者)角度或业务应用领域(比如市场、职员或库存控制)定义的数据库应用的需求。
View(视图):一个“虚拟底表”,它不实际存在数据库中,但他由 DBMS从现有底它所涉及的基本表中产生。
View integration approach(视图综合法,用于数据库设计):每个用户视图的需求,用来构建代表用户试图底独立数据模型。在数据库设计阶段,结果数据库模型被合并成一个更大的模型。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)