允许一列与另一列中的多行相关 Table

Allow One Column to Relate to Multiple Rows in Another Table

对于一项任务,我们应该对网站进行“逆向工程”并尝试重新创建数据库结构。除了一个专栏,我已经完成了所有专栏,但我不确定如何让它发挥作用。

对于这项作业,我选择了“逆向工程”Rate My Professors 网站。我有 4 tables:用户、评论、教授和学校。在网站上,您可以保存多个教授,但这就是我遇到的问题...我不知道要设置“用户”的“saved_professors”列的什么数据类型table.我希望它在数组中包含每个教授的 ID,但据我所知,你不能将数据类型作为数组(SET 和 ENUM 看起来很接近,但我很确定它们不会起作用我需要它的方式...)

有办法吗?还是我应该将它设置为 VARCHAR 或 TEXT(它只包含字符串中的 ID 列表)?


注意: 这不是关于存储一串 ID,我已经知道该怎么做,而且我知道这不是最好的方法,这就是我问这个的原因具体问题...请不要将其标记为 Is storing a delimited list in a database column really that bad? 的“重复”...这是一个很好的 question/answer,但它没有在这里回答我的问题。

你需要另一个 table。

您描述的是多对多关系。一个学生可以救很多教授,同样一个教授可以救很多学生

每个多对多关系都应作为一组 存储在新的 table:

CREATE TABLE saved_professors (
  user_id INT NOT NULL,
  professor_id INT NOT NULL,
  PRIMARY KEY (user_id, professor_id)
);

在此 table 中,每一行仅存储一对。这意味着对于每个学生,这个 table.

中可能有很多行

另请参阅我对以下问题的回答:Is storing a delimited list in a database column really that bad?