一般来说,我想知道如何根据主要数据的类型存储辅助数据。
这是现实世界的情况。将“学生”添加到我的数据库时,我想开始他们的推荐。这将通过引用一个名为“referrer”的表来完成,该表存储将出现在下拉框中的选项列表,如下所示:
+-------------+---------------+
| referrer_id | referrer |
+-------------+---------------+
| 1 | Student |
| 2 | Search Engine |
| 3 | Ad |
+-------------+---------------+
所以在学生表中,我将存储referrer_id——很简单。
根据选择,我希望用户能够输入辅助信息。例如,如果他们从列表中选择“学生”,则会出现第二个下拉框,向他们展示现有学生的列表,以便他们可以指定哪个学生是推荐人,我想存储 student_id。如果他们选择“搜索引擎”,我会给他们一个文本框,他们可以在其中输入搜索引擎的名称,我会存储该文本。
所以我的问题是,我应该如何构建“学生”表以保存这些信息,因为有时我会存储一个 student_id,或者在框中输入的文本,或者......?我最初的想法是在学生表中创建额外的列来保存各种可能性,但这看起来既混乱又不可扩展,所以我不在乎。我想知道这里是否需要一个额外的交叉引用表,它将包含 student_id、referrer_id,然后是一个值(例如引用 student_id,或输入到文本框中的值)。或者,对于不同的数据类型可能性,我可以使用“value_id”、“value_text”等来代替“value”。该表中的referrer_id 值会告诉我哪一列包含我想要的数据。