database - 将文本输入数据库的不同选择
问题描述
我正在制作一个图像数据库。每张图片中都有一定数量的中文文字。创建数据库后,我希望能够搜索文本并找到它所附加的图像,反之亦然。
在每幅图像中,最大和页面最高的文本是“主要文本”,其余的是“次要文本”。在一些图像中,离散辅助文本的数量很高(> 10 条)。图像的文本差异很大,因此一张图像与另一张图像具有相同文本的可能性很小。请看一个示例图像(下图),其中有一个主要文本(某词)和三个辅助文本(战略、微笑、容易)。
我的问题是:我的“图像”表中是否应该有两列,第一列是“主要文本”,另一列是“次要文本”,包含图像中的所有其他文本?或者我应该有多列允许 X 数量的离散辅助文本?到目前为止,我认为创建“文本”表并通过关联表将其与图像表连接起来相对没有意义,因为大多数文本都是唯一的。
一个问题:因为我正在查看的图像大部分不使用标点符号,并且汉字之间没有空格,所以将所有“辅助文本”放在一列很容易导致查询混淆。例如,如果我将示例图像中的所有三个辅助文本(微笑、微笑和容易)都连接起来,它就变成了微笑。但是现在变成了一个文本,包含五个字,这可能是一个微笑,笑笑,战略。这会在我的查询中造成混乱。
解决方案
最干净的方法可能是为(至少是次要的)文本创建一个单独的表。如果它们在很大程度上是独一无二的,您可以在没有关联表的情况下执行此操作。
表images
:
ID | image | main text
---+-------+----------
1 | <img> | 某词
表secondary
:
ID | image_id | secondary text
---+----------+---------------
1 | 1 | 战略
2 | 1 | 微笑
3 | 1 | 容易
如果它更适合您的用例,您还可以将所有文本及其类型放入第二个表中:
表images
:
ID | image
---+-------
1 | <img>
表text
:
ID | image_id | text | type
---+----------+------+----------
1 | 1 | 战略 | 2
2 | 1 | 微笑 | 2
3 | 1 | 容易 | 2
4 | 1 | 某词 | 1
推荐阅读
- mysql - pycharm无法连接到Azure中的mysql
- python - 使用 PIL 将 512*256 的图像分成 2 个 256*256 的图像
- python - 如何融化 0 和 1 的数据框并只保留 1
- node.js - 保持活动仅与出站请求有关吗?
- google-sheets - 如何在 ArrayFormula 中使用 COUNTUNIQUE 函数并获得范围结果?
- excel - 从唯一过滤中获取重复结果
- sql - 具有未知列数的简单 SQL Pivot 查询
- android-studio - 取消选中使用 Androidx 工件
- python - 这行“return self.last_block['index'] + 1”是如何工作的?
- excel - VBA从一个单元格逐字匹配另一个单元格中的逐字