开发/数据库

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 开发/数据库

准备将Access表升级到Server 2005/2008

作者:代翀出处:IT专家网2009-01-12 10:21

  首先从主键索引开始

  如果MS Access要通过ODBC访问一个SQL Server数据库,Access要求一个表至少有一个唯一的索引,如果它将允许编辑这个表中的数据的话。这意味着数据库中的每一个表都需要有一个主键。同时它可以使用一个不是主键的唯一索引,像SQL Server Upsizer向导这样的工具将使表中的唯一索引成为主键。因此我建议你在每个表中都设一个主键,这样你将解决你的第一个升级问题。

  我喜欢排序主键的另一个原因是它一般意味着你有机会再次访问和改进你的数据库模型的设计。如果你决定不添加一个主键,在你升级表之后,你将只能读取这个表,而不能对它进行写操作。

  一旦你认为你需要为表添加一个主键,那么你可能不被允许添加这个主键,因为值重复了。要解决它有两个方法。第一个方法是添加一个“难看的”自动增长数字字段,并设置它为主键。这当然是很快的,而且如果你决定以后再来查看这个主键的话,你真的会比你这么做之前要好很多。解决这个重复项目问题的更好方法是利用Find Duplicates(找到重复)查询向导。在Access 2007中,当你点击数据库容器中的New Query按钮时,你将看到这个向导。最后,当你修改了你的索引时,如果有其它关联的表,那么不要忘了更新关系图表。

  不必要的索引和自动增长数字

  如果你不直接给表添加一个主键,Access会强烈推荐你添加一个唯一索引。同时大多数数据库专家将其看做是重新研究表设计的一个暗示,数据库狂热者可能会接受所提供的主键而不再多加思考。不幸地是,这个主键的默认名称是“ID”,而许多数据库狂热者会掉入这个陷阱。所以如果你在你的那些表中看到大量的这个名字的字段,那么就是该花几个小时解决这些不是那么有用的主键了。一旦Access这么做了,那么当使用查找表向导时,这个粗心所造成的一系列后果就会出现。在这种情况下,Access将使你添加一个自动增长数字字段到匹配查找表中这个自动增长数字字段的一个主表中。这起到了存储一个数字到你的表中和存储一个数字到你的查找表中的作用。在这种情况下,主表中这个名称(很可能是“ID”)也会重复,从而使得更加不明确。

  你在转换之前应该清除这些不必要的查找索引,否则你将在SQL Server中一直搜索你的数据库(关系)图表和表以算出一个查找代码的值。

  注意那些麻烦的自动索引

  你在转换的过程中会遇到的Access另一个特性是自动索引选项。这个有点“麻烦”的东西是在Access 2003中,在菜单Tools ~ Options下的Table/Queries标签页下。在Access 2007中,你需要点击Office按钮,选择Access选项,然后选择Object Designers,如图1和2中所示。你将发现,大多数数据库狂热者好像都不了解这个选项。结果就是数据库中的许多表会有计划之外的索引。如果你不理解这个意思,那么试一下这个小练习。

  1. 确定 “Auto Index on Import/Create”(导入/创建时的自动索引)选项在输入行中具有ID值。

  2. 在设计模式中打开一个新的表,添加一个字段,名字随意,然后添加“ID”到这个字段名称的末尾。

  3. 保存这个表,并选择Yes来创建一个主键。

  4. 现在在设计视图中打开这个表,并选择菜单项目View ~ Indexes。

  你将发现你在这个表中有两个索引,而看起来你只认可了一个。

  想象一下,在一个具有100个表或更多表的数据库中出现这个独特的“特性”,你会看到由数据库狂热者在Access表和查找向导的帮助下开发的数据库所遇到的挑战。

  准备将Access表升级到Server 2005/2008

  准备将Access表升级到Server 2005/2008

  图1 & 2. 在创建选项上找到和设置自动索引。

相关文章

关键词: 评论

责任编辑:包春林

网警备案