MS Access中表之间的关系
Posted
技术标签:
【中文标题】MS Access中表之间的关系【英文标题】:Relationships Between Tables in MS Access 【发布时间】:2013-10-27 16:43:38 【问题描述】:我完全是数据库新手,在 MS Access 2013 中设置 3 个表之间的关系时遇到了一些困难。
我的想法是我有一个包含帐户信息的表格,一个包含与此帐户相关的呼叫的表格,还有一个包含所有可能的呼叫响应的表格。我尝试了它们之间的不同组合,但没有任何效果。
第一个表 - 帐户:AccountID(PK) |账户名 |语言 |国家 |电子邮件 第二张表 - 调用:CallID(PK) |帐户 |回应 |评论 |日期 第 3 个表 - 响应:ResponseID(PK) |回应【问题讨论】:
您能解释一下“关系”是什么意思吗?是否要在其他表中设置主键和外键? 我想我有FK和PK的想法(如果没有请纠正我),但我指的是不同领域之间的关系。例如:(1st table)AccountID-(2nd table)Account:一对多。 【参考方案1】:当你有一个表时,它通常有一个主键字段,它是表的主索引。为了将它与其他表连接起来,您通常通过在其他表上设置外键来实现。
假设您有Accounts
表,它有AccountID
字段作为主键。该字段是唯一的(意味着该字段没有重复值)。
现在,您有另一个名为 Calls
的表,并且在那里有一个名为 AccountID
的外键字段,它指向 Accounts
表。
基本上你有 Accounts
和以下数据:
AccountID| AccountName | Language | Country | Email
1 | FirstName | EN | US | some@email.com
2 | SecondName | EN | US | some@email.com
现在你有另一个表Calls
有很多调用
CallID(PK) | AccountID(FK) | ResponseID(FK) | Comment | Date
1 | 1 | 1 | a comment | 26/10
2 | 1 | 1 | a comment | 26/10
3 | 2 | 3 | a comment | 26/10
4 | 2 | 3 | a comment | 26/10
您可以看到一对多关系:一个 accountID(在我的示例中为 AccountID=1)到多个调用(在我的示例中为 2 行,AccountID=1 作为外键,第 1 行和第 2 行)并且 AccountID=2 也2 行 Calls(第 3 行和第 4 行)
Responses
表也是如此
【讨论】:
太好了,它对我来说非常有用,但是当我尝试创建这种关系(在表 Accounts 和 Calls 之间)时,我收到错误消息“关系必须在相同数量的字段上数据类型”。我检查了这两种数据类型,它们是“数字”。另外,让我提一下 Calls 表目前是空的。最后一件事,如果我想在 Calls 表中输入一个帐户,而不是按数字,而是按帐户名称,我该怎么办。 calls中的字段为Long-Integer类型,Accounts中的PK字段为AutoNumber类型 谢谢leonid,我想我理解了这个概念,现在一切正常。我还面临着一件事。我想知道如何在“呼叫”表中输入新实体时,不使用 AccountID,而是使用帐户名称(原因:使用名称而不是数字更容易)并保持当前关系? 这取决于你做的SQL查询,如果你连接两个表(例如,要带上AccountID=1的所有数据,你也会得到表Calls的字段count
。(只需在访问中寻找加入)【参考方案2】:
使用这个表结构:
Accounts : AccountID(PK) | AccountName | Language | Country | Email
Calls : CallID(PK) | AccountID(FK) | ResponseID(FK) | Comment | Date
Responses: ResponseID(PK) | Response
Accounts.AccountID 由 Calls.AccountID 引用。 1:n - 一个帐户可以进行多次调用,但每次调用只涉及一个帐户。
Responses.ResponseID 由 Calls.ResponseID 引用。 1:n - 许多调用可以从准备好的集合中获得相同的响应,但每个调用都得到其中一个。
【讨论】:
感谢帕莱克的回答和解释,+1。感谢你们,我处理好了,但现在我有了新的“要爬的山”。请查看我在 leonid 的回答下的评论以获取更多详细信息。提前致谢!【参考方案3】:要真正定义 Access 中的关系,请打开“关系”窗口...
...然后按照此处的详细说明进行操作:
How to define relationships between tables in an Access database
【讨论】:
以上是关于MS Access中表之间的关系的主要内容,如果未能解决你的问题,请参考以下文章
Access ODBC:不同数据库文件中表之间的JOIN