分享
 
 
 

利用EnterpriseManager加强数据完整性

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

我们都知道Microsoft SQL Server数据库可以基本保证数据的完整性。而本文所讲的是如何利用SQL Server提供的Enterprise Manager 客户端软件设置数据约束条件以加强数据完整性。

确保数据库中的数据完全正确(数据完整性)是一项很难的工作,有时候甚至是不可能做到的,正因如此它也是各种系统所追求的一个基本目标。此外,一旦数据出现不一致,应当如何处理也是一个问题。在开发数据库应用程序时,我们都会在程序中加入一段代码来检验数据是否正确,而SQL Server也可以利用约束条件将数据库服务器变成检验数据完整性的第一道哨卡。此外为了方便用户,SQL Server提供了Enterprise Manager客户端来简化约束条件处理过程。

什么才合法?

在开发数据库应用程序时,开发者必须首先清楚每个表格中应该存放什么类型的数据或数据的大小范围。这点一旦确定下来,整个程序都要按照这个规范强制执行。这个强制规范可以是约束条件、默认值以及允许空值。

下面给出了约束条件的类型以及默认值和空值类型:

PRIMARY KEY-通常情况下,每个表中都有一列或者一个组合列中的数据用以唯一确定每行的数据。这个列就被称为该表的主键,它可以用来加强数据的完整性。当你建立或者修改一个表时,可以通过定义PRIMARY KEY约束条件来创建一个主键。每个表里只能有一个主键。

FOREIGN KEY-- FOREIGN KEY (FK) 是表中的一列或者一个组合列,它可以实现两个表中数据的关联。通过在一个表中建立一个列,其键值为另一个表的主键值,我们就称这个列为外键(foreign key)。

UNIQUE-你可以通过 UNIQUE 约束条件来确保表中指定的列里没有重复值,不过主键不包括在内。

CHECK-- CHECK约束条件通过限制列中的值来实现数据域的完整性。它和FOREIGN KEY约束条件类似,都是通过控制已经存在列中的值来实现数据完整性的。不同点是它们对合法数据的确定方法不同:FOREIGN KEY约束条件从另一个数据表中获取合法值列表,而CHECK约束条件则是通过本地表达式来确定数据的合法性,跟其它数据表无关。

DEFAULT-Default约束条件在表中没有给定数据的位置给定一个预先定义的值。

Nullability-这个约束条件用来表明某一列是否支持NULL值。

如果在你的数据库应用程序中良好的运用了上面的各种约束类型,就可以确保数据完整性。至于如何运用,则可以通过使用Transact-SQL或者Enterprise Manager 客户端软件来实现。 Enterprise Manager

Enterprise Manager客户端是一款图形界面的应用程序,它可以帮助用户查看现有数据库或者建立一个新的数据库。下面我会利用一个标准的pub数据库(包含在各种版本的SQL Server中)来演示其具体应用。在查看数据表的时候右键点击某一列,我们就可以进入约束条件定义窗口。在图A中,我选择了pub数据库中discounts 表的discount列,点击右键后,就出现了图A所示的画面。

图A

在Enterprise Manager中操作约束条件

下面是相关选项的说明:

Set Primary Key-将所选的列定为该表的主键。在图A中,discounttype区域是主键,其键名左边的黄色钥匙就是主键标志。

Relationships-确定所选列是另一个数据表的外键。

Check Constraints-为数据表创建check 约束条件,并且可以编辑和删除之前定义的约束条件。图B显示了在discount 列创建约束条件(图中的约束条件是discount值必须大于0)的情况。

图B

创建check 约束条件

在图B中我们能看到三个复选框。它们的意思分别是:是否强制现有数据符合新约束条件、复制数据时是否实施约束条件、插入及更新操作是否实施约束条件。最大的问题一般出现在第一个选项上,当用户在现有数据表中加入新约束条件时,旧数据有可能会出现与约束条件不符的情况,此时选这一项就会破坏旧有数据。因此我们最好先将旧有数据规范化,再添加新的约束条件,这样这三个复选框就都可以选中了。

图C显示了所选表格的关系定义。从数字上看,stores表和我们选择的discounts表通过外键相关联。真实的外键在discounts表中,并且指向stores表的主键。这种关联可以被编辑或者删除,另外,我们也可以添加新的关联。剩下的几个选项和约束条件选项卡中出现的类似,可以指定是否在inserts、updates和replication操作时实施约束条件。以及是否进行级联更新或者删除。

图C

关联操作

在图A下方可看到,对于选定的列,默认值选项是可用的。另外,Allow Nulls列可以让你确定该列是否可以使用空值。

总结

设计一个数据库系统并不是简单的工作。当表结构确定下来后,就一定要保证数据的整性。你可以通过约束条件来实现其数据完整性,为此SQL Server提供了图形界面的Enterprise Manager客户端来帮助用户简化约束条件实现过程。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有