4

SQL列に整数のリストを格納する最良の方法はどれですか. .....つまり、「1,2,3,4,6,7」

編集: これらの値は、SQL テーブル内の他の ID を表します。行は次のようになります

[1] [2]

id、listOfOtherIDs

これまでに調査した選択肢は次のとおりです。

  1. 「展開可能」な、つまりカンマまたはタブによる区切られた値の varchar
  2. すべての値を個別に含む XML
  3. 値ごとに個別の行を使用します。

使用するのに最適な方法はどれですか?

ありがとう、イアン

4

2 に答える 2

7

レコードの 1 つの要素は、1 つの値のみを参照できます。これはデータベース設計の基本原則です。

データベースの設計を変更する必要があります。値ごとに 1 つの行を使用します。あなたは正規化について読みたいと思うかもしれません。

最初の正規形の説明でここに示されているように:

第 1 正規形は、テーブル内のすべての行と列の交点に単一の値が存在し、値のリストは存在しないことを示しています。たとえば、Price という名前のフィールドに複数の Price を配置することはできません。行と列の各交点をセルと考えると、各セルは 1 つの値しか保持できません。

于 2013-09-26T01:52:02.753 に答える
4

Jeroen の回答は「多値」属性に対して有効ですが、複数のコンマ区切りの値が実際には 1 つの大きな値を表している可能性があるという真の状況があります。パス データ (マップ上)、整数シーケンス、素因数のリストなどは、コンマ区切りの varchar に格納できます。正確に何を保存しているのか、その値をどのように取得して使用する必要があるのか​​ を説明する方がよいと思います。

編集:

あなたの編集を見ると、ID によって別のテーブルの PK を意味する場合、これは、このテーブルと ID を保存しているテーブルとの間の真の MN 関係のように聞こえます。このようなものは、実際には別の動名詞に格納する必要があります。BTW は、これらの各テーブルの PK を FK として持つテーブルであり、両方のテーブルの関連する行をリンクします。したがって、Jeroenの答えはあなたの状況に非常に適しています。

于 2013-09-26T02:00:07.440 に答える