如何确定要在数据库中存储的实体

时间:2015-05-07 05:54:19

标签: c# asp.net visual-studio-2013 asp.net-web-api2

我在ASP.net和WebApi上遵循Microsoft的以下教程:

Working With Data Tutorial

在此示例中,创建了两个单独的模型:一个用于作者,一个用于Books。当预订存储在数据库中时,作者ID与其一起存储为导航属性。

我的问题是:为什么我们需要为作者单独的表格。为什么不将作者姓名直接存储在Books表中?如果您有兴趣找到独特的作者,我们总是可以直接从Books表中进行查询。

我想在处理这样的数据时,将这个问题扩展到更通用的方法来决定在单独的表中存储什么。

谢谢。对不起,如果这是一个愚蠢的问题。

2 个答案:

答案 0 :(得分:1)

让我们考虑通过考虑场景来解决它所解决的问题 -

  1. 作者数以千计,数以百万计。那么要找到独特的作者,我们会扫描百万条记录吗? - 不。
  2. 关注点分离 - 用作策略。当我只需要作者信息时,我首先对书籍最不感兴趣。通过使用stategy,我可以制定不同的组合来为具有所需子集的请求提供服务。
  3. 书可以有多位作者 - 不是吗?那么,如果我们有单表,那么什么应该是商店的策略,我们会发现难以形成子集? 在这种情况下,很难建立父子关系。本书可以有作者和作者可以有书:-)。因此,在这种情况下,两个具有查找功能的独立实体肯定会有所帮助。

答案 1 :(得分:0)

我们可以说,将来你想要获得autor银行账户或者为作者出售书籍而制作商店列表等,我们不想在每张桌子上都拿着他的所有。细节(它不仅是他的\她的名字,因为它意味着我们需要维护所有那些桌子并且它使桌子非常沉重。为此我们创建一个表格,其中包含作者的标识符和他的\详细信息

美好的一天:)