如何决定将哪些实体存储在数据库中

How to decide what entities to store in a database

我正在按照 Microsoft 关于 ASP.net 和 WebApi 的以下教程进行操作:

Working With Data Tutorial

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

我的问题是:为什么我们需要一个单独的 table 给作者。为什么不将作者姓名直接存储在 Books table 中?如果您有兴趣找出独特的作者,我们随时可以直接从图书中查询 table。

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

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

比方说,将来您想要获取汽车银行账户或列出作者卖书的商店等,我们不想保留所有 table his\her 的详细信息(这不仅是他的\她的名字,因为这意味着我们需要维护那里的所有 table,这使得 table 非常沉重。为此我们创建了一个 table 带有作者的标识符和 his\her 详细信息。

美好的一天:)

让我们通过场景来思考它解决了什么问题-

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