ここにいくつか質問があるので、個別に説明します:
選択した多数のアイテムをデータベースの1つのフィールドに保存する必要があります
私の一般的なルールは次のとおりです。これは、必要な以外のすべてのものです。 外部キーを持つ2番目のテーブル(または3番目)。確かに、今は簡単に思えるかもしれませんが、実際にそれらのアイテムを個別に照会する必要があるユースケースが発生した場合はどうでしょうか。また、遅延インスタンス化のオプションが増え、複数のフレームワーク/言語間でより一貫したエクスペリエンスが得られることも意味します。さらに、接続タイムアウトの問題が発生する可能性は低くなります(30,000文字が多い)。
ENUMの使用を検討しているとのことですが。これらの値は固定されていますか?事前に知っていますか?もしそうなら、これは私の構造になります:
ベーステーブル(現在持っているもの):
| id primary_key sequence
| -- other columns here.
アイテムテーブル:
| id primary_key sequence
| descript VARCHAR(30) UNIQUE
マップテーブル:
| base_id bigint
| items_id bigint
マップテーブルには外部キーがあるため、base_idはベーステーブルにマップされ、items_idはアイテムテーブルにマップされます。
また、DBからこれを取得する簡単な方法が必要な場合は、結合を行うビューを作成します。挿入ルールと更新ルールを作成して、実際には1つのテーブルのみを処理することもできます。
データの保存にはどの形式を使用すればよいですか?
このようなことをする必要がある場合は、文字で表された文字列を使用してみませんか? CSV、XML、JSONよりも処理能力が低く、短くなります。
どの列タイプを使用してデータを保存する必要がありますか?
個人的には、TEXT
を使用します 。これをBLOB
にすることで、多くの利益が得られるようには思えません。 、およびTEXT
、私の経験では、何らかの形式のIDEを使用している場合は読みやすくなります。