sql >> データベース >  >> RDS >> PostgreSQL

配列または複数の値を1つの列に格納する方法

    ここにいくつか質問があるので、個別に説明します:

    選択した多数のアイテムをデータベースの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を使用している場合は読みやすくなります。



    1. SQLiteに存在しない場合にのみテーブルを作成する方法

    2. クラスタリングとスタッキングによるSQLServerインスタンスの統合

    3. SQLサーバーデータベースをバックアップするための簡単なコマンドラインプログラムまたはスクリプトとは何ですか?

    4. foreach%dopar%+ RPostgreSQL