我应该将数据库图中的哪些字段分离到关系表中?

Which fields in my database diagram should I separate into relation tables?

我正在努力解决这个问题,试图理解在数据库逻辑图中数据是应该分成不同的 table 还是保存在同一个中。

我的数据库分为 3 部分:用户(可以是可以 post、查看或喜欢菜谱的注册用户;以及查看已发布菜谱并可以接受或阻止用户的管理员)、菜谱(包含数据,例如:菜肴名称、类别、难度、持续时间、份数、执行情况、观看次数和状态)和成分。

食谱和配料有很多 : 很多关系,所以我将这两者与一个名为“Recipe_Ingredient”的关系 table 联系起来。

用户与菜谱有一对多的关系(一个用户可以创建多个菜谱,但每个菜谱只能由一个用户创建),但由于收藏夹部分,它们之间也存在 table 连接关系(即一个用户可以收藏多个食谱,每个食谱也可以被许多用户标记为收藏)。

但我的实际问题是:我已经从 table 食谱中分离了一些字段(参见下图以供参考),例如类别、难度和状态。这是 acceptable 还是这些字段最好保留在 table 食谱中?

Photo of what I have so far, for reference

抱歉,您的留言太长了。非常感谢您的帮助!

我认为您拥有的 table 大部分都很好,因为随着数据的增加,您就会看到设计的价值。 如果寻求优化,您可以使用以下一些想法来做出这些决定:

  1. 哪些 table 仅用于设置值永远不会更改的参照完整性?我会认为状态和困难。配方中的值 table like state 应该只显示状态值,因此不需要查找。有时,这些不会更改的值类型最终会以名称-值对 tables(fieldname, fieldvalue, fieldtext) 和前端处理的完整性结束。当然这意味着我在看菜谱的时候table,可以直接看到难度和状态,不用去别处查数值
  2. 如果您必须将其移动到报告或分析中,您是否有足够的描述符供最终用户使用?这可能是保留难度描述的一个很好的理由。