asp与sql网页数据库程序设计03_第1页
asp与sql网页数据库程序设计03_第2页
asp与sql网页数据库程序设计03_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库基本概念3-1数据库系统3-2数据库管理系统(DBMS)3-3关系型数据库3-4数据下设计3-5SQL语句MSSQLServer2000是微软公司所推出的一套在Windows平台上执行的数据库管理系统,用以提供作为应用程序的数据来源,存放各种数据,并可以让用户很容易地达成所要进行的数据存取操作。同时它也提供了一些可视化的管理工具,协助数据库系统管理者可以更方便快速地管理及设计库数据内的内容,以及对数据库进行维护。在开始介绍SQLServer2000数据库管理系统的各项管理、维护操作之前,先来谈谈一些有关数据库的概念,让读者对数据库系统能先有一些基本的认识。3-1数据库系统什么是数据库系统

2、?简单地说,数据库系统是一种计算机化的数据保存系统,它以特有的数据存储方式将相关的数据内容整合在一起。我们可以将数据库本身想成是一个电子档案柜,在这个电子档案柜内,存放着一些电子数据文件。数据库系统主要的目的在于维护信息,并在必要时提供协助取得这些信息。3-1-1数据库系统的类型数据库系统被使用的范围非常广泛,从一般的微电脑到大型主机都可以使用。一般来说,大型主机多倾向于使用多用户的数据库系统,而一般的微电脑、个人计算机则倾向于使用单用户数据库系统。这里所谓的单用户数据个系统,是指同时最多只能有一个用户存取数据库的内容,而多用户数据库系统,则允许多个用户同时存取数据库的内容。数据库系统的种类非

3、常多,目前以关系型(Relational)数据库系统最为常见,所谓的关系型数据库系统是以表(Table)的类型将数据提供给用户,而所有的数据库操作都是利用旧的表来产生新的表。除了关系型数据库系统外,其他常见的数据库系统类型还有InvertedList,Hierarchic,Network等数据库系统。3-1-2数据库系统的结构不同的数据库系统有着不同的系统结构,毫无疑问,一个数据库结构并不能完全用于所有的数据库系统,在这里我们以最被广泛认同的数据库结构ANSI/SPARC结构来进行说明。1. ANSI/SPARC结构(ConceptualLevel)以及外部层(在ANSI/SPARC结构中将数

4、据库分为内部层(InternalLevel)、概念层ExternalLevel)等三层,如图3-1所示。内部层(Internallevel)数据存储视域图3-1数据库结构图内部层是最接近数据库实体存储位置的一层,与数据库数据实际存储方式有关,在内部层中以具体的方式来表示整个数据库。外部层是最接近用户的部分,与用户对数据的查看方式有关,在外部层中以用户看得懂的方式来表示部分数据库的内容,每个用户所查看的数据内容不同。概念层位于内部层与外部层之间,以用户看得懂的方式来表示整个数据个,提供每个用户一致的数据查看内容。不管是使用哪一种数据库系统,都只会影响到ANSI/SPARC结构的外部层以及概念层内

5、容,而与内部层无关。例如,对于关系型数据库系统而言,在概念层中所看到的数据一定是以关系型的形式存在,在外部视域中所看的数据有可能会以关系型的形式存在,至于在内部层中的数据则一定不会是以关系型的形式存在。2. Mapping对应在图3-2的详细结构图中,可以发现在内部层与概念层之间以及概念层与外部层之间各有一个对应(Mapping)存在,分别对应着上下两层的内容。概念SfConceplualView)ConceptualiInternalMappingOi存储的数据库Qi(怕mal阪明L'1士-HJ图3-2数据库详细结构图概念/内部对应(Conceptual/InternalMappin

6、g)位于概念层与内部层之间,定义数据库的概念视域内容与实际存储内容之间的对应关系。如果改变了数储库的存储结构,只要在这个对应中修改对应的内容就可以了,而不需要改变概念视域与外部视域的内容。外部/概念对应(external/conceptualmapping)位于外部层与概念层之间,定义特定外部视域与概念视域的对应关系,也就是定义外部视域所查看的部分数据库内容与整个数据库之间的关系。3-1-3数据库系统的主要组件基本上,在数据库系统中包含了数据、软件、硬件以及用户等四个主要组件。1. 数据这里的数据是指实际存放在数据库中的数据,通常也就是在企业应用系统中会使用到的永久性数据。这里所谓的永久性数据

