12

リレーショナル データベースに関する私の知識は限られていますが、各行にセットを含む列を作成するために使用できる SQL コマンドはありますか?

2列のテーブルを作成しようとしています。1 つは特定の ID の場合で、2 番目はこれらの ID に対応するセットの場合です。

について読みました

http://dev.mysql.com/doc/refman/5.1/en/set.html

ただし、セットのデータ型では、セットに含まれる可能性のあるアイテムを知っている必要があります。ただし、繰り返されない項目の可変番号リストが必要です。

4

4 に答える 4

16

その項目のリストを 2 番目のテーブルに複数の行として作成する方がはるかに優れています。次に、リストに必要な数のアイテムを含めることができ、それらを並べ替えたり、特定のアイテムを検索したり、それらが一意であることを確認したりできます.

区切りリストをデータベース列に保存するのは本当に悪いですか?への私の回答も参照してください。

于 2013-06-11T21:28:02.657 に答える
3

いいえ、任意のセットの MySQL データ型はありません。コンマ区切りのリストを含む文字列を使用できます。FIND_IN_SET()そのような値で動作するような関数があります。

しかし、これは不十分なデータベース設計です。制限のないリストがある場合は、値ごとに 1 行のテーブルに格納する必要があります。これにより、それらを索引付けできるようになり、検索が高速化されます。

于 2013-06-11T21:28:15.813 に答える
0

MySQL は、配列、リスト、またはそのような他のデータ構造をサポートしていません。ただし、文字列をサポートしているため、そのFIND_IN_SET()関数を使用してください: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

于 2013-06-11T21:28:23.740 に答える
0

ここでは、「SET」データ型は適切な選択ではありません。
「VARCHAR」を使用して、値をCSV形式で保存できます。それらはアプリケーション レベルで処理します。
例: INSERT into my_table(id, myset) values(1, "3,4,7");

于 2013-06-11T21:32:21.887 に答える