当前位置:  开发笔记 > 数据库 > 正文

规范化现有的MS Access数据库

如何解决《规范化现有的MSAccess数据库》经验,为你挑选了1个好方法。

我有一个大型访问数据库,我需要将其规范化为五个表和一个查找表.我理解规范化背后的理论并且已经勾勒出了表格的外观,但我对如何转换表格以使数据库规范化感到迷茫.表分析仪不提供我想要的故障.



1> David-W-Fent..:

如果您有一个表,请为其添加一个自动编号字段.

然后创建其他表,并使用原始单个表中的Autonumber值作为外键将它们连接回原始数据.

如果你有tblPerson:

  tblPerson
  LastName, FirstName, WorkPhone, HomePhone

并且您想要将其分解,添加PersonID自动编号,然后创建一个电话表:

  tblPhone
  PhoneID, PersonID, PhoneNumber, Type

然后,您将从tblPerson中添加适当字段的数据:

  INSERT INTO tblPhone (PersonID, PhoneNumber, Type)
  SELECT tblPerson.PersonID, tblPerson.WorkPhone, "Work"
  FROM tblPerson
  WHERE tblPerson.WorkPhone Is Not Null;

然后你会为家庭电话运行另一个查询:

  INSERT INTO tblPhone (PersonID, PhoneNumber, Type)
  SELECT tblPerson.PersonID, tblPerson.HomePhone, "Home"
  FROM tblPerson
  WHERE tblPerson.HomePhone Is Not Null;

有人建议使用UNION查询,您必须保存该查询,因为您不能将UNION查询作为Jet SQL中的子选择.保存的查询看起来像这样:

  SELECT tblPerson.PersonID, tblPerson.WorkPhone, "Work" As Type
  FROM tblPerson
  WHERE tblPerson.WorkPhone Is Not Null
  UNION ALL 
  SELECT tblPerson.PersonID, tblPerson.HomePhone, "Home" As Type
  FROM tblPerson
  WHERE tblPerson.HomePhone Is Not Null;

如果你将其保存为qryPhones,那么你将使用此SQL附加qryPhones:

  INSERT INTO tblPhone (PersonID, PhoneNumber, Type)
  SELECT qryPhones.PersonID, qryPhones.WorkPhone, qryPhones.Type
  FROM qryPhones;

显然,这只是最简单的例子.你会为所有领域做同样的事情.关键是你必须为源表创建一个PK值,它将所有派生记录绑定回原始表.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有