2

MS Access 2003 で表の列をセットで定義できるかどうか確認しようとしています。これOffice 2007 で実装されているようです。クエリ/ルックアップで「複数選択リスト」を持つ列を定義できますが、この機能は、私が判断できる限り、新しい Access 2007 ファイル形式に固有のもののようです。

別の言い方をすれば、MS Access 2003 には SQL ステートメントに相当するものがありますか。

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

または、同様のことを達成するための巧妙な回避策はありますか? Access 2003 のコレクション コンストラクターに関する情報を提供する回答を受け入れます。

4

1 に答える 1

4

Access データベース エンジンの多値データ型について言及していますか? そうであれば、はい、これらは ACE (2007) バージョンのエンジンにとって新しいものであり、エンジンの Access2003 バージョンである Jet 4.0 では使用できません。

FWIW Access2007 で ANSI-92 クエリ モード (OLE DB、エンジン タイプ = 5) を使用して SQL を試しましたが、MULTISET キーワードが認識されませんでした。

多値型は必要ないかもしれないし、したくないかもしれないことに注意してください。特に批判の 1 つは、Access データベース SQL DML 式サービスが多値型を考慮​​に入れるように変更されていないことです。また、次の記事「多値データ型が有害と見なされる」も参照してください。

Suraj [Poozhiyil、MS Access プログラム マネージャー] と私は、開発者が多値フィールドを使用する必要がないことに心から同意します。データベースを理解している人は、多対多のリレーションシップを実装する優れた方法を既に持っているため、多値フィールドからメリットを得ることはできません。

したがって、開発者への私の明確で確実なアドバイスは、多値フィールドを使用しないことです。彼らは潜在的な痛みを除いて、私たちに提供するものは何もありません.

アップデート:

MULTISETは SQL:2003 で公式に開始された新しいデータ型であるため、Access 2007 に追加する理由の一部は、SQL 標準に完全に準拠するためであると推測しています。

それはほとんど面白いです。アクセス チームは、SQL 標準に準拠する SQL 構文を追加することに関心を示していません。

[SQL Server チームが 4.0 リリースに向けて Jet を変更していたとき、彼らは SQL-92 準拠を達成したいと考えていましたが、コンポーネントが準拠していない一部の機能に依存していた Windows チームによってそれを妨げられました... しかし、それは別の話です。アクセス チームには独自のコード ベースのメンバーがいるので、そのような言い訳はできません... SharePoint チームが過度の影響力を持っていない限り? 余談…]

SQL2003 標準に関するドキュメントからの次の引用を検討してください。

型の値はMULTISET、個々の要素を列挙するか、クエリ式を介して要素を提供することによって作成できます。例えば、

MULTISET[1, 2, 3, 4]

また

MULTISET( SELECT grades FROM courses )

...逆に、multiset 値は、演算子FROM を使用して句内のテーブル参照として使用できます。UNNEST

アクセス チームは、新しい式や演算子を ACE SQL DML 構文に追加していません。いいえ、これは SQL 標準とは関係なく、すべて SharePoint と関係があります。

David W. Fenton: いいえ、[多値型のサポート] は ACCDB 形式で追加されました (@onedaywhen が言うように、ACE ではありません...)

アクセス チーム自身のブログからのこの引用を検討してください。

新しい Access エンジンに追加された主な機能は、「複雑なデータ」のサポートです。

それは間違いなくエンジンの特徴です!

于 2009-11-11T21:21:47.373 に答える