2009-11-11 102 views
2

我試圖確認或否定您是否可以將MS Access 2003中的表格列定義爲一個集合。看起來這個是在Office 2007中實現的 - 您可以定義一個列以在查詢/查找中包含「多選列表」,但該功能對於新的訪問2007文件格式來說似乎是唯一的,只要我可以確定。Microsoft Access 2003是否包含集合或多集合?

措辭另一種方式,也MS Access 2003中有相當於SQL語句:

CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET); 

還是有一個聰明的解決辦法,以實現類似的東西?我會接受一個答案,提供有關Access 2003中的任何收集構造函數的信息。

回答

4

您是指Access數據庫引擎的multivalued data types?如果是這樣,那麼這些對於引擎的ACE(2007)版本來說是新的並且在Jet 4.0中不可用作爲Access2003的引擎版本。

FWIW我使用ANSI-92查詢模式(OLE DB,引擎類型= 5)在Access2007中試用了SQL,並且MULTISET關鍵字未被識別。

請注意,您可能不需要也不需要多值類型。一個特別的批評是Access數據庫SQL DML表達式服務沒有被改變以考慮多值類型。此外,請參閱本文Multivalued datatypes considered harmful

兩個蘇拉傑[Poozhiyil中,MS接入 項目經理]我同意 竭誠開發人員不必 需要使用多值字段。 瞭解數據庫 的人已經有了一個很好的方式來實現多對多的 關係,並且將從多值字段中獲益 。

所以,我對 開發人員的明確和一定的建議是不使用多值 字段。除潛在的痛苦之外,他們沒有任何東西給我們提供 。

UPDATE:

MULTISET是一個新的數據類型與SQL正式 開始時間:2003所以我 猜測的部分原因在Access 2007中添加 它要與完全符合 SQL標準

這幾乎是有趣的。 Access Team對添加符合任何SQL標準的SQL語法沒有興趣。

[當SQL Server團隊在其4.0版本中修改Jet時,他們希望獲得SQL-92合規性​​,但Windows組的成員依賴於某些功能仍不符合要求的Windows團隊無法這麼做......但這是另一回事。 Access團隊擁有自己的代碼庫私人人員,所以他們沒有這樣的藉口......除非SharePoint團隊現在有不適當的影響力?我離題了......]

考慮從有關SQL2003標準文檔此引用:

一個MULTISET類型的值可以是 創建或者通過枚舉 單個元件,或者通過查詢 表達供給 的元素;例如,

MULTISET[1, 2, 3, 4]

MULTISET( SELECT grades FROM courses )

...相反地,多重集值可以 用作使用的FROM 子句中的表參考UNNEST運營商。

Access團隊尚未向ACE SQL DML語法添加任何新的表達式或任何運算符。所以,不,這與SQL標準和SharePoint的一切無關。

戴維W芬頓:沒有,[支持 多值類型]在 ACCDB格式加入(不是ACE,因爲 @onedaywhen說...)

考慮這個報價從the Access Team's own blog

我們加入新 Access引擎的主要功能是「複雜 數據」的支持。

這絕對是一個引擎的功能!

+0

多值字段...我同意你說這是一個奇怪的想法!我甚至無法理解爲什麼在Access 2007中實現的。它絕對是一種誤導和混淆的概念,與關係數據庫 – 2009-11-11 21:41:41

+3

其實我們開發類型涉及像接管使用多值的用戶創建的解決方案時。它被稱爲計費小時。 – 2009-11-11 21:57:20

+0

是的,多值數據類型是什麼,我在2007年訪問僅供參考,MULTISET是一個新的數據類型與SQL正式開始玩:2003 http://www.sigmod.org/record/issues/0403/E.JimAndrew -standard.pdf - 所以我猜想在Access 2007中添加它的部分原因是完全符合SQL標準。它已經在甲骨文存在了一段時間(這是我的例子來自哪裏) - 抱歉應該提到這一點。我之前使用過MULTISETS來設置一張表作爲一個位掩碼。非常便利。 – DaveParillo 2009-11-11 23:46:32

相關問題