2012-08-27 128 views
1

有没有一种方法可以将其非复制的表定义为两个字段?不同的行 - 基于两个字段

通过该我有3列 GID,CID,价格

标准:

  • 只能有1
  • 可以有多个cid的,只要有多个gid和标准1不违反

如果可能,我基本上想要在表格设计中有所限制。不知道它是否可能只是想我会问。


编辑(2010-08-27 11:18 CST)

好一点澄清,我有两个指标,以及,一个在gid等是cid,我可以有两个指标确定唯一性?该表基本上是一个连接表,因为所绘制的两个表具有一对多关系,只要它们的对应关系对其ID是唯一的。

表/索引声明:

  • GID {数值:长}(主:否,独特的:否,忽略空值:否)[FK]
  • CID {数值:长}(主:不,独特的:没有,忽略Null:无)[FK]
  • 价格{数字:单}

用法:

  • CID 1-许多GID
    • CID是从tblCat衍生(作为PK)
  • GID 1-许多CID
    • GID从tblGrp衍生(作为PK)
+0

如果你问你可以有基于两个领域,是的,你可以一个唯一索引。只要不是主要的,你甚至可以拥有空值。 – Fionnuala

+0

增加了更多细节,仍然习惯了新的(对我)访问设计。 – GoldBishop

+0

您是否在问如何使用MS Access中的两个字段创建索引?现有索引不相关。 – Fionnuala

回答

2

在MS Access中创建多字段索引没有任何困难。您只需点击索引按钮(闪电)并选择您需要的。

enter image description here

+0

不知道你可以用PK做到这一点,在Access中从多个字段创建一个约束。 – GoldBishop

+0

如何在关系中使用复合材料http://stackoverflow.com/questions/11730619/reference-to-composite-primary-key-in-access-2007/11737106#11737106 – Fionnuala

+0

我有这么多的乐趣,这个发现在Access中的能力。我的乐趣有JUST BEGUN :) – GoldBishop

1

你的第一点是......

  • 只能有1个CID 1 GID

但后来你说......

  • GID 1-多CID

所以我不能确定你想要什么。如果此数据集代表可接受的样本值...

gid cid 
    1 1 
    2 1 
    2 2 

...我使用下面的过程创建了该表。主键是gidcid上的复合索引。这禁止了这些字段的空值,并确保只有唯一的值对可以存储在表中。

一个gid值可能与多个不同的cid值配对。一个cid可能与多个不同的gid值配对。

如果这不是你想要的,请说明你想要的。如果只需要cid的附加索引,则可以添加一个......它不会干扰主键索引。

这是我使用的程序。

Public Sub CreateTable_GoldBishop() 
    Const cstrTable As String = "tblGoldBishop" 
    Dim cn As Object 
    Dim strSql As String 

    Set cn = CurrentProject.Connection 
    strSql = "CREATE TABLE " & cstrTable & "(" & vbCrLf & _ 
     "gid INTEGER," & vbCrLf & _ 
     "cid INTEGER," & vbCrLf & _ 
     "price SINGLE," & vbCrLf & _ 
     "CONSTRAINT pkey PRIMARY KEY" & _ 
     "(gid, cid)" & vbCrLf & _ 
     ");" 
    Debug.Print strSql 
    cn.Execute strSql 
    Set cn = Nothing 
End Sub 

顺便说一句,我不是想告诉你用DDL来创建表,但如果这是你想要的表的设计,你可以运行的程序,然后检查在设计视图表。

+0

是的,它是一个连接表,我可以做一个特定的风格查找一个特定的gid并获得所有的cid与它相关联,反之亦然,查找一个cid并获取所有GID的。但是在任何一种情况下,只有一个cid与特定的gid配对,即使可能有多个条目用于特定的cid,但只有一个与唯一的gid配对 – GoldBishop