データベース構造の最適化に問題があります。私はそれを正確に説明しようとします。
さまざまな値を追加できるプロジェクトを作成しますが、この値にはデータベース内の異なる型の列が必要です (例: int、double、varchar)。さまざまな種類の値をデータベースに格納する最良の方法は何ですか。プロジェクトでは Propel 1.6 を使用しています。ポイントは、「int」、「varchar」、およびその他の列タイプで値を追加できることです。テーブルを検索するのは効率的でした。
合計で、2 つのアイデアがあります。1 つ目は、「id」、「value_int」、「value_double」、「value_varchar」などの列を持つ「値」のテーブルを作成することです。対応する列タイプを使用します。値のタイプに応じて、レコードは適切な列の値とともに保存されます (残りは NULL になります)。
2 番目の解決策は、"value_int"、"value_varchar" などの個別のテーブルを作成することです。"id"、"value" という列があり、関連する "value" の型 (つまり、int、varchar など) に対応します。など)。
上記の解決策のいずれも信じていないことを認めなければなりません。もともと、列が「テキスト」タイプになる1つのテーブル「値」について考えていましたが、この解決策はおそらくさらに悪いでしょう。
このトピックに関するあなたの意見を知りたいのですが、おそらく他のものが良いでしょう。前もって感謝します。
編集: 例:
3 つのテーブルがあります。
USER: [ユーザーのテーブル] * ID * 名前
FIELD: [プロファイル フィールドの表 - 列「タイプ」はフィールドのタイプです。例: int または varchar) * id * タイプ * 名前
値: * id * User_id - (FK user.id) * Field_id - (FK field.id) * 値
したがって、各行には USER テーブルのユーザーがあり、プロファイルは VALUE テーブルに保存されます。各プロファイル フィールドには異なるタイプ (FIELD テーブルの列「タイプ」) がある可能性があり、それに基づいて、この値を適切なタイプの適切な列に追加する必要があります。