新手试图找出为以下用例场景设计 Postgres 数据库的最佳方法。
有一个用于业务客户的 Account 表,并且有一个具有列关系的联系人表。
帐户.pk_id,...。
contacts.pk_id,contacts.fk_accountid ...</p>
Accounts 表中的数千个不同的企业将在 Contacts 表中存储数百万个联系人。
随着时间的推移,每个联系人记录将属于 1 到 100 个不同的类别、列表和产品。
如果我使用经典的 sql 主/子关系,我最终可能会在诸如contacts_categories、contacts_lists 和contacts_products 等表中获得数百万行,这些行将从类别、列表和产品表中引用。
或者,我可以将类别、列表和产品的相关键 (uuid) 存储在联系人记录行中的 3 个字符变化数组 [] 列中。这将消除对相当大的contacts_categories、contacts_lists 和contacts_products 表的需求。
使用 Select unnest、array_append() 和数组索引选项等工具,它似乎是一个聪明的解决方案,但我很想知道坚持规范化关系以及更多表和行数是否更好,以提高性能和/或存储内存/成本。
以前有人试过吗?