你好,我正在为saas设计一个数据库。每个公司都会有大量的查询。我在两路之间犹豫不决。
第一种方法:复制的id,每个表都有一个用于公司id的FK,而select will包含一个简单的行位置。
第二种方法:使用内部连接,每个查询都会有一些内部连接,以获得用户的公司id。
请注意,有些表需要5或6个联接才能到达公司。
我正在寻找最好的选择,在安全性,清洁的设计,和良好的性能。
编辑:添加了一些例子,因为我没有那么清楚。
不多2多关系表简化
Company <- Contract <- Folder <- Document <- Note
``
Each table point to its parent. If I want all company's documents, or all company's notes, I need to make multiple join if I do not duplicate de company id in all table I must make multiple joins to accomplish this select.
发布于 2021-03-05 04:16:49
规范化的一个原因是将表巧妙地解耦成多个相关列的表,以便在给定的时间只查询所需的列集,以最大限度地提高性能。如果CompanyId
是大多数查询中的标准,那么从性能角度来看,将其保留在所有相关表中并不是个坏主意,这样您就不必将多个无关的表连接到查询中,从而获得Customer
。但是从维护的角度来看,在多个表中插入相同的值也需要更多的工作。因此,这是一种基于系统表数的性能和可维护性之间的权衡。
https://dba.stackexchange.com/questions/286468
复制相似问题