2016-02-26 25 views
1

在Access数据库中,我有一个连接到SQL Server视图的链接表。MS Access正在显示第一行的副本而不是正确的值

源视图有数据形式

c1 | c2 | c3 | c4 
----------------------- 
a | a1 | xya | q 
a | a1 | xya | w 
a | a1 | xyb | e 

,并在Access链接表是

c1 | c2 | c3 | c4 
----------------------- 
a | a1 | xya | q 
a | a1 | xya | q 
a | a1 | xya | q 

编辑:

还有很多类似的这些行。副本按c1分组。

我找到了一个原因。

enter image description here

柱C1被设定为一个唯一的标识符,而所有的人都应该是。

尽管如此,我仍然有一个问题。 “为确保数据的完整性并更新记录,您必须选择一个或多个字段来唯一标识每条记录,最多可选择10个字段。”

如果我有超过10列一起唯一标识每条记录,我不能选择它们,因此我没有选择列作为标识符,据我所知,这意味着我不能确定数据完整性将被保留,记录不能/可能不会被更新?

另一方面,我应该有一个具有唯一标识符的列,否则这是一个糟糕的设计,是对的吗?

+0

是那些只有三个记录视图 –

回答

1

拥有遍布多个列的唯一记录标识符 - 一个复合关键字 - 本身并不是一个糟糕的设计,但它在几乎可以肯定的情况下跨越了十个。

组合键更可能是"natural key"(其中一个由存在的原因而不是创建关键字所组成),根据我的经验,在旧系统中更常见。

具有唯一标识符(可以是int,guid或某种其他类型)的单列的替代方法称为surrogate key,除了唯一标识记录之外,该值没有任何意义。

关于哪个最好,没有正确或错误的答案,这取决于特定的要求。下面是进一步信息就如何作出适当的选择一些链接:

Surrogate vs. natural/business keys

http://www.techrepublic.com/blog/10-things/10-tips-for-choosing-between-a-surrogate-and-natural-primary-key/

http://www.agiledata.org/essays/keys.html