7、并不是真的指该数据一定会存在一段很长的时间,而是用来与其他的暂时性数据(如,输入数据、输出数据、控制语句等)作为区分。虽然说不同的数据库系统,其存储数据的方式或功能特性可能会有所不同,但一般说来,数据库内的数据通常是整合与共享的。所谓“数据整合”是指数据库为存放多个数据文件集合的个体,而非仅能存放单一数据文件的个体,这些数据文件间若有重复的信息存在,则这些重复的数据可以被清除。例如,在数据库中包含记录员工基本数据的Employe以及记录参加训练课程的员工数据Enrollment两个数据文件,假设我们要知道所有参加训练课程员工的部门数据,可以直接从Employe文件中取得,而不需将部门数据重复记

8、录于Enrollment文件中。所谓的“数据共享”,是指数据库内的数据可以被多个不同的应用程序或用户共享。也就是说,我们只要在数据库中存储一份数据,不同的用户就可以为了相同或不同的目的来使用这个数据。例如,在人事管理系统中以及在会计薪金系统中都会使用到员工基本数据文件,在数据库内仅需存储一份员工数据文件提供这两个系统共同使用即可,而不需要分别为不同的系统各自存储一份。2. 软件软件是指实体数据库与用户之间的接口,通常被称为数据库管理系统(DBMS),主要是被用来协助用户存取数据库的内容。数据与实体数据库中以特定的方式存储,用户若要直接存取实体数据,就必须知道数据存放的格式以及数据存放的实体位置

9、。数据库管理系统提供用户一个数据存取的接口,将数据存储的格式与位置交由DBMS来管理,所有的存取动作都交由DBMS来处理。换句话说,DBMS将数据库由实体的硬件层提升成虚拟的视域,让用户的数据库存取操作更为简单,用户不再需要知道实际上数据库数据的存储方式或存储位置,只要知道数据库在数据库管理系统中的结构定义,就可以通过DBMS顺利存取数据库的内容。所以说,数据库管理系统是数据库系统中最重要的一项。3. 硬件要让数据库系统能够顺利地执行,就必须提供适当、足够的硬件设备。数据库系统可运行的硬件种类范围非常广泛,从一般的微电脑到大型主机都有。当然,在不同的硬件设备上,使用的数据库系统可能不同,其所提

10、供的功能特性也可能不同。例如,大系统通常使用多用户数据库系统,允许多个用户同时存取数据库内容;而一般的PC使用同时只能有一个用户存取的单一用户数据库系统。与数据库系统运行有关的硬件设备可分为以下两类:存储设备与I/O装置:传递信息、存储数据库数据的设备。与数据库数据量的大小有关,数据量越多,需要的存储空间也就越大。CPU处理器与内存:执行数据库系统软件所占用的系统资源。系统的处理器速度及内存空间至少要能符合执行操作系统与数据库软件的最小需求。理论上来说,CPU越快、内存越大,则执行效率就越高。数据库的数据量除了会影响存储空间外,也会影响数据库的执行效率,当我们在规划数据库系统的硬件设备时,应该

11、要以未来的数据量作为考虑的标准,以减少日后升级或更换硬件设备的状况。4. 用户当然必须要有用户,数据库系统才会有意义,基本上我们可以将数据库系统的用户分为:程序设计人员、终端用户以及数据库管理员等三类。数据库管理员(DBA)是一个整合技术的专业人员,他主要的工作是建个一个数据库,并将企业环境的决策内容付诸于实践,同时他也必须确保数据库的执行效率以及提供其他相关的技术服务。通常他是直接通过数据库管理系统存取、维护数据库的内容。程序设计人员利用程序语言编写数据库应用程序,在数据库程序中可以利用DBMS所提供的功能指令,对数据库的内容进行存取。终端用户(EndUser)通过数据库应用程序的操作,利用

