SQL,定义与目标表的单独关系或通过联接获得



我们正在使用EF和MVC进行CMS项目。我们最近遇到了一个问题,

请考虑以下表:

  • 应用程序
  • 实体
  • productsCategories
  • 产品

关系按以下顺序:

applications => entities => productCategories => product

当我们通过 Id选择产品时,始终应检查是否要求ProductsId是仅对于存储在Applications表中的特定应用程序,这些是用于防止加载其他应用程序产品,什么是获得特定应用程序ID产品的最佳方法,我们有两个选择:

  1. 而不是定义产品和应用程序之间的关系,我们可以与产品类别,实体和应用程序一起找到它=>当我们想获得产品时,我们不想知道实体或其他表格,我们应该加入它访问应用程序

  2. 我们可以在产品和应用程序之间定义单独的关系,并通过简单选择查询

  3. 获取它

哪种是最好的方法,为什么?


Manish首先感谢您的评论,然后请考虑一下,我们的某些表与Entities与CC_4有关这些表没有任何关系这些表我们只是定义了一个关系,除了性能问题外没有额外的工作。还有其他一些表与entites有关系,因此,对于这个定义分离关系的表最后,请考虑一下,实际上,所有的表都应通过单独的关系访问某些"实体",而其他人可以从那里访问父母实际上,对于productsentities之间的关系,我们没有定义单独的关系,因为它没有性能问题,但是对于productsentities之间的关系,我们应该考虑性能问题,因为在每个请求中,我们都应该访问Applications检查请求ID,当前申请那么您的想法是什么?

让我们看一下您的选项

  1. 而不是定义关系,您可以加入三张表以获取正确的产品集:在这种情况下,您不必进行任何数据库更改,无论如何,您将不会全部获取所有数据库连接的表数据,您只会获取您在Linq Select列表中指定的数据。但是随后,当行数在某个时间点很高时,3表连接可能会有所降低。

  2. 您可以定义两个上述表之间的单独关系:在这种情况下,您必须更改数据库结构,这意味着,对实体和实体模型进行更改以及大量测试。毫无疑问,这将意味着简单的代码,易于使用,总是欢迎。

因此,您知道,没有明确的答案,最终取决于您和您的代码环境,您想使用的是,我会去建立应用程序和产品实体之间的单独关系会导致更清洁的代码,努力少一些。正如他们所说的那样,"围绕您的数据结构,而不是围绕的代码"

相关内容

  • 没有找到相关文章

最新更新