2012-08-27 89 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