12、工作站或终端机与数据库系统建立交互,进而存取数据库的数据。大部分的数据库系统内至少都会提供一个称为查询语言处理器(QueryLanguageProcessor)的内建应用程序,提供用户以高级的指令或语句将命令传递给DBMS。3-1-4数据集中化管理在多用户的环境下,使用数据库系统维护数据将具有数据集中化管理的优势。所谓数据集中化管理的概念是指,由数据管理者(DA)负责,就整个应用环境需求作一个通盘的了解后,对数据加以整合分析,定义出数据库的数据内容以及数据的管理、处理政策。接着,由数据库管理者(DBA)将这些政策付诸于实践并负责维护管理。数据集中化管理具有以下优点:1. 减少重复的数据在非数据

13、库系统中,每个应用程序有各自的数据文件,这样通常会造成数据重复存储,浪费硬盘的空间。然而,这并不表示,一定要将数据库内所有的重复数据都删除。有时候,由于技术上或实际应用上的考虑,我们必须将相同的数据重复存储成多份,并加强数据的维护。2. 避免数据不一致若在数据库中有重复的数据存在,可以将具有重复性的部分定义在数据库管理系统(DBMS)中,交由DBMS来管理控制,以维护数据的一致性。也就是说,若在数据库中修改一个重复性的数据内容,则DBMS会自动维护数据库内容的一致性,根据用户定义的维护内容,同时将重复的地方全部修改,或取消修改数据的动作。3. 数据可共享数据库内的数据除了能够提供多个应用程序,

14、多个用户共同使用外,也可以直接利用现有数据库的内容,建立一个新的数据库应用程序。4. 建立标准这里的标准是指数据存储的表示格式,对于集中化的数据库,DBA可以确保所有数据都是应用设置的标准显示。数据库的数据标准化可以协助数据的交换动作,同时也能够将数据库移转到其他系统上。5. 应用安全设置将数据集中管理后,可以在数据库系统中,利用用户帐号的设置,来设置用户的存取权限并维护数据的安全性。6. 维护数据的正确在数据库系统中,对于有规则可循的数据,我们可以依据数据的特性设置数据的准则条件,这样可以避免用户输入不合理的数据或是从数据库中快速找出违背规则的数据。7. 平衡冲突性的需求在知道整个企业环境的

15、需求后,DBA就可以将系统加以结构化,提供对企业环境的完整服务。对于有冲突的部分,根据企业需求的优先等级设置,建立一个对企业而言最好的数据库。3-1-5数据独立在早期系统中的应用程序通常是与数据相关的,也就是说,数据的存储方式与数据的存取技术都是根据应用程序的需要进行考虑,甚至将这些数据的存储方式与数据的存取技术建立于程序代码内。因此,当我们修改了数据的存储方式或是数据的存取技术后,就势必会影响到应用程序。然而,在数据库系统中,基于下列两个理由,我们应该避免应用程序与数据产生相关性,也就是说应用程序具有数据独立性。在不同的应用程序中,可能会需要对数据库中相同的数据作不同的检查。例如,在将数据整

16、合前,两个应用程序使用各自的数据文件,当我们要将两个数据文件整合成数据库时,若发现共同的属性在两个数据文件中定义的数据类型不同,这时,我们仍然可以通过DBMS所提供的类型转换功能来整合数据。因此,应用程序若与数据独立,则不需修改应用程序的内容。数据库管理员可以在数据库中任意修改数据的存储结构或是存取技术,而不需去修改现有的应用程序内容。例如,当我们要在数据库中增加新的数据或修改应用程序的修先等级,若应用程序与数据独立,则只需修改数据库的内容,而不需修改应用程序的内容。所以我们可以说,数据独立是将应用程序从数据的存储结构及存取技术分离开来,在应用程序中不需以特定的存储结构或存取技术作为考虑。不过

