新手试图找出为以下用例场景设计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((和数组索引选项等工具,这似乎是一个明智的解决方案,但我很想知道,为了性能和/或存储内存/成本,是否最好坚持规范化关系和更多的表和行计数。
以前有人试过这个吗?
太多人尝试过,这是个坏主意。您的许多查询,特别是联接,将变得复杂而缓慢。此外,您将无法使用外键约束来保证数据的完整性。
关系数据库擅长处理表中数百万行的数据。保持架构规范化。