2013-10-27 74 views
0

我在所有数据库是新的,有在MS Access设置3和表之间的关系有些困难2013年在MS Access

的想法是,我有账户信息表,表与此帐户相关的呼叫以及包含所有可能的呼叫响应的一个表格。我尝试了不同的组合,但没有任何效果。

  • 1st table - Accounts:AccountID(PK)| AccountName |语言|国家|电子邮件
  • 第二个表格 - Calls:CallID(PK)|帐户|响应|评论|日期
  • 第三表 - 响应:ResponseID(PK)|响应
+0

你能解释一下你的 '关系' 是什么意思?你想在其他表中设置外键的主键吗? – Leon

+0

我想我有FK和PK的想法(如果不是,请纠正我),但我的意思是不同领域之间的关系。例如:(第一张桌子)AccountID-(第二张桌子)帐户:一对多。 –

回答

1

当您有一个表时,它通常有一个主键字段,它是该表的主索引。为了让您将其与其他表连接起来,通常通过在另一个表上设置外键来实现。

假设你有Accounts表,并且它有AccountID字段作为主键。该字段是唯一的(意味着该字段没有重复值)。

现在,您有另一个表Calls,您在那里有一个外部关键字字段AccountID,它指向Accounts表。

基本上你有Accounts具有以下数据:

AccountID| AccountName | Language | Country | Email 

1  | FirstName | EN  | US  | [email protected] 
    2  | SecondName | EN  | US  | [email protected] 

现在你有其他的表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 

可以看到一对多的关系:一个帐户ID(在我的例子帐户ID = 1),以多次调用(在我的例子2行与帐户ID = 1为外键,行1 & 2)和帐户ID = 2也具有2行的呼叫的(行3和4)

也是一样的Responses

+0

这很好,它对我来说非常适合,但是当我尝试创建这种关系时(表格Accounts和Calls之间),我得到了错误消息“关系必须在具有相同数据类型的相同数量的字段上”。我检查两种数据类型,他们是“数字”。另外,让我提及目前呼叫表是空的。还有最后一件事,如果我想在通话表中输入一个账户,我可以做什么,而不是通过号码,而是账户名称。 –

+0

调用中的字段应该是长整数类型,并且帐户中的PK字段应该是自动编号类型 – Leon

+0

谢谢leonid,我想我理解了这个概念,现在一切正常。还有一件事我正面临着。我想知道如何在'Calls'表中输入一个新的实体,而不是使用AccountID,而是使用账户名称(理由:更容易使用名称而不是数字)并保持当前关系? –

0

使用该表的结构:

Accounts : AccountID(PK) | AccountName | Language | Country | Email 
Calls : CallID(PK) | AccountID(FK) | ResponseID(FK) | Comment | Date 
Responses: ResponseID(PK) | Response 
  • Accounts.Acco untID由Calls.AccountID引用。 1:n - 多个电话可能有一个帐户,但每个电话只涉及一个帐户。
  • Responses.ResponseID由Calls.ResponseID引用。 1:n - 许多呼叫可以从准备好的集合中得到相同的响应,但是每个呼叫只能得到其中的一个。
+0

谢谢你的回答和解释Palec,+1。我向你致以谢意,但现在我有了新的“爬山”。 –