17、值得注意的是,数据独立并非DBMS与生俱有的,而是需要数据库管理员自行在程序设计上加入,所以说数据独立是使用数据库的优点,到不如说是使用数据库的目标。3-2数据库管理系统(DBMS)前面曾经说过,数据库管理系统是数据库系统中最重要的部分,用户对数据库的所有存取动作都是通过数据管理系统来执行的,而许多的数据管理、维护也都交由DBMS来完成,因此,在数据库管理系统中至少要提供下列功1. 数据定义数据定义是指定义数据库内数据的类型、数据的长度等,例如,在数据库内增加一个数据文件时,必须对数据文件内的各个属性进行数据定义。因此,DBMS必须能够接受原有的数据定义格式,并且转换成适当的数据格式存储。换句

18、话说,在DBMS中必须包含每一种数据定义语言(DDLs)的语言处理组件。2. 数据处理DBMS必须能够对数据库内现存的数据做查询、修改、删除等动作,或是在数据库中增加数据。因此,在DBMS中必须包含数据处理语言(DML)的处理组件。3. 数据安全及正确DBMS必须能监视用户存取数据库的需求,对于每一个数据存取需求在执行前都会与设置的准则条件加以验证,并且拒绝所有违反安全设置或验证规则的存取需求。4. 数据实时复原数据库的数据可能会因为操作的错误或设备的损耗而损坏,这时DBMS(或是其他相关的软件组件,称为转换管理员)必须提供数据实时复原控制能力,让数据库能够在最短的时间内恢复正确的数据。最常见

19、的方法是将以前备份的数据重新加载。5. 数据目录DBMS必须提供数据目录功能,存储数据库中所定义的信息,数据目录是数据库内所有不同于Schema及对应存储的地方。换句话说,数据目录内包含详细的表示数据库系统本身所关切的各种对象。所以,我们也可以将数据目录视为是数据库的数据库。6. 效率在数据库中可以使用不同的存取程序来执行相同的存取动作,而不同的存取程序会有不同的执行效率。DBMS必须提供效率最佳化功能,使所有的数据存取需求能够以最佳化的效率来执行。这个最佳化的程序是由DBMS中的重要组件Optimizer来决定的。因此,当用户在存取数据库的内容时,只要设置他们想要取得什么数据,而不需要指定如

20、何去取得这些数据的程序,数据库系统将会自动以最佳化的程序来执行数据存取动作。3-3关系型数据库关系型数据库开始于1970末期至1980初,截至目前为止市面上已有数百种的关系型系统,已成为最通用的数据库系统。到底什么是关系型系统呢?简单地说,关系型数据库是以表(Table)的类型将数据提供给用户,而用户的数据存取动作都可以说是利用旧的表来产生新的表。3-3-1数据的表示方法关系型系统必须符合数据库以表类型提供用户的需求,这里的表是关系型系统的逻辑结构,而非实体结构。实际上在实体层中,系统可以使用任何的一般存储结构,如循序文件、索引、链接等。而在逻辑层中,则是将这些实体层结构进行对应,并建立成表。

21、前面所说的逻辑结构,只对ANSI/SPARC结构中的概念层与外部层有作用,对于内部层而言逻辑结构不具有任何意义。所以,在概念层与外部层中数据库可能是关系型的,而在内部层则绝对不是关系型的。在关系型数据库中,整个信息内容只有一个表示方式,那就是明确的数据值。也就是说,数据库内所有的数据都是Atomic,这里的Atomic是指具有意义的数据的最小单位,因此,表中单一字段对应位置内存储的一定是单一的数据值,而不会是一群数据。比较特别的是,在关系型数据库中,是以表间相同的字段值来表示表的关联性,而不是在表中存储指针数据,将一个表连接到另一个表。如图3-3所示,厂商数据与供应数据利用厂商数据字段进行关联

22、,将两个表中存储相同厂商代号的数据连接在一起。厂肉代号POOOIFOODSP0DO3STKCO01444111CCE08010250DBGCD02050111厂商代号I产品代号P0001C001F0001COOZFOODSC001I厂超名祢|貌一编号|产昌代号|KJ001P0001rooozSTK.COSTK.COUCCE口14440H44II1106010250COOLC002C001图3-3厂商数据与供应数据两个表做美联3-3-2表一般来说,我们可以将数据库的结构分为数据库DataBase、表Table以及记录Record三层。在一个数据库内可包含多个表,而每个表内则存储着数条记录。当我们

