0

一般来说,我想知道如何根据主要数据的类型存储辅助数据。

这是现实世界的情况。将“学生”添加到我的数据库时,我想开始他们的推荐。这将通过引用一个名为“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 值会告诉我哪一列包含我想要的数据。

4

1 回答 1

-1

也许在推荐人表中,您有一个额外的参数列,表示您拥有的特定推荐人的参数(对于学生,parameter_1 列可能是学生姓名)。然后,当需要在添加到学生表时序列化这些参数时,您可以使用简单的数组连接来序列化类型及其参数。(因此,如果您选择了学生和学生 John Doe,则该学生的推荐人可能是 1|John Doe|)

于 2013-06-29T00:02:26.870 回答