允许一列与另一列中的多行相关 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?
对于一项任务,我们应该对网站进行“逆向工程”并尝试重新创建数据库结构。除了一个专栏,我已经完成了所有专栏,但我不确定如何让它发挥作用。
对于这项作业,我选择了“逆向工程”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?