23、设计一个数据库程序时,通常会将所有在程序使用到的表存放在同一个数据库内,如图3-4所示。JPOOQlOOQ1F0001UJ02FOODScomII厂甫常号I产品代号I图3-4数据库结构图所谓的表是指直接由一个数据文件读出的完整数据,也就是代表实际存常的表本身,它通常被视为是一个特定信息内容的数据集合,如下图为“厂商数据”表画面,在这个表中存储了厂商数据有关的信息,如图3-5所示。T:FD002ETECDrJCCEDL郴TTlECLD2SDFOOQ3DKG.DO(9061111*图3-5表画面基本上,我们可以将表想成一个二维数组,表中的每一行代表一条记录,而每一列则代表一个字段,例如在上图的“厂

24、商数据”表中存储了3条记录,而每一条记录都是由3个字段所构成的,这3个字段分别代表厂商代号、厂商名称、统一编号信息。当我们在创建一个表时,必须先考虑这个表的主要用途以及它所必须包含的信息,然后再将这些信息分别定义成不同的字段。不同的数据库系统所提供的字段设置项目不同,基本上字段的设置内容包括有字段名称、数据类型、长度、允许空等项目。根据不同的字段特性,可以为字段指定适当的数据类型,对于需存储文字数据的字段应定义为文字类型,而对于内容只有数字或数据内容,需做数值运算的字段则应定义为数值类型。3-3-3键在关系型数据库中,表间具有数据相关性,为维护数据的完整性,避免与表数据修改后丧失其关联性,在表

25、中定义适当的主键(PrimaryKey)与外键(ForeignKey),通过定义键维护表间的关联性。主键(PrimaryKey)是能辨识记录的最小字段组,换句话说就是表的最小IdentifyKey。例如在客户表中,每一条客户数据有其个别的客户代号,通过客户代号的内容,就可以直接找到唯一的一条客户记录,故客户代号可以是客户表的主键。被设为PrimaryKey的字段,其内容值必须具有唯一性且不能是空白。外键(ForeignKey)是指表中指向于其他表PrimaryKey的字段,若被参考的PrimaryKey包含有多个数据行,则ForeignKey也必须包含有同样个数的数据行,与PrimaryKey

26、字段一一对应。3-3-4表索引在表中可以为某些字段定义索引,这个索引文件内存储着排序汇整后的字段数据内容与对应在表中的位置。当我们要对某一字段执行数据查询操作时,可以通过该字段的索引文件找到数据在表中的位置,再取得查询的结果。图3-6字段索引由于通常表的索引文件会比表本身小,所以一般来说通过索引搜寻数据的速度会比直接在表上查询的速度快,不过相对的建立索引文件会占用磁盘空间,且数据更新的速度可能会较慢。在表中为常用来查询的字段做索引文件,可以加速查询的动作,这对于包含有大量数据的表而言非常重要。不过若是经常同时对两个字段的内容进个搜寻,则必须将两个字段的内容制作成一个索引,而不是分别各自制作各自

27、的索引。3-3-5视图当我们编写数据库程序时,经常会利用Select语句将一个或数个表的内容筛选列示出来,例如在成绩管理系统中需要列出所有总平均不及格的学生,这种通过数据选取或筛选动作而产生的虚拟表就称为视图View。View可以由多个数据文件合并出来,或是从一个数据文件取出部分数据或部分字段所构成的虚拟表。由于View并不像Table在数据库中是独立存在View可执行的动作会的,而且View的内容很可能会与多个表有关,因此,受到限制,用户只能对View执行数据查询的操作。厂商代号厂商名称藐一端号FD001STK.CO01444111PQC02UCCE0301020P0003DRG.CO020

28、50111图3-7厂商数据表及View厂而代号藐1编号P0001D1444111PC002DB01U2JOP0003D2DJDH1View只是在数据库管理系统中存储定义内容,并不是真的以表存在,因此,当我们对View执行数据查询时,并无法直接操作,而必须先将查询指令进行转换。我们可以将常用的窗体查询定义成View存储于数据库内,在程序中需要列出定义为View的数据时,只需在程序中调用执行该View的名称,即可得到所需要的数据内容。下图为SQLServer的视图属性窗口画面,在文本框中用户可以在CreateView语句后设置View名称,在AS语句后设置视图的内容(Select语句)。图3-8视

29、图属性画面3-3-6存储过程当我们开发数据库程序时,经常会应用到SQL语法对数据库的内容进行存取,一般都会将这些存取数据库的动作直接写在程序中。如果数据库的内容是提供给多个程序使用或是需要以不同的程序开发相同的软件时,就必须在每一个程序中重复编写SQL语句,而且一但要修改,也必须到每一个程序中修改。因此在数据库中允许我们将执行的操作直接定义在数据库中,编写程序时只要调用该数据库程序即可执行程序的内容,感觉上与程序模块化相似。这样将数据库的处理动作定义在数据库服务器端不但能够将数据存取的动作集中化处理维护方便外,更能加速数据库存取动作的执行效率,因为数据库服务器会对这些服务器端的程序先进行编译。

30、所有执行于数据库的动作都可以定义存储为存储过程(StoredProcedure),而且在一个存储过程中可以包含多个SQL指令,也可以定义多个变量来连接多个处理动作。我们可以将数据库中通常执行的数据处理动作定义为存储过程,以提供应用系统的调用,同时也可通过参数的设置使程序的执行更加具有弹性。图3-9存储过程画面上图为SQLServer"存储过程的属性”窗口,在文本框中用户可以在CreateProcedure语句后设置存储过程的名称,在CreateProcedure与AS关键词间可以声明此存储过程的参数,参数可以是传入参数也可以是传出参数,若为传出参数则需在参数声明时加上OUTPUT字样

31、,而在AS关键词后则是设置该存储过程所有执行的数据库存取动作。3-3-7触发器触发器(Trigger)触发程序也是一种存储过程,只不过它会在数据库被修改时自动执行,这与对象的事件有点相似。在一个表中只能有一个Insert、一个Delete及一个Update触发器,这三种触发器分别在新增数据、删除数据及改变数据后触发运行,可以将这三种触发过程定义在同一个Trigger中,也可以各自独立。下图为SQLServer的触发器属性窗口画面,用户可以在CREATETRIGGER关键词后设置触发程序的名称,在ON关键词后设置引用这个触发程序的表名称,在FOR关键词后设置引用这个触发程序的事件(Insert,

32、Delete或Update),若同时引用于一个以上的事件需用逗号做分隔,而在AS关键词后则是设置该存储过程所有执行的数据库存取动作。图3-10Trigger画面3-3-8数据目录数据目录(Catalog)是指存储数据库所有Schema以及所有对应的地方,它包含各种与数据库系统本身有关的数据。在关系型数据库中,Catalog也是以表的形式存在,这种表称为系统表。基本上,在Catalog内会包含Tables及Columns两个表,其中Tables表存储数据库中每一个表的摘要信息,如表名、表字段数、行数等。而Columns表则存储每个表字段的摘要信息,如表名称、字段名称等。表的内容如图3-11所示。

33、*字段敏广鹿诙料35产品姿制24厂商姿制厂商代号厂商诙料厂商名釉厂商浇料统一墉号f-产品注制产晶代号81碰皿图3-11产品供应数据库的Catalog内容3-4数据库设计在创建数据库前,首先我们要决定这个数据库需要提供哪些信息(数据项),然后再根据这些数据项的特点来组织表的结构。3-4-1Entities&RelationshipEntities被广泛地使用在数据库环境中,用来代表可被区分的对象。在数据库中,除了有Entities夕卜,还有Relationship将数据库内Entities连接在一起。当然也可以将Relationship视为是Entities的一种。例如,在产品供应数据库

34、中,厂商数据以及产品数据是可被区分的对象,所以在数据库中以Entities对象存在,而在这两个Entities对象之间有一个Relationship存储厂商数据以及产品数据的对应关系,也就是存储厂商供应哪些产品。下图为产品供应数据库的Entities/RelationshipDiagram,简称ERDiagram,在图中以四方形表示Entities,以菱形来表示Relationship。图3-12ERDiagram前面说过,Entities是用来表示对象,存储任何我们想要记录的对象信息,换句话说,Entities(及Relationship)必须具有属性,这些属性也必须被定义在数据库内。例如,

35、在厂商数据中,我们要记录厂商代号、厂商名称、统一编号等信息,因此,数据库中的厂商Entities具有厂商代号、厂商名称、统一编号等属性。3-4-2数据正规化在设计数据库时,应该尽量以"一个数据只出现在一个地方(onefactinoneplace)”设计规则为准,尽量避免数据重复。而数据正规化的概念也就是为了达成这个设计规则所衍生出来的,将一个表分割成多个表存在数据库中。Coddy将整个数据正规化的动作分为多个层次,如图3-13所示,在每一个层次中定准则条件,只要表能够符合前几层设置的正规化条件,我们就可以称这个表为第几个正规表。例如,关联是数据库内的表符合低一层的正规化条件,表内都是

36、存储Scalar,因此,我们说该表1NF(firstNormalForm)。所以,我们可以说数据正规化的过程就是在建立正规表(NormalForms)。金邮表1NF图3-13正规化在设计数据库时,虽然我们可以将数据做多层的正规化,然而实际上,我们往往只会做三层正规化。一般表只要能符合3NF或BCNF,在执行数据存取上就不会有问题了,只有少数的特殊状况要继续往下正规化。所以一般听到的数据正规化都是指3NF。现在,我们就直接以下图的产品供应表为例,来说明如何将表正规化。首先,我们先从1NF开始,1NF的正规化条件为:在表内只包含有意义数据的最小单位。我们可以发现在下面的表中所有存储的数据都是实际的

37、值,因此表符合1NF。号产昌代号CS名ft区导POOOLC001STK.CODD2FOOD!0002STK.CONYDD2POO02COOIUCCESCDD3FOOD3CU03STT.CX)NYDD2图3-14产品供应数据表接下来,继续往下一层正规化,往2NF迈进,2NF的正规化条件为:表符合NF,且所有非键值的数据与主键值之间无对应关系存在。由上图的表中,可以发现主键值厂商代号与非主键值厂商名称、地区、区码等字段有对应关系,只要表内存储的厂商代码相同,则其他字段(厂商名称、地区、区码)内存储的数据也就一定相同。因此,产品供应表不符合2NF。这时,只要在表中,将与主键值具有对应关系的字段数据,

