gpt4 book ai didi

database - 类型表和软件硬编码值

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:15 25 4
gpt4 key购买 nike

我有这个数据库模型:

DB model

(TEXT 实际上是 VARCHAR)

entity_group_type 在运行时不可修改,但在不久的将来会被开发团队多次修改以添加更多条目。

现在我需要从 entity 中检索属于给定 entity_group_type 的所有条目。软件应如何处理此类查询?我应该在软件中硬编码 entity_group_type _id/name 吗?如果是这样,那我为什么还需要这张 table 呢?硬编码 _idname 哪个更好?

或者这是构建我的数据的错误方式吗?

提前致谢!

最佳答案

一次回答一个问题:

在软件中应该如何引用实体组?硬编码 ID 或名称?

以一种使您的代码最具可读性的方式引用实体组。因此,也许您使用名称,或者可能使用看起来像名称但其值为 id 的常量。当您按组类型查找实体时,使用常量可以避免一次连接,但这通常不是什么大问题。

为什么我什至需要数据库中的那个表?这是构建我的数据的错误方式吗?

这是一种完全可以接受的数据结构方式。最正确的方法取决于您对数据的处理方式,但对于大多数应用程序而言,您的结构是正确的。但是,您肯定不需要数据库中的那个表——您可以在 entity_group 表上有一个“group_type”字段。以下是优点和缺点:

当前结构的优点:

  • 易于添加描述 entity_group_type 的字段。例如,您可能想让某些组类型只能由管理员用户查看,或禁用,或其他。如果这在未来是可能的,那么它非常需要这种数据库结构。
  • 能够让您的数据库软件强制执行参照完整性,这意味着数据在 entity_group 和 entity_group_type 表之间保持一致。

在entity_group表上增加group_type字段的好处:

  • 可能是您代码中更简单的表示。例如,如果您使用 MVC 架构,拥有额外的表可能需要在您的代码中使用另一个模型对象。这通常不是问题,并且可能有优势,但有时越简单越好。
  • 当您按实体组类型查找实体时,您的 SQL 语句会稍微简单一些,因为涉及的表/连接会少一些。

我认为在大多数情况下,您当前的结构会提前出现,尽管这确实取决于您如何使用数据。除非您有充分的理由以不同的方式构建数据,否则我会坚持使用您当前的结构。

关于database - 类型表和软件硬编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com