Postgres数据库设计规范化表或使用数组列



新手试图找出为以下用例场景设计Postgres数据库的最佳方法。

有一个业务客户的Account表,还有一个具有列关系的contacts表。

account.pk_id…。

contacts.pk_id,contacts.fk_accountid…

"帐户"表中的数千个不同企业将在"联系人"表中存储数百万个联系人。

随着时间的推移,每个联系人记录将属于1到100个不同的类别、列表和产品。

如果我使用经典的sql主/子关系,我可能会在表中有数百万行,如contacts_categories、contacts_lists和contacts_products,这些表将引用categories、lists&产品表。

或者,我可以将类别、列表和产品的相关密钥(uuid(存储在联系人记录行的3个字符可变数组[]列中。这将消除对contacts_categories、contacts_lists和contacts_products表的需求,这些表将非常大。

使用Selectunest、array_append((和数组索引选项等工具,这似乎是一个明智的解决方案,但我很想知道,为了性能和/或存储内存/成本,是否最好坚持规范化关系和更多的表和行计数。

以前有人试过这个吗?

太多人尝试过,这是个坏主意。您的许多查询,特别是联接,将变得复杂而缓慢。此外,您将无法使用外键约束来保证数据的完整性。

关系数据库擅长处理表中数百万行的数据。保持架构规范化。

相关内容

最新更新