当前位置: 首页 > 面试题库 >

将数组存储为字段值或将数组值存储为记录是一个好主意吗?

邓英卓
2023-03-14
问题内容

在我的应用程序中,我得到了带有描述性预定义标签的“文章”(类似于帖子/推文/文章):即“困难”,“简单”,“红色”,“蓝色”,“业务”等

这些可用标签存储在一个表中,称为包含所有可用标签的“标签”。

每篇文章都可以使用多个标签进行标记,这些标签可以通过自定义管理界面进行编辑。

可能很容易将每个实体的标签捆绑到每个标签ID的字符串化数组中,并将其与文章记录一起存储在我的“文章”表中:

id | title | author | tags
---+-------+--------+-------------
1  | title | TG     | "[1,4,7,12]"

尽管出于多种原因,我确定这是个坏主意,但是否有合理的理由进行上述操作?


问题答案:

我认为您应该阅读有关数据库规范化的内容并自己决定。简而言之,您的提案存在许多问题,但您可能会决定可以接受。

最明显的是:

  1. 如果将附加标签添加到行(1)怎么办?您是否必须首先解析,检查它是否已经存在,然后将行更新为tags.append(newTag)
  2. 更糟糕的是仍删除标签吗?存在搜索标签,然后重新创建标签。
  3. 如果标签要更改名称怎么办-可能需要进行一些审核?
  4. 再有,更糟糕的是,不同的人以不同的方式指定标签名称怎么办-很难合理化。
  5. 如果要基于标签查询数据怎么办?您的查询变得比需要的复杂得多。
  6. 演示:客户端必须解析标签才能使用它。分隔符字段呢?改变这一点,所有客户都必须改变。

简而言之,所有这些操作变得更加困难和繁琐。规范化旨在克服此类问题。IMO可能做您所说的唯一原因是一次性捕获数据,并且它仅是信息性的-
也就是说,对用户有意义,但对系统本身而言却没有意义。这有点像在说最好避免这种情况(同样,IMO)。



 类似资料:
  • 我有一个Spring boot应用程序,可以连接到AWS上的Redis集群。我正在尝试莴苣,想创建一个,用于将键存储为字符串,而将值存储为字节数组。我尝试使用内置的,但它将键和值都作为字节数组。 我刚接触莴苣,所以我不确定是否需要编写自定义编解码器。如果是,我该怎么写?是否会出现性能问题?还是我走错了路?

  • 问题内容: 在我的应用程序中,我正在解析一个xml文件。在xml文件中,我有50个同名标签,现在我想将所有作为问题命名的标签存储为数组…。 在保存的那些标签中,我只希望在文本视图中放置一个问题标签…。 如何执行此操作.... pls帮助我..... 问题答案:

  • 为了保存数据,我将使用一个SET操作,即: 然后,为了更新数据,我将使用两个操作(GET+SET),即: 选项2:单值多键 我对方案1的赞成/反对意见 备选方案1优点: 更好的数据库组织,因为每个用户只有一个密钥 通过一个GET操作,我将拥有所有JSON数据 要更新所有JSON字段,我将只使用两个操作(GET+SET) 数据库的文件大小将更小 null 如果希望并发修改JSON负载(非原子读取-修

  • 问题内容: 我是Java新手。我如何在HashMap中存储整数值数组,之后我将此HashMap写到txt文件中,但此刻目前不重要。我可以存储单个字段,但不能存储数组。有任何想法吗 ? 问题答案: 例如选一个 要不就

  • 我想将用户对当前语言的选择存储到UserDefaults。用户通过选择器选择他们喜欢的语言。然而,我不知道如何放置代码来更新UserDefaults。 下面是我的代码: 然后在我的模型课上: 和选择语言的用户界面: 我如何从UserDefaults加载所选语言并更新用户?