0

企業が上場できるアプリを作成していますが、輸出先の国を指定できる機能も追加したいと考えています。そのため、ユーザーが自分の国でビジネスのリストを検索すると、自分の国にあるビジネスだけでなく、自分の国にサービスを輸出している可能性のある他の国のビジネスも表示されます。

これまでの私の考えは次のとおりです。より良い解決策はありますか?Rails 3.2 と Postgres を使用しています。

  • ID、名前、スラッグなどのフィールドを持つ国モデル
  • リスト モデルには、その企業が輸出する国 ID を格納する Postgres 配列フィールドがあります

次に、ある国のリストを表示するときに、country_export 配列にその国 ID を持つビジネスを検索するだけです。

しかし、これはそれを行うための最も効率的な方法ですか? (postgres_ext gem を使用して、pg 配列のサポートを有効にします: https://github.com/dockyard/postgres_ext )

私が考えることができるもう 1 つのオプションは、Listing モデルのチェックボックスを使用することです。これにより、企業は世界中、EU、アジアなどに輸出するかどうかを指定できます。次に、それらを国モデルにブール フィールドとして追加します。これの欠点は、国を具体的に述べるほど正確ではないということです...しかし、それがより効率的な方法である場合、私は妥協を気にしません.

4

1 に答える 1

1

これは、2つのテーブルとの間の古典的なn:m関係であり、通常、これらのテーブルの2つの主キーを参照するテーブル(のような)によって実装されます。companycountrycompany_country

これらの密接に関連する質問の下で完全なコード例を参照してください:
PostgreSQLで多対多の関係を実装する方法は?
多対多の関係フィルター

特定の国の企業のリストについては、次のようになります。

SELECT c.*
FROM   company_country cc
JOIN   company c USING (company_id)
WHERE  cc.country_id = ?

リレーショナルデータベースの基本、SQLの基本。適切なインデックスがあれば、これは配列を処理するよりもはるかに高速です。

于 2013-01-14T03:51:16.647 に答える