【发布时间】:2021-11-27 20:24:05
【问题描述】:
我正在创建一个数据库,其中一个“用户”表需要有一组外键链接到另一个表的多行。我正在尝试找出处理此问题的最佳方法。
| user | projects |
|---|---|
| jeff | [1,2,6] |
| dave | [3,4] |
| projects | otherstuff |
|---|---|
| 1 | 'content 1' |
| 2 | 'content 2' |
| 3 | 'content 3' |
| 4 | 'content 4' |
| 5 | 'content 5' |
| 6 | 'content 6' |
我想可以为每个名为“user_projects”的用户创建一个表,但如果我有 10k 个用户,如果每个用户都在同一个项目上工作,那么拥有 10k 个带有冗余行的表似乎令人沮丧。
想法?
【问题讨论】:
-
拥有一个单独的
user_projects表,其中仅包含从user映射到project的行实际上非常常见,并且通常在SQL 中是首选。用户内部连接更容易找到在单个项目上工作的所有用户、单个用户的所有项目等。 -
DemixPixel 是对的:使用正确标准化的多对多关系。虽然 Postgres 确实提供了数组,但您不能对它们使用外键约束,而且通常使用起来更复杂。
-
我明白了……我更熟悉 NoSQL,所以这种关系映射肯定让我停下来。找到这篇文章供任何未来阅读这篇文章的人想要更多信息。这真的很有帮助。 launchschool.com/books/sql_first_edition/read/multi_tables
标签: sql postgresql database-design