38、连同对应的主键值删除,并另外建立成一个表(主键值仍然会存在于原来的表中)。最后,别忘了要在新建立的表中将重复的数据删除,如图3-15所示。厂商代号产品代号F0001C001P0001CO02F0002C001P0003C003厂商代号厂商名称地区区号P0001STKCONY002FOOQ2UCCESC003PD003STTCONY002-图3-15产品供应表与厂商数据表经过第二层正规化后,表的主键值与非主键值之间就不再具有任何的相关性存在。3NF的正规化条件为:符合2NF,且所有非键值的数据之间无相互依赖关系存在。在上图的厂商表中,地区以及区号这两个非主键值的字段具有对应关系存在,只要地区名称

39、相同,则区号数据就一定相同,因此厂商表不符合3NF。这时,只要在表中将具有对应关系的字段数据删除,另外建立成一个表,并将表中重复的数据删除即可,如图3-16所示。厂商代号产品代号P00Q1C001P0001CD02F血3C001P。叩3C003-E代号厂商名称F00018TKCOPOC02UCCEP0003STTCO图3-16产品供应表再次,检查表的内容,发现所有的表内已经不存在任何具有对应关系的字段,完成数据正规化的动作。3-5SQL语句SQL是StructureQueryLanguage的缩写,它是一种标准的关系型数据库查询语言,通过SQL语句的执行可以对数据库内容(表及记录)进行定义、修改或查询。由于在许多的数据库管理系统(如Access,SQL等)以及数据库程序语言(如VisualBas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论