gpt4 book ai didi

ms-access - 规范化现有的 MS Access 数据库

转载 作者:行者123 更新时间:2023-12-04 02:24:58 24 4
gpt4 key购买 nike

我有一个大型 Access 数据库,我需要将其规范化为五个表和一个查找表。我了解规范化背后的理论,并且已经勾勒出表格的外观,但我不知道如何转换我的表格以使数据库规范化。表分析器不提供我想要的分割。

最佳答案

如果您只有一个表,请向其添加一个自动编号字段。

然后创建其他表,并使用原始单表中的自动编号值作为外键将它们连接回原始数据。

如果你有 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 值,它将所有派生记录绑定(bind)回原始表。

关于ms-access - 规范化现有的 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com