论文部分内容阅读
【摘要】数据库作为一个共享资源,数据库中提供的信息必须准确有效,为了防止出现不符合语义的数据,防止错误信息的输入和不一致的数据,数据库管理系统必须提供一定的机制来保证数据的完整性。作为一个功能强大的数据库管理系统,SQL Server提供了多种完整性规则来保证数据的完整性。
【关键词】SQL Server;数据完整性;数据库系统;约束
数据的完整性是指数据库中数据的正确性、有效性和一致性。正确性是指数据的合法性;有效性是指数据是否在定义的有效范围;一致性是指表示同一个事实的两个数据应相同。数据库管理系统要提供必要的功能,保证数据库中存储的数据在更新过程中始终与客观世界实际的信息状态保持一致。数据完整性包括:实体完整性,它是指主键的值不能为空或部分为空,如果主键为空或部分为空,则失去了主键的惟一标识性。参照完整性是指一个表的外部键必须在另一个表中找到或者为空。参照完整性反映了事物之间的相互联系。用户自定义完整性是针对具体应用环境数据必须满足的语义要求。
1.数据完整性的界定
SQL Server 2003是一种比较复杂的数据库,主要靠内部的映射关系的一种数据库,这种数据库的服务一般来说是对于复制、集成、分析、通知以及报表等相关服务的融合,此外,Visual Studio.NET等第三方开发工具的有效结合。因此,本系统使将用SQL Server 2003数据库。
首先,.NET Framework 与SQL Server 2003有机结合的过程中,SQL Server利用.NET平台特有的公用语言运行时(CLR-Common Language Runtime)的特性来生成数据库的相关对象,在数据库管理系统中充分利用.NET代码的功能。
其次,借助SQL Server 2003,可以为网页服务开发提供便利,这样,SQL Server使用的是 HTTP技术,对于以Web服务为中心的应用程序的数据访问得以更新。
最后,SQL Server 2003还新增了T-SQL事务语句,从而实现了可伸缩性数据库应用的开发语言功能的拓展。
数据库设计是针对应用需求和环境,建立合理的数据库模式和存储结构,保证数据的高效存取,并满足应用的任务处理要求。
数据库设计过程分为4个阶段:需求分析、概念设计、逻辑设计、物理设计。需求分析包括数据分析和功能分析。确定用户要达到的目标,从这些目标中获得数据库的要求,并整理成说明书,包括数据流程图、约束条件、技术指标等信息。概念设计产生反映企业组织信息需求的数据库概念结构,概念设计的主要方法是采用E-R方法和数据字典。逻辑设计是从概念模型导出特定的数据库逻辑模式,在功能、性能、完整性和一致性约束及数据库可扩展性等方面均应满足用户提出的要求。逻辑设计中,将E-R图转换为关系模型。物理设计是从满足用户需求的、已确定逻辑数据库结构转换出一个有效的、可实现的物理数据库结构的过程。最终生成一个物理设计說明书,在实现数据库时根据说明书进行操作。
1.1规范化
第一范式(1NF):数据表中每一个数据项均不能拆分成两个或两个以上的数据项。
第二范式(2NF):数据表满足第一范式,并且数据表中任何一个非主键字段的数值都依赖于主键。
第三范式(3NF):数据表满足第二范式,并且数据表中任何两个非主键字段的数值之间不存在函数依赖。
1.2数据完整性
(1)实体完整性:设置主键、唯一键、唯一索引、标识列等方法实现。
(2)域完整性:设置默认值、检查、外键、数据类型、规则等方法实现。
(3)参照完整性:设置外键、检查、触发器、存储过程等方法实现。
(4)用户定义完整性:设置规则、触发器、存储过程、约束等实现。
2.实现数据完整性的实现
2.1数据库的连接
数据库连接:(ADO通过OLEDB实现对不同数据源的访问)
(1)初始化COM库:在CMannagementApp::InitInstance中调用:CoInitialize(NULL)
(2)初始化数据库:在CManagementDlg的构造函数中实现:
CSting strConnection="driver={SQL Server};
Server=127.0.0.1; DATABASE=QUEStoneDB; UID=sa;PWD=123;";
pDB=new CADODatabase;
pDB->Open(strConnection);
(3)使用创建记录集:pRs=new CADORecordest(pDB0;
(4)操作完成后关闭并释放记录集指针:
if(pRs && pRs->IsOpen())
pRs->Close();
if(pRs)
delete(pRs);
(5)退出系统时释放数据库指针
在CManagementDlg的析构函数中实现
if(pRs && pRs->IsOpen())
pRs->Close();
if(pRs)
delete(pRs);
(6)退出系统时清除COM库:
在CManagementApp::ExitInstance中调用::CoUninitialize();
2.2 ADO.NET 中SQL Server xsgl数据库建立连接的代码
String cnStr= "Password=sa;Persist Security Info=True; User ID=sa;"+"Initial Catalog=xsgl; Data Source=B402";//服务器名称
SqlConnection cn=new SqlConnection(); cn.ConnectionString=cnStr;
cn.open();
ConnectionString属性是Connection对象最重要的一个属性,他用来指定与数据库建立连接时使用的连接串,连接串包涵有源数据库的名称和建立初始连接所需的其他参数,例如用户名和密码这些信息。
2.3使用ASP.net /c#连接access和sql server数据库
using system.data.oledb;引用命名空间,string strconnection="procider=microsoft.jet.oledb.4.0;";数据库提供者。
strconnection+=@"data source=c:\begaspnet\northwind.mdb";数据源标准形式data source=mydrive:mypath\myfile.mdb@防止后面的\解析为转义字符oledbconnection objconnection=new oledbconnection(strconnection);利用定义好的字符串建立连接对象方便后面使用strconnection 是存放连接数据库中使用的 提供者和數据源两个变量如果连接的数据库文件和当前文件在同一个目录下strconnection+="data source=”;\+=mappath("northwind.mdb")。
2.4 sql server 连接
String strconnectiong="user id=;pwd=;";
strconnection+="initial catalog=northwind;server=yoursqlserver;";
strconnection+="connect timeout=30";
sqlconnection objconnection=new sqlconnection(strconnection);
2.5 C#访问数据库的几种函数和参数
(1)Provider,指定要连接的数据源种类。如果使用的是SQL Server DataProvider,则不需要指定Provider参数,因为SQL Server DataProvider已经指定了所要连接的数据源是SQL Server服务器。如果使用的是OleDB Data Provider 或者其他的连接数据源,则不需指定Provider参数对应关系 : SQLOLEDB对应于Microsoft OLEDB Provider for SQL Server,
MSDASQL对应于Microsoft OLEDB Provider for ODBC
Microsoft.Jet.OLEDB.4.0对应于Microsoft OLEDB Provider for Access
MSDAORA对应于Microsoft OLEDB Provider for Oracle
(2)Server,指定需要连接的数据库服务器(或者数据域)。比如Server=(local),指定连接的数据库服务器是在本地。如果本地的数据库还定义了实例名,Server参数可以写成Server=(local)\实例名。另外,可以使用计算机名作为服务器的值。如果连接的是远程的服务器,Server参数可以写成Server=IP或者"Server=远程计算机名"的形式 Server参数也可以写成Data Source,比如Data Source=IP。
"server=(local);Initial Catalog=student;user Id=sa;password=;"="Data Source=(localhost);Initial Catalog=student;user Id=sa;password=;"
(3)DataBase:
DataBase参数用来指定连接的数据库名。比如DataBase=Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如 Initial Catalog=Master。
(4)Uid参数和Pwd参数:
指定登录数据库的用户名和密码。
(5)Connect Timeout参数:
指定打开数据库时最大的等待时间,单位是秒。如果不设置此参数,默认是15秒。如果设置-1表示无限期等待,一般不推荐使用。
(6)Intergrated Security参数:
用来说明登录到数据源时是否使用SQL Server的集成安全验证。如果该参数的取值是True(或者SSPI,或者YES),表示使用Windows验证模式,即不需要通过Uid和Pwd这样的方式登录。如果取值是False或者No,表示登录时使用Uid和Pwd方式登录。一般来说,使用集成安全验证的登录方式比较安全,因为这种方式不会暴露用户名和密码。安装SQL Server时,如果选中”Windows身份验证模式“单选按钮则应该使用如下的连接字符串:Data Source=(local);Init Catalog=student;Integrated Security=SSPI。
(7)Pooling、MaxPool Size和Min Pool Size参数:
Pooling参数用来说明在连接到数据源时,是否使用连接池,默认是True。当改值为True时,系统从适当的池中提取SQLConnection对象,或者需要时创建该对象并将其添加进去。当Fasle时,不适用连接池。
当应用程序连接到数据源或者创建连接对象时,系统不仅要开销一定的通信和内存资源,还必须完成诸如建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中登记等任务,因此往往成为最为耗时的操作。
实际上,大多数应用程序使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为Pooling的优化方法。
在连接池中们为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向连接池盛情数据库的连接对象。另外,连接池中的连接对象数量必须同实际需求相符,空置和满载都对数据库的连接效率不利。
Max Pool Size和Min Pool Size这两个参数分别表示连接池中最大和最小连接数量,默认分别是100和0。根据实际应用适当地取值将提高数据库的连接效率。
3.结束语
数据的完整性是数据库应用系统最基本的要求之一,在SQL Server数据库应用系统中可采用在服务器端数据表上定义完整性约束,创建数据表的完整性规则、默认和触发器,或者通过客户端应用程序控制等三种方式来进行数据的完整性保护。在开发应用系统中,应根据各种完整性约束的优点并将它们结合起来使用,充分发挥SQL Server提供的数据完整性的效能,在确保数据准确性和一致性方面减少对用户的依赖性,从而大大提高系统的可靠性。
【参考文献】
[1]杨正洪.SQL Server7.0关系数据库系统管理与开发指南.机械工业部出版社,2000.
[2]薛华成.管理信息系统.清华大学出版社,1995.
[3]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社.2002.
[4]罗远模,王珊.SQL Server数据库系统基础[M].北京:高等教育出版社,2002.
【关键词】SQL Server;数据完整性;数据库系统;约束
数据的完整性是指数据库中数据的正确性、有效性和一致性。正确性是指数据的合法性;有效性是指数据是否在定义的有效范围;一致性是指表示同一个事实的两个数据应相同。数据库管理系统要提供必要的功能,保证数据库中存储的数据在更新过程中始终与客观世界实际的信息状态保持一致。数据完整性包括:实体完整性,它是指主键的值不能为空或部分为空,如果主键为空或部分为空,则失去了主键的惟一标识性。参照完整性是指一个表的外部键必须在另一个表中找到或者为空。参照完整性反映了事物之间的相互联系。用户自定义完整性是针对具体应用环境数据必须满足的语义要求。
1.数据完整性的界定
SQL Server 2003是一种比较复杂的数据库,主要靠内部的映射关系的一种数据库,这种数据库的服务一般来说是对于复制、集成、分析、通知以及报表等相关服务的融合,此外,Visual Studio.NET等第三方开发工具的有效结合。因此,本系统使将用SQL Server 2003数据库。
首先,.NET Framework 与SQL Server 2003有机结合的过程中,SQL Server利用.NET平台特有的公用语言运行时(CLR-Common Language Runtime)的特性来生成数据库的相关对象,在数据库管理系统中充分利用.NET代码的功能。
其次,借助SQL Server 2003,可以为网页服务开发提供便利,这样,SQL Server使用的是 HTTP技术,对于以Web服务为中心的应用程序的数据访问得以更新。
最后,SQL Server 2003还新增了T-SQL事务语句,从而实现了可伸缩性数据库应用的开发语言功能的拓展。
数据库设计是针对应用需求和环境,建立合理的数据库模式和存储结构,保证数据的高效存取,并满足应用的任务处理要求。
数据库设计过程分为4个阶段:需求分析、概念设计、逻辑设计、物理设计。需求分析包括数据分析和功能分析。确定用户要达到的目标,从这些目标中获得数据库的要求,并整理成说明书,包括数据流程图、约束条件、技术指标等信息。概念设计产生反映企业组织信息需求的数据库概念结构,概念设计的主要方法是采用E-R方法和数据字典。逻辑设计是从概念模型导出特定的数据库逻辑模式,在功能、性能、完整性和一致性约束及数据库可扩展性等方面均应满足用户提出的要求。逻辑设计中,将E-R图转换为关系模型。物理设计是从满足用户需求的、已确定逻辑数据库结构转换出一个有效的、可实现的物理数据库结构的过程。最终生成一个物理设计說明书,在实现数据库时根据说明书进行操作。
1.1规范化
第一范式(1NF):数据表中每一个数据项均不能拆分成两个或两个以上的数据项。
第二范式(2NF):数据表满足第一范式,并且数据表中任何一个非主键字段的数值都依赖于主键。
第三范式(3NF):数据表满足第二范式,并且数据表中任何两个非主键字段的数值之间不存在函数依赖。
1.2数据完整性
(1)实体完整性:设置主键、唯一键、唯一索引、标识列等方法实现。
(2)域完整性:设置默认值、检查、外键、数据类型、规则等方法实现。
(3)参照完整性:设置外键、检查、触发器、存储过程等方法实现。
(4)用户定义完整性:设置规则、触发器、存储过程、约束等实现。
2.实现数据完整性的实现
2.1数据库的连接
数据库连接:(ADO通过OLEDB实现对不同数据源的访问)
(1)初始化COM库:在CMannagementApp::InitInstance中调用:CoInitialize(NULL)
(2)初始化数据库:在CManagementDlg的构造函数中实现:
CSting strConnection="driver={SQL Server};
Server=127.0.0.1; DATABASE=QUEStoneDB; UID=sa;PWD=123;";
pDB=new CADODatabase;
pDB->Open(strConnection);
(3)使用创建记录集:pRs=new CADORecordest(pDB0;
(4)操作完成后关闭并释放记录集指针:
if(pRs && pRs->IsOpen())
pRs->Close();
if(pRs)
delete(pRs);
(5)退出系统时释放数据库指针
在CManagementDlg的析构函数中实现
if(pRs && pRs->IsOpen())
pRs->Close();
if(pRs)
delete(pRs);
(6)退出系统时清除COM库:
在CManagementApp::ExitInstance中调用::CoUninitialize();
2.2 ADO.NET 中SQL Server xsgl数据库建立连接的代码
String cnStr= "Password=sa;Persist Security Info=True; User ID=sa;"+"Initial Catalog=xsgl; Data Source=B402";//服务器名称
SqlConnection cn=new SqlConnection(); cn.ConnectionString=cnStr;
cn.open();
ConnectionString属性是Connection对象最重要的一个属性,他用来指定与数据库建立连接时使用的连接串,连接串包涵有源数据库的名称和建立初始连接所需的其他参数,例如用户名和密码这些信息。
2.3使用ASP.net /c#连接access和sql server数据库
using system.data.oledb;引用命名空间,string strconnection="procider=microsoft.jet.oledb.4.0;";数据库提供者。
strconnection+=@"data source=c:\begaspnet\northwind.mdb";数据源标准形式data source=mydrive:mypath\myfile.mdb@防止后面的\解析为转义字符oledbconnection objconnection=new oledbconnection(strconnection);利用定义好的字符串建立连接对象方便后面使用strconnection 是存放连接数据库中使用的 提供者和數据源两个变量如果连接的数据库文件和当前文件在同一个目录下strconnection+="data source=”;\+=mappath("northwind.mdb")。
2.4 sql server 连接
String strconnectiong="user id=;pwd=;";
strconnection+="initial catalog=northwind;server=yoursqlserver;";
strconnection+="connect timeout=30";
sqlconnection objconnection=new sqlconnection(strconnection);
2.5 C#访问数据库的几种函数和参数
(1)Provider,指定要连接的数据源种类。如果使用的是SQL Server DataProvider,则不需要指定Provider参数,因为SQL Server DataProvider已经指定了所要连接的数据源是SQL Server服务器。如果使用的是OleDB Data Provider 或者其他的连接数据源,则不需指定Provider参数对应关系 : SQLOLEDB对应于Microsoft OLEDB Provider for SQL Server,
MSDASQL对应于Microsoft OLEDB Provider for ODBC
Microsoft.Jet.OLEDB.4.0对应于Microsoft OLEDB Provider for Access
MSDAORA对应于Microsoft OLEDB Provider for Oracle
(2)Server,指定需要连接的数据库服务器(或者数据域)。比如Server=(local),指定连接的数据库服务器是在本地。如果本地的数据库还定义了实例名,Server参数可以写成Server=(local)\实例名。另外,可以使用计算机名作为服务器的值。如果连接的是远程的服务器,Server参数可以写成Server=IP或者"Server=远程计算机名"的形式 Server参数也可以写成Data Source,比如Data Source=IP。
"server=(local);Initial Catalog=student;user Id=sa;password=;"="Data Source=(localhost);Initial Catalog=student;user Id=sa;password=;"
(3)DataBase:
DataBase参数用来指定连接的数据库名。比如DataBase=Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如 Initial Catalog=Master。
(4)Uid参数和Pwd参数:
指定登录数据库的用户名和密码。
(5)Connect Timeout参数:
指定打开数据库时最大的等待时间,单位是秒。如果不设置此参数,默认是15秒。如果设置-1表示无限期等待,一般不推荐使用。
(6)Intergrated Security参数:
用来说明登录到数据源时是否使用SQL Server的集成安全验证。如果该参数的取值是True(或者SSPI,或者YES),表示使用Windows验证模式,即不需要通过Uid和Pwd这样的方式登录。如果取值是False或者No,表示登录时使用Uid和Pwd方式登录。一般来说,使用集成安全验证的登录方式比较安全,因为这种方式不会暴露用户名和密码。安装SQL Server时,如果选中”Windows身份验证模式“单选按钮则应该使用如下的连接字符串:Data Source=(local);Init Catalog=student;Integrated Security=SSPI。
(7)Pooling、MaxPool Size和Min Pool Size参数:
Pooling参数用来说明在连接到数据源时,是否使用连接池,默认是True。当改值为True时,系统从适当的池中提取SQLConnection对象,或者需要时创建该对象并将其添加进去。当Fasle时,不适用连接池。
当应用程序连接到数据源或者创建连接对象时,系统不仅要开销一定的通信和内存资源,还必须完成诸如建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中登记等任务,因此往往成为最为耗时的操作。
实际上,大多数应用程序使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为Pooling的优化方法。
在连接池中们为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向连接池盛情数据库的连接对象。另外,连接池中的连接对象数量必须同实际需求相符,空置和满载都对数据库的连接效率不利。
Max Pool Size和Min Pool Size这两个参数分别表示连接池中最大和最小连接数量,默认分别是100和0。根据实际应用适当地取值将提高数据库的连接效率。
3.结束语
数据的完整性是数据库应用系统最基本的要求之一,在SQL Server数据库应用系统中可采用在服务器端数据表上定义完整性约束,创建数据表的完整性规则、默认和触发器,或者通过客户端应用程序控制等三种方式来进行数据的完整性保护。在开发应用系统中,应根据各种完整性约束的优点并将它们结合起来使用,充分发挥SQL Server提供的数据完整性的效能,在确保数据准确性和一致性方面减少对用户的依赖性,从而大大提高系统的可靠性。
【参考文献】
[1]杨正洪.SQL Server7.0关系数据库系统管理与开发指南.机械工业部出版社,2000.
[2]薛华成.管理信息系统.清华大学出版社,1995.
[3]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社.2002.
[4]罗远模,王珊.SQL Server数据库系统基础[M].北京:高等教育出版社,2002.