一般的に、一次データの種類に基づいて二次データをどのように保存するのか疑問に思っています。
これが現実世界の状況です。データベースに「学生」を追加するときに、紹介を開始したいと考えています。これは、ドロップダウン ボックスに表示されるオプションのリストを格納する「referrer」というテーブルを参照することによって行われます。
+-------------+---------------+
| referrer_id | referrer |
+-------------+---------------+
| 1 | Student |
| 2 | Search Engine |
| 3 | Ad |
+-------------+---------------+
そのため、生徒のテーブルに referrer_id を格納します。簡単です。
選択に基づいて、ユーザーが二次情報を入力できるようにしたいと考えています。たとえば、リストから「学生」を選択すると、2 つ目のドロップダウン ボックスが表示され、既存の学生のリストが表示されるので、どの学生が紹介者であるかを指定できます。student_id を保存する必要があります。「検索エンジン」を選択した場合は、検索エンジンの名前を入力できるテキスト ボックスを提示し、そのテキストを保存します。
だから私の質問は、この情報を保持するために「学生」テーブルをどのように構成する必要があるかということです。私の最初の考えは、さまざまな可能性を保持するために、学生テーブルに追加の列を作成することでしたが、それは面倒でスケーラブルではないように見えるので、気にしません。ここで、student_id、referrer_id、そして値 (参照する student_id やテキスト ボックスに入力された値など) を保持する追加の相互参照テーブルが保証されるかどうか疑問に思っています。または、「値」の代わりに、「value_id」、「value_text」などをさまざまなデータ型の可能性に使用することもできます。このテーブルの referrer_id の値は、どの列に必要なデータが含まれているかを示します。