允许一个列关联到另一个表中的多行



对于一个作业,我们应该"逆向工程"。创建一个网站,并尝试重新创建数据库结构。除了一个专栏,我已经完成了所有的专栏,我不知道如何使它工作。

对于这次作业,我选择了"逆向工程"。给我的教授打分网站。我有4个表:用户、评论、教授和学校。在网站上,你可以保存多个教授,但这就是我遇到的问题……我不知道如何设置saved_教授的数据类型"用户"栏。表格我希望它有每个教授的id在一个数组中,但据我所知,你不能有数据类型作为一个数组(SET和ENUM似乎很接近,但我很肯定,那些不会工作的方式,我需要它…)

有办法做到这一点吗?或者我应该将其设置为VARCHAR或TEXT(这将仅保存字符串中的id列表)?


注意:这不是关于存储一串id,我已经知道如何做到这一点,我知道这不是最好的方式,这就是为什么我问这个问题…请不要标记为"duplicate"。在数据库列中存储分隔的列表真的那么糟糕吗?这是一个很好的问题/答案,但它没有回答我的问题。

您需要另一个表。

你所描述的是一个多对多关系。一个学生可以拯救许多教授,同样,一个教授也可以被许多学生所拯救。

每个多对多关系应该存储为行的集合在一个新表中:

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

在该表的每行上只存储一对。这意味着对于每个学生,该表中可能有许多行。

请参阅我对以下问题的回答:在数据库列中存储分隔的列表真的那么糟糕吗?

相关内容

最新更新