如何在 SQL 数据库中正确创建多对多关系?

How to properly create a many-to-many relationship in an SQL database?

我最近被问到一个面试问题,我被告知有一个文件 table 和一个类别 table。一个文件(主键file_id)可以有很多分类(主键category_id),也可以有很多个文件。但是,在它们各自的 table 中应该只有一个文件条目和一个类别条目。创建架构。

我的解决方案是使用 file_id 和 category_id 外键创建一个联结 table。如果用户想要检索文件的所有类别,查询将类似于:

SELECT * FROM Files JOIN FileCategory USING (file_id)

这个解决方案是否正确,或者是否有更好的解决方法?

您的解决方案是正确的。在两个实体之间实现多对多关系的标准方法是创建第三个实体,该实体具有由两个引用表的键组成的复合主键。