Web サイトのプロファイル ページには、すべてのユーザー向けにこれらの種類のフィールドが含まれています。
- 1 対 1 のフィールド - 名前、年齢、性別
- 一対多のフィールド - 職歴、学歴
- 多対多フィールド - 言語、賞、委員会
ツール - MYSQL および PHP [ただし、変更は可能です]
1 つのユーザー テーブルを作成することにしました。
tbl_user -> PK - user_id , FK - profile_id
ユーザーに対して一度だけ発生するすべてのフィールドを、テーブル tbl_user_profile に属性として追加します。
tbl_user_profile -> PK - profile_id
次に、1対多の種類の関係を満たすために、テーブルの束を作成します .これは、時間の経過とともに簡単に大きくなります..
tbl_user_jobs , tbl_user_education
FK - user_id [ INNO DB ]
そして、MANY_TO_MANY モデリング用の参照テーブルとして一連のテーブルを作成します -
tbl_ref_awards, tbl_ref_languages, tbl_ref_committee
PK = REF_ID
tbl_user_languages, tbl_user_awards, tbl_user_committee
FK - user_id , REF_ID
ここで、先ほど説明した詳細を含むプロファイル ページをレンダリングする必要があります。ページが読み込まれるたびに、テーブルtbl_user_*テーブルを tbl_user と結合し、ページに入力する必要があります。
まずこのデザインでいいのかな?第 2 に、多くのテーブルが page で [7 回] 結合されているため、ページの読み込み中に既にドラッグが発生していることがわかります。上記のユース ケースでデータベース設計を改善できる可能性について聞いてみるのもよいでしょう。すでにインデックスと FK が存在します。キャッシュはまだどこにも追加されていません。