私たちは、それぞれが異なるプロパティを持つ約5つの異なるユーザーロールを特徴とするWebサイトに取り組んでいます。データベーススキーマの現在のバージョンには、すべてのユーザーとそのすべてのプロパティを保持する単一のユーザーテーブルがあります。
問題は、必要なプロパティがユーザーロールごとに異なることです。すべてのユーザーは、名前、電子メールアドレス、パスワードなど、同じ基本プロパティを持っています。しかし、それに加えて、プロパティは役割ごとに異なります。ソーシャルメディアリンクを持っているものもあれば、請求書アドレスを持っているものもあります。合計で最大60の列(プロパティ)があり、そのうちの一部だけが各ユーザーロールによって使用されます。
合計で、テーブルには約250,000人のユーザーがいる可能性があり、そのうちの最大の部分(約220,000)は単一のユーザーロールになります(60列のうち約20列を使用します)。他の30,000人のユーザーは、他の4つのルールに分割され、他の40列のサブセットを使用します。
開発の観点から、DBの両方から、これに最適なデータベース構造は何ですか?私の考えは、基本ユーザーテーブルを作成し、それをusers _ moderatorsのようなテーブルで拡張することですが、これにより、多くのJOINクエリが発生する可能性があります。これを防ぐ方法はVIEWを使用することですが、私はVIEWがパフォーマンスに悪影響を与える可能性があるいくつかの(時代遅れの?)記事を読みました:http ://www.mysqlperformanceblog.com/2007/08/12/mysql-view -as-performance-troublemaker/。
「完璧な」構造も存在しますか?何か提案がありますか、それともこれは本当に問題ではないので、すべてのユーザーを1つの大きなテーブルに配置する必要がありますか?