Database design 关系数据库设计良好实践:规范化?
我正在开发一个应用程序,它的主要目的是根据用户的偏好和个性推荐其他用户(每个推荐单独处理)。Database design 关系数据库设计良好实践:规范化?,database-design,jsonb,Database Design,Jsonb,我正在开发一个应用程序,它的主要目的是根据用户的偏好和个性推荐其他用户(每个推荐单独处理)。 什么是一个好的实践?要将信息存储在3个单独的表中(users、user\u preferences和user\u details),或者使用一个表users和两个jsonb列?1],考虑到您的事务是OLTP(在线事务处理),您应该计划使用3个单独的表。在使用各种联接检索表数据时,它将使您获得更好的性能。请始终规范化您的架构。首先,需要注意的是,根据您尝试执行的操作,jsonb可能会破坏第一个正常形式。让
什么是一个好的实践?要将信息存储在3个单独的表中(
users
、user\u preferences
和user\u details
),或者使用一个表users
和两个jsonb
列?1],考虑到您的事务是OLTP(在线事务处理),您应该计划使用3个单独的表。在使用各种联接检索表数据时,它将使您获得更好的性能。请始终规范化您的架构。首先,需要注意的是,根据您尝试执行的操作,jsonb可能会破坏第一个正常形式。让我们讨论1NF以及为什么它是一个好主意:
第一范式存在的条件是且仅当:
就性能而言,如果您所做的只是存储首选项和应用程序blob,那么您可能不会看到太大的差异,因此附加功能很重要。请注意,PostgreSQL(不能代表其他数据库)将支持大字段。烤字段在某些情况下会增加额外的开销,但在其他情况下则不会。与连接相比,测量这对查询的影响要困难得多。因此,这是另一个反对它的标志。吐司是一个伟大的技术顺便说一句,但它不是一个免费的午餐。因此,您可能会有相同的性能影响,但透明度要低得多。好的做法取决于您使用的数据库类型。如果您使用的是关系数据库,那么您可以。如果您使用的是NoSQL数据库,则需要创建文档。