delphi7数据库编程学习捷径.ppt
Delphi 7 Delphi 7 Delphi 7 Delphi 7 数据库编程数据库编程数据库编程数据库编程 学习捷径学习捷径学习捷径学习捷径敬喜敬喜敬喜敬喜 王昀王昀王昀王昀北京科海电子出版社北京科海电子出版社目目录录第第1 1章章 Delphi 7 Delphi 7 集成开发环境(集成开发环境(IDEIDE)介绍)介绍第第2 2章章 Delphi 7 Delphi 7数据库系统概述数据库系统概述第第3 3章章 Delphi 7 Delphi 7和数据库和数据库第第4 4章章 创建数据库创建数据库 第第5 5章章 读写字段值读写字段值 第第6 6章章 计算字段计算字段第第7 7章章 链接表链接表第第8 8章章 查找和确认数据查找和确认数据第第9 9章章 制作数据输入窗体制作数据输入窗体第第1010章章 列表和查找表列表和查找表第第1111章章 查询和设定范围查询和设定范围第第1212章章 多窗体和打印窗体多窗体和打印窗体第第1313章章 制作报表制作报表第第1414章章 开发图表开发图表第第1515章章 将图或文件存入数据库将图或文件存入数据库第第1616章章 编写多媒体数据库应用程序编写多媒体数据库应用程序 第第1717章章 数据库开发实例数据库开发实例学生管理系统学生管理系统第1章Delphi 7 Delphi 7 集成开发环境(集成开发环境(IDEIDE)介绍)介绍1.1.Delphi 7 IDE Delphi 7 IDE 运行界面运行界面 通常,启动通常,启动Delphi 7Delphi 7的方法是:单击的方法是:单击“开始开始”按钮,然后依次从级联按钮,然后依次从级联菜菜单中选择单中选择“程序程序”Borland Delphi 7Delphi 7”Borland Delphi 7Delphi 7选项,就进入了选项,就进入了Delphi 7Delphi 7IDE IDE 运行界面,如图运行界面,如图1.11.1所示。其各组成部分的功能见教材所示。其各组成部分的功能见教材1.31.31.71.7节。节。图图1.1 Delphi7 IDE 1.1 Delphi7 IDE 运行界面的组成运行界面的组成12453 主窗口主窗口 窗体窗口窗体窗口 代码编辑窗口代码编辑窗口 对象查看器对象查看器 对象树形结构浏览窗口对象树形结构浏览窗口1232.2.Delphi 7 Delphi 7 主窗口主窗口主窗口是Delphi7IDE的核心,开发人员通过主窗口进行创建工程、编写程序、调试程序、运行和维护应用程序等一系列管理工作。Delphi 7 主窗口由3个部分组成(其功能见教材1.3节),如下图所示。组件模板(Component Palette)主菜单(Menu)快捷工具条(Speed Bar)3.3.组件模板及组件设置组件模板及组件设置 放置组件、设置属性和为“终止”事件编写代码的步骤:单击窗体空闲部分,放置一个按钮。设置按钮标题为“终止”。在事件标签页上双击OnClick右边单元格。在代码编辑窗口中编写终止程序的代码。在组件模板上选择组件,例如Ok按钮。第第2章章Delphi7数据库系统概述数据库系统概述1.Delphi 7 1.Delphi 7 数据库特性数据库特性 数据访问组件(Data Access Components):主要用于说明数据库的有关信息,如应用程序要访问(连接)的数据库和要访问数据库中的具体的数据库表,以及要访问表中的哪些字段等。常用的数据访问组件有TTable、TQuery、TDataSource等。数据控制组件(Data Control Components):主要用于显示浏览数据库中的数据信息,为用户提供可视化的界面,可以让用户对数据库中的数据信息,进行浏览、编辑、插入、删除等操作。因而,数据控制组件也被称之为数据浏览组件。数据控制组件既能够把数据库中的数据显示到窗体中,又能将其自身的经过修改的数据写回到数据库中。常用的数据控制组件有TDBGrid、TDBEdit、TDBCheckBox等。BDEDataAccessComponents数据访问组件TTableTDataSourceTQueryTDataSourceDataControlComponents数据控制组件TDBGridTDBEditTDBCheckBoxTDBGridTDBEditTDBCheckBox(用户接口)数据库数据库引擎:BDE数据访问组件数据控制组件DBD窗口工具条DBD窗口菜单2.2.数据库桌面(数据库桌面(DBDDBD:Database DesktopDatabase Desktop)数据库桌面DBD是数据库维护和数据定义的工具,利用它可以完成查询、连接、建立、重建结构(简称重构)、索引、修改和复制数据库表,而且在操作时,用户不必拥有Paradox或dBASE数据库管理系统。使用数据库桌面DBD还可以把一种格式的数据和数据字典拷贝为另一种格式,例如,将一个dBASE的表拷贝到远程的SQL服务器上的一个数据库中去。另外,数据库桌面DBD程序可以建立数据库并执行与数据库有关的其他操作。例如,设置工作目录、设置工作目录别名、创建数据库表、在数据库表中输入数据、对表中记录排序、移动记录、用不同字体或其他形式显示表中的数据,以及用表来检查和测试Delphi 7 程序等。3.3.部分数据访部分数据访 问组件的主问组件的主 要用途要用途 部分数据访问组件的主要用途组件名称主 要 用 途TDataSource是数据集组件与数据控制组件之间传送数据的通道TTable是存取数据库表的媒介,通过BDE存取数据库表中的数据,再与TDataSource进行对话,使得数据控制组件能在TTable中访问数据,以及显示、编辑数据TQuery利用SQL语言访问数据库表中的数据,并与TDataSource进行对话以实现数据控制组件访问数据库TStoredProc在应用程序中用于访问远程服务器中的存储过程(它封装了数据库服务器上的存储过程)TQuickRep在应用程序中用于创建数据库的输出报表TSession这是一个全局的组件,用户可以在程序中使用它的属性和方法TDatabase它可以连接到单一数据库上,例如,当需要与数据库持续连接、使用了定制的数据库服务、使用事物处理组件或程序中确定了BDE别名时,就可以使用TDatabase组件。但最主要的用途是在SQL数据库的应用中4.部分部分数据数据控控制制组组件件的主的主要用途要用途部分数据控制组件的主要用途部分数据控制组件的主要用途组件名称组件名称主主 要要 用用 途途TDBText是一个只读的数据显示组件,它显示的是表中的当前记录值,因此它的显示是动态变化的 TDBEdit专门用来显示和编辑数据库表中的单个字段。通过它的DataSource属性和DataField属性来指定对应的表和字段 TDBGrid以网格方式显示数据库中的数据并可以进行编辑。利用字段编辑器(Field Editor)可以对数据库中字段的显示格式、顺序或者是否显示进行控制 TDBCheckBox浏览数据库中数据的复选框,用于显示和编辑数据库中布尔型字段的字段值 TDBNavigator称为导航控件,可用来前后移动记录指针,对单个记录进行编辑(包括插入、删除、刷新显示和取消等操作)TDBImage用于显示、复制、粘贴数据库表中的图像类型的字段 第第3 3章章Delphi 7Delphi 7和数据库和数据库 3.1 3.1 创建一个创建一个Delphi 7 Delphi 7 工程(工程(ProjectProject)的步骤)的步骤 3.2 3.2 定制窗体定制窗体(1 1)启动)启动Delphi 7Delphi 7,从,从FileFile菜单中选择菜单中选择FileNewApplicatin FileNewApplicatin 命令,创建一个新工程。命令,创建一个新工程。(2 2)保存新的工程。从)保存新的工程。从FileFile菜单中选择菜单中选择FileSave AsFileSave As命令命令,保存单元文件保存单元文件CHello.pasCHello.pas和工程文件和工程文件Hello.dprHello.dpr。(3 3)执行程序便生成一个可执行的)执行程序便生成一个可执行的EXEEXE文件文件Hello.EXEHello.EXE。第3章第1节完成的定制窗体CdmHello清除欢迎终止执行程序后单击“欢迎”按钮的程序窗口欢迎清除终止3.3 3.3 编写代码编写代码为为“终止终止”按钮编写代码的目的是,当用户单击按钮编写代码的目的是,当用户单击“终止终止”按钮按钮时,可以终止时,可以终止CHello.EXECHello.EXE程序的运行。那么,应该为程序的运行。那么,应该为cmdExitClickcmdExitClick过程输入下列代码:过程输入下列代码:Application.Terminate;Application.Terminate;。这样,当用户单击这样,当用户单击“终止终止”按钮时,程序执行按钮时,程序执行“Application.Terminate;”“Application.Terminate;”语句,即终止语句,即终止CHello.EXECHello.EXE程序。程序。3.4 Methods3.4 Methods(方法)(方法)现在,我们来介绍有关现在,我们来介绍有关MethodsMethods(方法)的主题。(方法)的主题。在在PascalPascal语言中,在对象中说明的过程或函数称为方法。它的语法是:语言中,在对象中说明的过程或函数称为方法。它的语法是:例例如如,Application.Terminate;Application.Terminate;,这这个个程程序序语语句句说说明明TerminateTerminate(终终止止)方方法法被被调调用用,或或者者说说,ApplicationApplication对对象象调调用用了了TerminateTerminate方方法法。当当程程序序执执行行这这个个语句时,就实现这个语句时,就实现这个TerminateTerminate方法,即终止程序运行。方法,即终止程序运行。又又例例如如程程序序语语句句Memo1.CutToClipboard;Memo1.CutToClipboard;,表表明明调调用用一一个个名名为为Memo1Memo1的的MemoMemo组组件件的的CutToClipboard(CutToClipboard(剪剪贴贴)方方法法。其其中中,Memo1Memo1是是一一个个对对象象的的名名称称,当当程程序序执执行行这这个个语语句句时时,就就实实现现这这个个CutToClipboardCutToClipboard方方法法,即即把把Memo1Memo1中中的的文文本本剪剪贴贴到到剪剪贴板上去。贴板上去。举举例例:作作为为一一个个例例子子,打打开开一一个个空空窗窗体体,加加入入一一个个MemoMemo组组件件和和一一个个按按钮钮,设设置置按按钮钮的的NameName属属性性为为CutCut,再再将将按按钮钮的的CaptionCaption属属性性设设置置为为&Cut&Cut。以以及及双双击击按按钮钮 的的 OnClickOnClick事事 件件 右右 边边 单单 元元 格格,弹弹 出出 代代 码码 编编 辑辑 窗窗 口口,输输 入入 语语 句句Memo1.CutToClipboard;Memo1.CutToClipboard;。这样就为。这样就为C Cutut按钮建立了按钮建立了CutClickCutClick事件处理过程:事件处理过程:方法方法CutToClipboardCutToClipboard实现剪贴实现剪贴:ProcedureTform1.CutClick(Sender:TObject);BeginMemo1.CutToClipboard;End;方法方法CopyToClipboardCopyToClipboard实现拷贝:实现拷贝:ProcedureTform1.CopyClick(Sender:TObject);BeginMemo1.CopyToClipboard;End;再再看看一一个个例例子子3.5 3.5 数据库设计数据库设计Delphi开发数据库应用程序的一般步骤开发数据库应用程序的一般步骤1.1.系统设计系统设计步骤步骤1 1:工作活动性质鉴别:工作活动性质鉴别 对设计者来说,当他承担了某个部门建立数据库的任务时,首先应当鉴别该部门的需要和用户的需求。对设计者来说,当他承担了某个部门建立数据库的任务时,首先应当鉴别该部门的需要和用户的需求。并做出下列决策:并做出下列决策:(1 1)决定该部门数据处理的一般策略。决定该部门数据处理的一般策略。(2 2)估算现有数据处理能力及其性能。估算现有数据处理能力及其性能。(3 3)进行可行性研究,规划各种方案。进行可行性研究,规划各种方案。(4 4)选择某种方案。选择某种方案。(5 5)搜集有关信息类型、确定有什么样的信息流入和流出,以及信息流入流出的频度等。搜集有关信息类型、确定有什么样的信息流入和流出,以及信息流入流出的频度等。步骤步骤2 2:定义:定义 此步骤是建立该部门的模型。主要工作是:此步骤是建立该部门的模型。主要工作是:(1 1)在书面上记载可能出现的数据类型。在书面上记载可能出现的数据类型。(2 2)建立原始概念:实体集合、实体属性、属性值、实体联系集合(简称关联集合)。建立原始概念:实体集合、实体属性、属性值、实体联系集合(简称关联集合)。步骤步骤3 3:用数据表示实体集合和关联集合:用数据表示实体集合和关联集合 (1 1)确定每一个实体类型,并为其分配一个惟一的名字。确定每一个实体类型,并为其分配一个惟一的名字。(2 2)确定每一个定义域,并为其分配一个惟一的名字。确定每一个定义域,并为其分配一个惟一的名字。(3 3)为每个实体类型确定主键。为每个实体类型确定主键。(4 4)用主键定义域代替每一个实体。求出与实体属性对应的各个关系,并给每个关系确定一个名字。用主键定义域代替每一个实体。求出与实体属性对应的各个关系,并给每个关系确定一个名字。(5 5)求出全部的关联类型,并为其确定一个名字。求出全部的关联类型,并为其确定一个名字。(6 6)用相应的主键来代替关联类型。用相应的主键来代替关联类型。步骤步骤4 4:建立:建立E-RE-R模型模型 以下的步骤是对关系型数据库来说的。以下的步骤是对关系型数据库来说的。步骤步骤5 5:将实体和关联转化为关系:将实体和关联转化为关系步骤步骤6 6:分解关系。对每个关系确定其不可分解单元,可以得到一个基本关系集合。:分解关系。对每个关系确定其不可分解单元,可以得到一个基本关系集合。步骤步骤7 7:根据传递定律确定所得到的基本关系集合的传递闭包。:根据传递定律确定所得到的基本关系集合的传递闭包。步骤步骤8 8:由得到的传递闭包推导最小覆盖,得到若干个最小覆盖,选择其一作为数据库总体逻辑模型。:由得到的传递闭包推导最小覆盖,得到若干个最小覆盖,选择其一作为数据库总体逻辑模型。2.2.系统实现系统实现 在系统实现阶段,使用在系统实现阶段,使用DelphiDelphi可以建立和测试系统设计阶段所构想的应用程序。在此阶段,最好使用数据可以建立和测试系统设计阶段所构想的应用程序。在此阶段,最好使用数据库的一个备份,以防止应用程序可能破坏库的一个备份,以防止应用程序可能破坏DelphiDelphi数据库后无法恢复。如果应用程序最终要配置到使用远程终数据库后无法恢复。如果应用程序最终要配置到使用远程终端的数据源的话,可以有两种选择:端的数据源的话,可以有两种选择:l.l.在本地服务器上,使用备份的数据库的数据进行开发和调试。在本地服务器上,使用备份的数据库的数据进行开发和调试。2.2.在远程服务器上,使用备份的数据库的数据进行开发和调试。在远程服务器上,使用备份的数据库的数据进行开发和调试。其其中中,对对前前者者来来说说,它它独独立立于于服服务务器器,因因此此不不会会影影响响服服务务器器的的其其他他特特性性。而而后后者者就就有有一一定定的的危危险险性性,因因为为,程程序的可能错误而导致服务器的瘫痪。序的可能错误而导致服务器的瘫痪。值得说明的是,系统设计独立于特定计算机系统;而系统实现必须考虑实际的计算机系统,以及该系统所值得说明的是,系统设计独立于特定计算机系统;而系统实现必须考虑实际的计算机系统,以及该系统所支持的数据库管理系统(支持的数据库管理系统(DBMSDBMS)。)。系统实现阶段的主要工作:系统实现阶段的主要工作:(1 1)实现物理设计。通过使用物理设计技术以选择最适合于数据模型结构的物理结构,实现物理设计。通过使用物理设计技术以选择最适合于数据模型结构的物理结构,这些技术随采用的物理设备及存取方法而异。量化数据是物理设计中的一个重要因素。所选数据库逻辑结这些技术随采用的物理设备及存取方法而异。量化数据是物理设计中的一个重要因素。所选数据库逻辑结构和物理结构的定义由数据库定义语言完成。构和物理结构的定义由数据库定义语言完成。(2 2)选择存取数据库的方法。在选择物理结构时,存取方法是特别重要的,存取方法决定了设计完成后数据)选择存取数据库的方法。在选择物理结构时,存取方法是特别重要的,存取方法决定了设计完成后数据库的性能,而用户界面软件决定了数据库是否便于用户使用。一般系统中对数据库的存取是由数据库联机查库的性能,而用户界面软件决定了数据库是否便于用户使用。一般系统中对数据库的存取是由数据库联机查询语言或嵌入在程序设计语言中的输入询语言或嵌入在程序设计语言中的输入/输出命令完成的。输出命令完成的。(3 3)确定存储需求说明:存储需求定义用户关于数据的使用方法。其中的存取路径,用以说明存储需求所涉确定存储需求说明:存储需求定义用户关于数据的使用方法。其中的存取路径,用以说明存储需求所涉及的实体集、关联集、逻辑记录,同时还要说明这些结构的使用顺序,以及对每个结构所完成的操作,这些及的实体集、关联集、逻辑记录,同时还要说明这些结构的使用顺序,以及对每个结构所完成的操作,这些操作可以是检索、存储和插入。操作可以是检索、存储和插入。(4 4)确定量化数据说明:确定量化数据说明:一般方法是用数据字典作为数据项和记录型的描述文本。数据字典中可以包括:一般方法是用数据字典作为数据项和记录型的描述文本。数据字典中可以包括:组织模型中各组成部分的数据项名、类型、取值范围、长度和数据量、各实体间联系的频度、存取需求执组织模型中各组成部分的数据项名、类型、取值范围、长度和数据量、各实体间联系的频度、存取需求执行频度等。行频度等。(5 5)选择开发软件的技术手段(例如,使用选择开发软件的技术手段(例如,使用Delphi 7)Delphi 7)进行软件开发。进行软件开发。3.3.系统运行和维护系统运行和维护系系统统运运行行是是为为了了考考核核系系统统及及其其设设备备、软软件件系系统统和和数数据据库库应应用用程程序序等等是是否否能能达达到到预预期期的的目目标标。而而对对应应用用程程序序来来说说,更更多多的的是是调调试试。所所谓谓维维护护是是指指在在运运行行中中排排除除应应用用程程序序的的错错误误及及不不合合理理的的内内容容,以以及及在在系系统统运运行行中中还还要要根根据据用用户户提提出出的一些新的要求和建议,对应用程序做一定的修改,使其进一步得到完善和提高。的一些新的要求和建议,对应用程序做一定的修改,使其进一步得到完善和提高。在在每每个个实实施施步步骤骤中中都都有有数数据据库库的的开开发发和和应应用用程程序序界界面面的的开开发发任任务务。数数据据库库和和应应用用程程序序开开发发任任务务的的执执行行,则则会会根根据开发项目的大小和范围而定,可能会由不同的人来完成和执行。据开发项目的大小和范围而定,可能会由不同的人来完成和执行。3.6 3.6 例子:设计一个商品销售数据库(简称例子:设计一个商品销售数据库(简称PSDBPSDB)顾顾客客(CustomerCustomer)到到商商店店购购买买商商品品(PartsParts),交交款款后后,商商店店要要给给顾顾客客开开出出发发票票。发发票票上上标标出出的的内内容容有有:顾顾客客姓姓名名、单单位位、地地址址、商商品品名名、单单价价、总总价价以以及及购购买买日日期期等等。以以往往这这项项工工作作是是手手工工在在发发票票单单上上填填写写,现现在在要要用用计计算算机机来来完完成成,那那么该如何做呢?么该如何做呢?对对商商店店或或者者计计算算机机来来说说,要要求求有有一一份份顾顾客客名名单单,我我们们称称之之为为CustomerCustomer表表。还还要要有有一一份份商商品品清清单单,我我们们称称之之为为PartsParts表表。将将这这两两张张表表联联系系在在一一起起,就就构构成成了了PSDBPSDB数据库。数据库。现在给数据库下个定义:按照一定结构组织的相关的数据集合称做数据库。现在给数据库下个定义:按照一定结构组织的相关的数据集合称做数据库。在在数数据据库库术术语语中中,把把顾顾客客、商商品品称称做做实实体体,实实体体之之间间的的联联系系称称做做关关联联。由由此此可见,实体及其关联才构成数据库。可见,实体及其关联才构成数据库。在在关关系系模模型型中中,“关关联联”是是不不可可缺缺少少的的,因因此此,关关联联也也就就转转化化为为实实体体,也也可可以称之为关联实体。因此,在以后的讨论中,凡是说到实体均包括关联实体。以称之为关联实体。因此,在以后的讨论中,凡是说到实体均包括关联实体。现现在在,在在我我们们的的PSDBPSDB数数据据库库中中,把把实实体体CustomerCustomer和和PartsParts联联系系起起来来的的是是关关联联实实体体,为为其其命命名名为为ItemsItems(项项目目)。这这样样,PSDBPSDB数数据据库库是是由由实实体体CustomerCustomer、PartsParts和和ItemsItems构成。构成。以下就来介绍数据库逻辑设计的基本内容和方法。以下就来介绍数据库逻辑设计的基本内容和方法。ItemsCustomerParts PSDB数据库的E-R图关联实体实体实体CustNumLastNameFirstNameCustomer标明Customer的属性实体属性 在在数数据据库库通通用用设设计计方方法法中中,通通常常采采用用一一种种“实实体体-联联系系”方方法法,简简称称E-RE-R方方法法。这这样样,就就可可以以将将PSDBPSDB数据库用数据库用E-RE-R图表示图表示。3.7E-RE-R方法 在完成实体设计后,例如完成在完成实体设计后,例如完成E-RE-R图设计后,就要为每个实体标明属性。首图设计后,就要为每个实体标明属性。首先,数据库中的每个实体都要有个标识符,而且是惟一的,称其为先,数据库中的每个实体都要有个标识符,而且是惟一的,称其为主标识符主标识符(也称为(也称为主关键字主关键字或或主属性主属性)。)。1.1.标明标明CustomerCustomer属性属性 例如,在例如,在PSDBPSDB数据库中的数据库中的CustomerCustomer实体应有一个主关实体应有一个主关键字,显然,顾客的姓名不成,因为有重名重姓,所以只键字,显然,顾客的姓名不成,因为有重名重姓,所以只好给顾客好给顾客CustomerCustomer再加一个顾客编号再加一个顾客编号CustNumCustNum。同样理由,。同样理由,要给商品要给商品PartsParts加一个编号加一个编号PartNumPartNum,以及给关联实体,以及给关联实体ItemsItems加一个编号加一个编号ItemNumItemNum。注意,为了简化数据库设计的说明,。注意,为了简化数据库设计的说明,对于现在讨论的课题,我们只列出主要的属性,而不追求对于现在讨论的课题,我们只列出主要的属性,而不追求对它的客观需求。设对它的客观需求。设CustomerCustomer属性有属性有CustNumCustNum(顾客编号)、(顾客编号)、LastNameLastName(顾客的姓)和(顾客的姓)和FirstNameFirstName(顾客名字)。(顾客名字)。设设PartsParts属性有属性有PartNumPartNum(商品编(商品编号)、号)、DescriptionDescription(有关商品的说(有关商品的说明)、明)、QtyInStockQtyInStock(商品的库存量)(商品的库存量)和和SellingPriceSellingPrice(销售价)。(销售价)。标明标明PartsParts属性属性实体属性PartNumDescriptionQtyInStockPartsParts标明Parts的属性SellingPrice 设设ItemsItems属属性性有有ItemNumItemNum(ItemsItems记记录录编编号号)、CustNum CustNum(顾顾客客编编号号)PartNumPartNum(商商品品编编号号)和和QtySlodQtySlod(商商品销售量)。品销售量)。标明标明ItemsItems属性属性 现在来说明为什么给现在来说明为什么给ItemsItems标明这些属性。首先,标明这些属性。首先,为为什什么么要要建建立立ItemNumItemNum属属性性呢呢?因因为为ItemsItems需需要要有有一一个个惟惟一一的的主主标标识识符符(也也称称为为主主属属性性),也也就就是是需需要要有有一一个个惟惟一一的的主主关关键键字字。另另外外,ItemsItems是是把把CustomerCustomer表表和和PartsParts表表联联系系起起来来的的关关联联实实体体,那那么么最最简简明明的的联联系系,就就是是在在ItemsItems中中放放置置CustomerCustomer的的主主关关键键字字CustNumCustNum和和PartsParts的的主主关关键键字字PartNumPartNum。事事实实上上,根根据据CustomerCustomer的的主主关关键键字字CustNumCustNum就就可可以以通通过过ItemsItems中中的的PartsParts的的主主关关键键字字PartNumPartNum查查到到PartsParts表表中中的的一一切切信信息息,例例如如,某某商商品品的的销销售售价价是是由由PartsParts表表中中属属性性SellingPriceSellingPrice标标识识的的。又又例例如如有有关关每每种种商商品品的的说说明明是是由由属属性性DescrptionDescrption标标识识的的。同同时时,依依据据PartNumPartNum还还可可以以在在ItemsItems表表中中直直接接查查到到购购买买了多少该种商品,即销售量是由了多少该种商品,即销售量是由ItemsItems表中的属性表中的属性QtySoldQtySold标识的。标识的。ItemNumCustNumPartNumItems图3.2.3 标明Items的属性(关联)实体属性QtySlod 在关系型数据库中,把实体视为一种关系。关系的一般表示方法如下:在关系型数据库中,把实体视为一种关系。关系的一般表示方法如下:关系名(属性关系名(属性1 1,属性,属性2 2,属性,属性n n)在一个关系表达式中,也需要确定一个惟一的标识符(也称之为主属性,在一个关系表达式中,也需要确定一个惟一的标识符(也称之为主属性,或主键,或主关键字),用以标识这个关系。如果在关系表达式中,我们假设或主键,或主关键字),用以标识这个关系。如果在关系表达式中,我们假设指定指定“属性属性k”k”为主属性(关键字),那么在关系表达式中就把属性为主属性(关键字),那么在关系表达式中就把属性k k放在最前放在最前面并用下划线面并用下划线“_”“_”表示它是主属性(主键字)。于是,关系表达式表示它是主属性(主键字)。于是,关系表达式就变成:就变成:关系名(关系名(属性属性k k,属性,属性1 1,属性,属性2 2,属性,属性n n)这样,根据给这样,根据给CustomerCustomer、PartsParts和和ItemsItems标明的属性,就可以把它们用关系标明的属性,就可以把它们用关系表达式表示如下:表达式表示如下:这三个关系就是这三个关系就是PSDBPSDB的关系数据库的关系数据库模型。模型。Customer(CustNum,LastName,FiestName)Parts(PartNum,Description,QtyInStock,SellingPrice)Items(ItemNum,CustNum,PartNum,QtySlod)3.8 3.8 关系型数据库关系型数据库 1.1.关系模型关系模型2.2.二维表二维表 在关系模型中,一个关系可以在关系模型中,一个关系可以用一个二用一个二维维表来表示。表来表示。二维表的行二维表的行称为记录,列称为字段(记录项)。称为记录,列称为字段(记录项)。把这样的表统称为数据库表。一个把这样的表统称为数据库表。一个数据库表的一般化表示。数据库表的一般化表示。关系CustomerCustomer(CustNum,LastName,FirstName)的二维表表示。其表结构:关系PartsParts(PartNum,Description,tyInStock,SellingPrice)的二维表表示。其表结构:PartNumDescription tyInStockSellingPriceItemNumCustNumPartNumQtySlod 关系ItemsItems(ItemNum,CustNum,PartNum,QtySlod)二维表表示。其表结构:CustNumLastNameFiestName字段名称记录字段用二维表表示关系3.3.数据库表结构设计数据库表结构设计 所谓表结构设计就是对表中的每个字段(Field)、字段类型(Type)、字段大小(Size)以及该字段是否为主关键字段(Key)等进行规定,以便将来能够对表进行数据操作(包括对数据的存取、增删、查询、修改等)。设计CustomerCustomer表结构 设计PartsParts表结构Field(字段)Type(类型)Size(大小)Key(主关键字)ItemNumAutoincriment(+)n/aYesCustNumNumericn/aYes PartNumNumericn/aYes QtySlodNumericn/aNo 设计ItemItems s表结构Field(字段)Type(类型)Size(大小)Key(主关键字)CustNumNumeric(N)n/aYes(是)LastNameAlpha(A)30No(不是)FiestNameAlpha(A)25No(不是)Field(字段)Type(类型)Size(大小)Key(主关键字)PartNumNumericn/aYesDescriptionAlpha40NotyInStockNumericn/aNoSellingPriceNumericn/aNo4.4.设计数据库表的数据设计数据库表的数据 现在给出现在给出PSDBPSDB数据库中数据库中三个表的实际使用的数据。三个表的实际使用的数据。设计好的这些数据,我设计好的这些数据,我们以后还要用到。们以后还要用到。(1)CustomerCustomer表的数据注:ItemNum的类型(Type)设置为Autoincriment。这就意味,ItemNum的值会由程序自动地填入。因此,在制作Items表的数据时,不要在该字段中填入任何东西。CustNumLastNameFiestName1001KennedyTom1002AndersonJean1003GeorgeTim1004SamJean(2)PartsParts表的数据PartNumDescription QtyInStockSellingPrice1001PartNum 1011,000301002PartNum 102542001003PartNum 103211231004PartNum 104200751005PartNum 1051110(3)ItemItems s表的数据ItemNum注CustNumPartNumQtySlod10011013100310221001105110011026第第4 4章章 创建数据库创建数据库 1.1.构造表的结构构造表的结构 创建过程如下:创建过程如下:(1 1)启动数据库桌面)启动数据库桌面DBDDBD。(2 2)设设 置置 工工 作作 目目 录录。选选 择择 File File Working Directory Working Directory 命令。命令。(3 3)设设置置工工作作目目录录的的别别名名。选选择择 ToolsAlias ToolsAlias ManagerManager命命 令令。选选 择择TableRestructureTableRestructure命命 令令,构构 造造 表表Customer.dbCustomer.db的结构。的结构。2.2.向向CustomerCustomer表中输入数据表中输入数据选 择 FileOpen Table命 令。打 开Customer.db表。选择TableEdit Data命令,将表置于编辑模式。向一个字段输入数据。即单击该字段,然后即可输入数据。使用Navigator控件对表中记录排序、移动。3.3.继续向继续向Parts.dbParts.db和和Items.dbItems.db表输入数据,完成之后,建立表输入数据,完成之后,建立PSDBPSDB完成。完成。4.创建创建DelphiDelphi数据库程序数据库程序 (1)建立一个新的工程l运行Delphi 7;l从主菜单中选择FileNewApplication命令,则Delphi 7 自动创建一个新工程。l从主菜单中选择FileSave As命令,保存单元文件CMyCust.Pas,保存工程文件 MyCust.Dpr。(2)用数据库窗体向导创建窗体 在 数 据 库 窗 体 向 导DatabaseForm Wizard命令创建的Form2窗体上,已经自动地放置了5个控 件:TPanel、TDBNavigator、TDBGrid、TTable和TDataSource。Navigator控件TTable控件DBGrid控件Tpanel控件TDataSource控件 (3)执行MyCust程序 当程序被运行时,便自动生成一个可执 行 的.EXE程 序。Delphi 7会 显 示Customer.DB表 中 的 数 据。其 中Navigator控件中辉亮的按钮是可用的,可以使用Navigator控件的按钮在各记录之间移动。第第5 5章章读写字段值读写字段值5.1字段编辑器和列编辑器字段编辑器和列编辑器字段编辑器列编辑器Columns Editor Add Add fieldsfields命命令令:使使用用这这个个命命令令可可为为TableTable对对象象增增加加物物理理字字段段。每每个个增增加加的的字字段段都都代代表表窗窗体体类类中中的的一一个个对对象象。所所谓谓“增增加加物物理理字字段段”,是是指指有有选选择择地地使使用用数数据据库库表表中中实实际际存存在在的的字字段段,因因为为,根根据据需需要要不不是是总总要要使使用用数数据据库库表表中中实实际际存存在在的的全全部部字字段段。在在实实际际操操作作中中,虽虽然然数数据据库库表表中中实实际际存存在在很很多多字字段段,但但有有些些是是当当前前不不需需要要的的字字段段,就不去选择它们了。就不去选择它们了。在在字字段段编编辑辑器器Fields Fields EditorEditor中中“增增加加物物理理字字段段”、不不被被选选择择的的字字段段或或者者被被删删除除的的字字段段,都都不不会会改改