ER图是概念模型。
ER图,即实体-相关图(Entity-Relationship Diagram),是数据库设计中用于形容理想环球概念模型的一种图形示意方法。
它关键用于在逻辑设计之前,经过形象和概括来反映理想环球中的事物及其相互相关。
在ER图中,实体被示意为矩形,相关被示意为菱形,而属性则被参与到相应的实体或相关中。
概念模型是理想环球到消息环球的第一层形象,是数据库设计人员启动数据库设计的有力工具,也是数据库设计人员和用户之间启动交换的言语。
它关键关注于形容理想环球中存在的事物(实体)以及这些事物之间的咨询(相关),而不触及详细的数据结构、存储方式或操作细节。
ER图正是这样一种概念模型,它协助设计人员了解业务需求,捕捉关键消息,并为后续的逻辑设计和物理设计打下基础。
举例来说,假定咱们要为一个学校设计数据库,咱们可以经常使用ER图来示意学校中的“在校生”、“课程”和“选课”等概念以及它们之间的相关。
在这个ER图中,“在校生”和“课程”会被示意为两个实体,它们各自有自己的属性,如“在校生”有“学号”、“姓名”等属性,“课程”有“课程号”、“课程名”等属性。
而“选课”则示意在校生与课程之间的一种多对多的相关。
经过这种图形化的示意方法,咱们可以直观地看到各实体之间的相关,以及属性的归属状况。
总的来说,ER图作为一种概念模型,在数据库设计的初期阶段施展着关键的作用。
它协助设计人员从全体上掌握系统的数据结构,为后续的逻辑设计和物理设计提供明晰的指点。
同时,ER图的直观性和易了解性也使得它成为与用户和其余设计人员沟通的有效工具。
各种类型数据的初等界面,起初逐渐演化成满足一切数据访问要求的完整解(SELECT借书证号,明码FROM[user]WHERE(借书证号=:tt));[0]:=username;;在为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等命令),例如(这样会前往一个查问结果集)假设调用Open方法,而没有查问结果时,会出错。
此时应该调用ExecSQL方法来替代Open方法。
如(没有前往结果)当然在设计运行程序时,程序设计人员是不可确定TQuery或TADOquery组件中的SQL语句能否会前往一个查问结果的。
关于这种状况应当用Try…Except模块来设计程序。
在Try部分调用Open方法,而在Except部分调用ExceSQL方法,这样能力保障程序的正确运转。
例如经过Tquery或TADOquery组件可以取得两种类型的数据:u“优惠”的数据这种数据就跟经过TTable部件取得的数据一样,用户可以经过数据阅读部件来编辑修正这些数据,并且当调用Post方法或当焦点退出以后的数据阅读部件时,用户对数据的修正智能地被写回到数据库中。
u非优惠的数据(只读数据)用户经过数据阅读部件是不能修正其中的数据。
在缺省状况下,经过TQuery部件取得的查问结果数据是只读数据,要想取得“优惠”的数据,在运行程序中必定要设置Tquery或TADOquery组件的RequestLive属性值为True,但是并不是在任何状况下(经过设置RequestLive的属值True)都可以取得“优惠”的数据的,要想取得“优惠”的数据,除了将TQuery部件的RequestLive属性设置为True外,相应的SQL命令还要满足以下条件。
本地SQL语句查问状况下,要获取可降级的数据集,SQL语句的限度为:n查问只能触及到一个独自的表nSQL语句中不能蕴含ORDERBY命令nSQL语句中不能含汇集运算符SUM或AVGn在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。
§3.4MSSQLServer简述SQLServer是一个后盾数据库治理系统,它性能弱小操作简便,日益为广阔数据库用户所喜欢。
越来越多的开发工具提供了与SQLServer的接口。
SQLServer是一个相关数据库治理系统,它最后是由Microsoft、Sybase和Ashton-Tate三家公司独特开发的。
于1988年推出了第一个OS/2版本,在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就各奔前程了,Microsoft将SQLServer移植到WindowsNT系统上,专一于开发推行SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer数据库治理系统的最新版本,该版本承袭了SQLServer7.0版本的好处,同时又比它参与了许多更先进的性能、具备经常使用繁难、可伸缩性好与相关软件集成水平初等好处。
可超越从运转MicrosoftWindows98的膝上型电脑到运转MicrosoftWindows2000的大型多处置器的主机等多种平台经常使用。
MSSQLServer岂但可以运行于大中型数据库治理中,建设散布式相关数据库,并且也可以开发桌面数据库。
理想上,SQLServer数据库处置的基本结构,采取相关型数据库形式,虽然如此,置信大家都可以随便的发现,在SQLServer的数据库处置方式,则是经常使用面向对象的操作方式与精气,也就是说,SQLServer的一切性能,都可以基于系统曾经建设好的一些对象来达成,是相当OO(面向对象)的一个系统结构。
SQLServer企业治理器是SQLServer的关键治理工具,它提供了一个听从MMC规范的用户界面,经常使用户得以:·定义SQLServer实例组。
·将一般主机注册到组中。
·为每个已注册的主机性能一切SQLServer选项。
·在每个已注册的主机中创立并治理一切SQLServer数据库、对象、登录、用户和权限。
·在每个已注册的主机上定义并口头一切SQLServer治理义务。
·经过唤醒调用SQL查问剖析器,交互地设计并测试SQL语句、批处置和脚本。
·唤醒调用为SQLServer定义的各种导游。
·第三章图书治理系统设计剖析§4.1运行需求剖析图书治理系统要求满足来自三方面的需求,这三个方面区分是图书借阅者、图书馆上班人员和图书馆治理人员。
图书借阅者的需求是查问图书馆所存的图书、团体借阅状况及团体消息的修正;图书馆上班人员对图书借阅者的借阅及还书要求启动操作,同时构成借书或还书报表给借阅者检查确认;图书馆治理人员的性能最为复杂,包括对上班人员、图书借阅者、图书启动治理和保养,及系统形态的检查、保养并生成催还图书报表。
图书借阅者可间接检查图书馆图书状况,假设图书借阅者依据自己借书证号和明码登录系统,还可以启动自己借书状况的查问和保养部分团体消息。
普通状况下,图书借阅者只应该查问和保养自己的借书状况和团体消息,若查问和保养其余借阅者的借书状况和团体消息,就要知道其余图书借阅者的借书证号和明码。
这些是很难获取的,特意是明码,所以岂但满足了图书借阅者的要求,还包全了图书借阅者的团体隐衷。
图书馆上班人员有修正图书借阅者借书和还书记载的权限,所以需对上班人员登陆本模块启动更多的思考。
在此模块中,图书馆上班人员可认为图书借阅者参与借书记载或是还书记载,并打印生成相应的报表给用户检查和确认。
图书馆治理人员性能的消息量大,数据安保性和隐秘性要求最高。
本色能成功对图书消息、借阅者消息、总体借阅状况消息的治理和统计、上班人员和治理人员消息检查及保养。
图书馆治理员可以阅读、查问、参与、删除、修正、统计图书的基本消息;阅读、查问、统计、参与、删除和修正图书借阅者的基本消息,阅读、查问、统计图书馆的借阅消息,但不能参与、删除和修正借阅消息,这部分性能应该由图书馆上班人员口头,但是,删除某条图书借阅者基本消息记载时,应成功对该图书借阅者借阅记载的级联删除。
并且还应具备生成催还图书报表,并打印输入的性能。
在本系统中由于没有打印机设施供实验,所以预先把报表打印改成报表预览。
设计不同用户的操作权限和登陆方法对一切用户开明的图书查问借阅者保养借阅者团体部分消息借阅者检查团体借阅状况消息保养借阅者团体明码依据借阅状况对数据库启动操作并生成报表依据还书状况对数据库启动操作并生成报表查问及统计各种消息保养图书消息保养上班人员和治理员消息保养借阅者消息处置消息的完整性对借阅过时的图书生成报表图4-2图书治理系统数据库运行需求的总结依据以上所做的需求剖析,并略掉一些细节(如不思考用户的登录;对记载的保养),得出以下的三层数据流图。
§4.2系统性能模块划分系统性能框图如图4-10所示。
§4.3系统数据库设计4.3.1概念设计在概念设计阶段中,设计人员从用户的角度看待数据及处置要求和解放,发生一个反映用户观念的概念形式。
而后再把概念形式转换成逻辑形式。
将概念设计从设计环节中独立开来,使各阶段的义务相对繁多化,设计复杂水平大大降落,不受特定DBMS的限度。
应用ER方法启动数据库的概念设计,可分红三步启动:首先设计部分ER形式,而后把各部分ER形式综分解一个全局形式,最后对全局ER形式启动提升,获取最终的形式,即概念形式。
(1)设计部分ER形式实体和属性的定义:图书(图书编号,图书称号,作者,出版社,出版日期,备注,多少钱,数量,)借阅者(借书证号,姓名,性别,身份证,咨询电话,明码)身份(身份编号,身份形容,最大借阅数)图书类别(图书类别编号,类别形容)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所示。
4.3.2相关数据库的逻辑设计由于概念设计的结果是ER图,DBMS普通采用相关型(自己所经常使用的MSSQLServer就是相关型的DBMS),因此数据库的逻辑设计环节就是把ER图转化为相关形式的环节。
由于相关模型所具备的好处,逻辑设计可以充沛运用相关数据库规范化实践,使设计环节方式化地启动。
设计结果是一组相关形式的定义。
(1)导出初始相关形式book(图书编号#,图书称号,图书类别#,作者,出版社,出版日期,备注,多少钱,数量)class(图书类别#,类别名)user(借书证号#,姓名,性别,身份编号#,身份证,咨询电话,明码)ID(身份编号#,身份形容,最大借阅数)Owner(借书证号#,图书编号#,借书日期)图4-14相关形式集(2)发生子形式子形式是用户所用到的那部分数据的形容。
除了指出用户用到的数据外,还应指出数据与概念形式中相应数据的咨询,即指出概念形式与子形式之间的对应性。
借书子形式(借书证号#,姓名,图书编号#,图书称号,借书日期)图4-15部分子形式(3)依据设计中发生的疑问自己在写系统时还参与了两个相关形式:1、ownertemp:用于上班人员在处置借书、还书上班时暂时存储借书、还书消息,以便打印报表时经常使用。
2、keyer:用于存储上班人员和图书馆治理员的用户名和明码及权限,以便上班人员或图书馆治理员进入相应的性能模块时启动验证用户的身份。
4.3.3数据库的成功我决定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数据库表间咨询图第五章图书治理系统运行程序设计§5.1系统窗体模块组成§5.2数据模块窗体的设置在编写数据库运行程序时,经常要遇到这样的状况,即好多组件、窗体同时访问相反的数据源,假设为每一个组件或许窗体都设置一个数据源将是十分耗时的工件,而且要保障这些数据源确实是相反的也需花一番功夫。
那么,能不能将这些数据源集中治理,最好是做成一个一致的模块,要求时就将该模块引入而不用间接操作数据源自身呢?数据模块(DataModule)是处置这个疑问最好的答案。
繁难说来,数据模块是用来集中治理数据源的一个窗体,该窗体可被要求的中央随时引入。
但自己在开发这个系统时,开局经常使用了一下数据模块,但在经常使用环节中却碰到了一些疑问。
并且思考这个系统经常使用到的TADOQuery控件比拟多,假设经常使用数据控件或许会带来治理上的费事,如弄混各个数据控件的作用。
还思考到经常使用灵活生成ADOQuery或许会更节俭资源。
所以在自己的系统中,开局做的第一个模块“借阅者团体模块”中还稍微经常使用了一下数据模块。
但在前面做的两个模块中大多都是用灵活生成ADOQuery来成功的。
并且由于SQL语句是灵活参与的所以datamodule中的控件也不会多。
§5.3启动画面的成功启动画面是为了给用户一个良好的印像,加深软件的亲和力,没有实践的性能,在Form1窗体中参与了Image和Time组件。
启动画面的窗体略,关键的源代码如下:§5.4用户登录窗体的的成功本窗体是为三种不同的用户(普通用户,上班人员,治理员)提供决定以进入不同的模块,满足不同用户的需求。
源代码比拟繁难,略。
§5.5用户明码认证窗体的的成功本窗体是为了让上班人员或图书馆治理员依照用户名和明码启动登录,并且跟据用户名审核Keyer表中的“权限”字段,以辩白进入图书馆治理人员模块还是进入上班人员模块。
窗体界面、源代码如下§5.6借阅者服务模块的成功借阅者服务窗体的性能关键是图书的查问,团体借阅状况检查及团体部分消息的修正。
界面图如下:5.6.1图书查问性能的实如今本系统中,任何人都有权限经常使用查问性能,不做任何限度。
界面如下,由于成功的查问性能有多种,如按图书编号、图书称号等字段启动齐全体配查找和部分体配的含糊查找,还有按多个条件启动逻辑与或是逻辑或的多条件查找。
其中成功的方法者差不多,所以只给出多条件查找的代码,如下:5.6.2借阅者登录性能的成功这特性能的成功与上班人员和治理人员登录性能成功的方法大抵一样,并且还要繁难。
是从User表中查到到借阅证号与明码,看与用户输入的能否分歧。
假设分歧,那么用户就可检查自已的借阅状况并保养自己的部分消息。
源代码与借阅者登录界面都略。
5.6.3借阅者借阅状况性能的成功当借阅者正确登录到系统后,此性能将被激活,经常使用户能检查到自身的借阅状况。
在此系统中,消息的显示普通用ListView来成功,只在较少的状况下用到了DBgrid,由于我感觉ListView更好成功,并能使消息数据对用户的齐全分别。
在这里跟据借阅者的不同要求成功借阅状况的查问,有审核一切的借阅情部、某本书的借阅状况、和依据已借阅天数的来查问。
其中根椐借阅天数来查问更有代表性,有方式一和方式二。
以下给出此性能的源代码按借阅天数查问方式一按借阅天数查问方式二5.6.4借阅者团体资料保养性能的成功此性能成功以后借阅者部份资料的修正,但借书证号和身份类别这样的消息不准许修正,这是图书馆治理员模块的性能。
在此界面中点击修正按钮将发生“修正”窗体(Form8),点击修正明码按钮将发生groupbox8,在这里启动明码修正。
关键源代码如下。
这里给出团体部分消息修正的源代码:这里给出明码修正的源代码:5.7上班人员-图书借阅/出借模块的成功5.7.1上班人员启动图书借阅性能实如今这特性能中,上班人员输入借阅者的借阅证号和所要借阅的图书的图书编号,而后点击借阅按钮就可启动图书借阅。
思考到实践中或许会发生只知图书名而不知图书编号的状况,在此界面下方参与了一个转换性能,可以把图书称号转换成图书编号,再启动图书借阅。
在借阅成功后会生借阅报表以便借阅者审核和确认,借阅报表的打印成果如下图,成功比拟繁难,略去成功环节。
5.7.2上班人员启动图书出借性能实如今此性能中,上班人员依据借阅者的借书证号和出借的图书编号启动图书的出借上班。
并且依据理想中或许会发生的只知图书名不知图书编号的出借状况,所以参与了按书籍称号启动出借的性能。
这特性能是图书借阅性能中把图书称号转换成图书编号的一种改良方法,这样就不用如借阅性能中一样要先转换再借阅了。
出借成功后,相同会打印出出借报表以便用户审核和确认。
5.8图书馆治理员模块的成功5.8.1图书馆治理员图书治感性能的实如今这特性能中可以在(*图书编号)中输入图书编号,点查找按钮后就会在各个相应的组件中显示出消息,或按图书称号含糊查找到所要的记载,在各个相应的组件中显示第一条记载的消息,也可在下端的ListView组件中点击某一条记载,在各个相应的组件中也会显示所选记载的消息。
在入库性能中只需不是相反的图书编号并且带*号揭示的字段不为空就可拔出新的图书记载。
删除则删除那些Book表中的图书记载,假设借出还可依用户要求连带删除owner表中的记载。
由于图书修正与图书入库的性能与上班人员记载修正和上班人员记载参与的成功环节一样,所以上方仅给出删除性能的源代码,如下5.8.2图书馆治理员上班人员和治理员治感性能的实如今此性能中可以参与上班人员或是治理员,或是修正他们的明码、权限。
在此性能中假设选中ListView中的记载,则在左边相应的组件中显示出消息,并且治理员还可对这些记载启动修正或参与新的记载。
并且也可以点删除按钮删除选中的一条或多条记载。
删除性能与图书记载的删除普通,所以上方只给出参与与修正的成功环节。
5.8.3图书馆治理员修正图书类别及统记过能的实如今此窗体中能对图书的类别启动删除,参与和修正,这模块的性能的成功环节与图书记载的删除,参与和修正一样的,但是这个窗体还能跟据图书类别启动统计,还可依据Book表和owner表统计出图书总数目,库存图书数目,借出图书数目及借阅过时的图书数目。
在这里给出统计图书总数目,库存图书数目,借出图书数目及借阅过时的图书数目标成功环节中的几个函数和环节5.8.4图书馆治理员借阅者治感性能的成功查问借阅者可依据借阅者的借书证号或姓名或身份编号查找到借阅者的消息,也可以履行含糊查找,这特性能的成功与前面图书查找的成功环节普通,就不再详细说明。
5.8.5图书馆保养借阅者治感性能的成功此性能能对借阅者消息启动检查参与、删除、修正。
在这里给出刷新按钮的成功环节5.8.6图书馆身份保养性能的成功这一部分是对借阅者身份启动治理,能对身份启动参与、删除、修正。
并且相同的在listview当选中某条或多条记载时会在相应的左边的组件中显示出消息。
此性能成功环节与前面所叙有相同,略。
5.8.7图书馆借阅者统计性能的成功此性能按借阅者身份启动统计,得出具备某种身份的借阅者总数,此种身份的并借阅图书的借阅者数和所借阅的图书数,在上方给出成功环节。
5.8.8图书馆统计借阅过时记载性能的成功打印出的借阅过时催还报表如下图所示:此报表能显示按借书证号升序陈列的借阅消息超越限定时限的消息,其中关键的SQL语句如下:5.9系统消息显示的成功显过本系统的消息,并且左边的字向上滚动显示,关键成功如下: 假设对您有协助,请记得采用为满意答案,谢谢!祝您生存欢快!
本文地址:http://www.hyyidc.com/article/31010.html