CMSのユーザーモジュールに新しい機能を追加していて、障害にぶつかりました...または、道路の分岐点であると思います。何かに取り組む前に、stackoverflowから意見を聞きたかったのです。
基本的に、管理者が新しい「追加の」ユーザーフィールドを追加できるようにします。このフィールドは、ユーザーが登録時に入力したり、プロファイルを編集したり、他のモジュールで制御したりできます。この例としては、誕生日フィールド、自分自身の長い説明、またはユーザーがサイトで獲得したポイントなどがあります。言うまでもなく、保存されるデータはさまざまであり、大量のテキストから小さな整数値までさまざまです。さらに悪いことに、このデータを検索するオプションが必要です。
それが邪魔にならないように-これを行うための最良の方法は何でしょうか?今、私は次の列を持つテーブルを持つことに傾いています。
userid, refFieldID, varchar, tinyint, smallint, int, text, date, datetime, etc.
検索が大幅に高速化され、参照テーブル(フィールドの名前、検索可能かどうかなど、フィールドのすべてのデータを保持する)で、どの列を使用するかを参照できるので、これをお勧めします。そのフィールドのデータを保存します。
私に提案された他のアイデアと私は他のソリューションで使用されているのを見ました(vBulletinは1つですが、現在名前が私をエスケープしている他の人を見ました)、ユーザーID、参照ID、およびmedtextがあります分野。これを確実に言うにはMySQLについて十分な知識がありませんが、この方法では検索が遅くなり、オーバーヘッドが大きくなる可能性があります。
では、どの方法が「最良」でしょうか?私が見逃している別の方法はありますか?どちらの方法を使用する場合でも、検索は高速で、大規模ではなく(わずかなオーバーヘッドで十分です)、データに対して複雑なクエリを使用できるようにする必要があります。